顯示具有 s1073344 標籤的文章。 顯示所有文章
顯示具有 s1073344 標籤的文章。 顯示所有文章

2021年6月13日 星期日

s1073344影像處理作業7

作業說明

請撰寫一個程式,利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。

作業環境

Windows 10

anaconda

python 3.8.5

OpenCV 4.5.1

實作方法

1.讀入灰階圖像

2.用GaussianBlur()消除雜訊

3.作數次erode()來分離棋子

4.用findContours()計算棋子數

實作結果

5702結果

5703結果


5704結果




2021年6月6日 星期日

s1073344 影像處理作業6

作業說明

請設計一個基於Run-Length的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案

作業環境

Windows 10

anaconda

python 3.8.5

OpenCV 4.5.1

實作方法

壓縮

1. 讀入彩色圖片後用split()把RGB分開

2. 將二維的RGB用flatten()轉為一維

3. 在一維的RGB後加上圖片大小的資料後,用RLE演算法做壓縮,得到三個陣列

4.將三個陣列以savez()壓縮成 .npz檔

解壓縮

1.用load()讀入 .npz檔

2.對RGB做RLE解壓縮得到三個一維資料

3.將一維資料後的圖片大小移除後,用reshape()還原成二維

4.用merge()將二維RGB合併成三維彩色圖檔

結果

壓縮前與壓縮後:

第一張:

第二張:

第三張:

壓縮率:
第一張圖壓縮率為:8337/14322=58.2%
第二張圖壓縮率為:13902/14322=97.0%
第三張圖壓縮率為:7963/14322=55.5%
平均壓縮率為70.2%











2021年5月17日 星期一

s1073344影像處理作業5

作業說明

利用所學的Color顏色的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。

作業環境

Windows 10

anaconda

python 3.8.5

OpenCV 4.5.1

實作方法

1. 用fromfile讀入header和圖片資料

2. 將深度資訊乘以128,並將超過255的數值設為255,同時將遺失資料設為0,存入矩陣

3. 將矩陣轉為uint8並輸出


結果:








2021年5月16日 星期日

s1073344影像處理作業4

作業說明

利用所學的Color顏色的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。

作業環境

Windows 10

anaconda

python 3.8.5

OpenCV 4.5.1

實作方法

我嘗試了兩個方法,分別是以HSV及YCRCB做判斷

HSV:

  • 使用cvtColor將圖片轉為HSV color space
  • 將圖片利用cv2.split分為H、S、V三個通道
  • 對H、S、V通道進行膚色偵測,判斷膚色範圍,將範圍7<H<20、28<H<255、50<V<255外的顏色設為黑色
YCrCb:
  • 使用cvtColor將圖片轉為YCrCb color space
  • 將圖片利用cv2.split分為y、cr、cb三個通道
  • 對cr通道進行膚色偵測,判斷膚色範圍,將範圍140<Cr<175、100<Cb<120外的顏色設為黑色


兩種方法的第一張圖中,沙灘的顏色都有挺大片被判斷為膚色,但是衣物的顏色大多都有被去除
而第二張圖的結果,YCRCB的結果比HSV較好,頭髮大多都有被去除,YCRCB中間下面的背景也有被去除(HSV的則被保留)



2021年5月2日 星期日

s1073344 影像處理作業3

 作業說明

請撰寫一個程式,讀取一張 256 色灰階圖像。

(1)計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階   256 色圖像 方式呈現出。

(2)對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。(程式利用課本的 frequency filter 步驟者可得滿分!)


作業環境

Windows 10

anaconda

python 3.8.5

OpenCV 4.5.1

實作方法

1.使用np.fft.fft2()進行dft轉換

2.np.fft.fftshift()與np.log()調整來得到頻譜

3.用np.angle()來取得相位角度

4.設定mask並做Gaussian Low-Pass filter 處理取得平滑圖像

執行結果

原圖

頻譜及相位角度

平滑後




2021年3月25日 星期四

s1073344影像處理作業2

 作業說明

撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可, 如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基 礎,設計一個類似素描線條自畫像程式。


作業環境

Windows 10

anaconda

python 3.8.5

OpenCV 4.5.1

實作方法

1.以灰階影像讀入圖片
2.使用Sobel函式分別針對X軸方向與Y軸方向抓取邊緣
3.將個別抓出的結果結合為一張圖,X、Y軸的權重皆為0.5
4.將一定亮度(75)以上的像素設為0,其餘設為255,同時完成負片及二極化
5.以Spatial Correlation來將線條變得更清晰
6.將一定亮度60為標準,再次二極化
7.用 imshow 顯示所有圖片

執行結果
原圖:

灰階:

X軸(absX)、Y軸(absY)、合併(Result):


負片(reverse)、空間關聯(reverseP)、二極化(reverseC):







2021年3月7日 星期日

s1073344影像處理作業1

作業說明:

撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。

開發環境:

Windows 10

anaconda

python 3.8.5

OpenCV 4.5.1

程式說明:

1. 載入 cv2 函式庫

2. 用 imread 載入 pic1.jpg

3. 將每個 pixel 的 各個 RGB 的值加上 100,用np.clip()來確保其值在255之下

4. 將每個 pixel 的 各個 RGB 的值減掉 100,用np.clip()來確保其值在0之上

5. 用 imwrite 將圖片分別輸出為 "bright_img.jpg" 和"dark_img.jpg"

6. 用 imshow 顯示三張圖片

輸出結果:

pic1.jpg:











bright_img.jpg:












dark_img.jpg: