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

2021年6月11日 星期五

1073315 影像處理作業 7

 作業內容:

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

a.     請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖。

b.     程式不一定可以算出正確棋子數量,越接近正確答案越好!

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1

 

程式說明:

1.          使用cv2.imread() 讀取圖片,並用cv2.cvtColor() 轉為灰階。

2.          利用cv2.GaussianBlur降噪再用cv2.threshold()進行二值化,閾值設為100,超過的      設為255,並反轉。

3.          利用cv2.getStructuringElement(),把kernel設為(250250)

4.          使用cv2.erode() cv2.dilate(),先侵蝕再膨脹。

5.          最後用cv2.findContours() 找出棋子數目,並且用cv2.drawContours()畫出輪廓。


處理結果:

 

IMG_5702.jpg


IMG_5703.jpg

 

IMG_5704.jpg

預測圍棋數目



2021年6月7日 星期一

s1073315 影像處理作業 8

作業內容:

             請寫一個程式將附圖二值化後輸出黑白圖像。
             目的是將文字與背景分離
 

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1 


處理結果:



2021年6月6日 星期日

s1073315 影像處理作業 6

 作業內容:

附件中為三張利用將高度以色彩視覺化後的圖片。

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

部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)

 

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1

 

程式說明:

        Encode

1.          讀取.bmp

2.          分別處理每個通道的數值,並分別儲存

3.          Height, Width, Channels等資訊做為Header輸出

4.          將各個通道的資料個別輸出一行寫入.3315

Decode

1.          讀取.3315

2.          先讀取Header

3.          根據Header的資訊逐行讀取每個通道的資料

4.          根據Header的資訊還原成Height * Width的圖片

5.          輸出成.bmp

Compression ratio

1.       img1.bmp 7.69/13.9*100%     = 55.32%

2.       img2.bmp 13.1/13.9*100%     = 94.24%

3.       img3.bmp 7.14/13.9*100%     = 51.36%

4.       平均66.97%

 

 

 


處理結果:

 

Img1.bmp壓縮前後對比





Img2.bmp壓縮前後對比




Img3.bmp壓縮前後對比


2021年5月23日 星期日

s1073315 影像處理作業 5

作業內容:

附件中的讀.row晶片設計的高度檔案,設計人員無法直接看到相關資訊。利用你所學的Color顏色的知識與處理技術,撰寫一個程式來讀取附件中的讀.row 檔案,將高度資料以圖片(顏色)視覺化呈現出來,讓設計人員可以看到高度相關資訊。

 

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1

 

程式說明:

1.          使用struct.unpack() binary檔案的讀取,分別切開headerdata

2.          使用min() max() 找出大於-99999的最小與最大值

3.          使用np.interp() 將資料線性插值為0~1

4.          使用np.reshape()data排成影像的格式

5.          使用matplotlib設定cmap = rainbow ‘ 並輸出結果

 

處理結果:








2021年5月17日 星期一

s10733315 影像處理作業 5

 作業內容:

附件中的讀.row晶片設計的高度檔案,設計人員無法直接看到相關資訊。利用你所學的Color顏色的知識與處理技術,撰寫一個程式來讀取附件中的讀.row 檔案,將高度資料以圖片(顏色)視覺化呈現出來,讓設計人員可以看到高度相關資訊。

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1

 

程式說明:

1.          讀取raw檔並切開header跟data

2.          找出最大最小值並補上缺失值

3.          利用 np.interp 將data插值為 0 ~ +1

4.          利用 np.reshape 將data轉成圖片

5.          使用 pyplot 印出

 

處理結果:

 








2021年5月16日 星期日

s1073315 影像處理作業 4

 作業內容:

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

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1

 

程式說明:

1.          使用Python import OpenCV

2.          img.shape取出圖片的長寬及通道

3.          利用cv2.cvtColor()及參數cv2. COLOR_BGR2YCR_CB將圖片轉YCbCr

參數cv2.COLOR_BGR2RGB將圖片轉RGB

4.          透過同時判斷RGB的閥值以及YCbCr的閥值,判定像素點是否為膚色,並將不是膚色的點設為黑色 (0, 0, 0)

5.          使用 pyplot 印出

 

處理結果:

 

原圖:


執行結果:

2021年5月2日 星期日

s1073315 影像處理作業 3

 作業內容:

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

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

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

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1

 

程式說明:

1.          使用Python import OpenCV

2.          使用cv2.imrea()d讀取圖片存入img

3.          利用cv2.cvtColor()及參數cv2.COLOR_BGR2GRAY將圖片轉灰階

4.          利用 cv2.dft() 進行傅立葉轉換

5.          透過 np.fft.fftshift() 將頻譜低頻從左上角移動到中心位置

6.          使用 cv2.magnitude() 取得頻譜、cv2.phase() 取得相位角

7.          使用 cv2.GaussianBlur 對圖片進行平滑處理

8.          使用 pyplot 印出

 

處理結果:

 

原圖:


頻譜:



相位角:

模糊後圖像:





2021年3月28日 星期日

s1073315 影像處理作業 2


作業內容:

撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp .jpg 圖像格式都可,如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基礎,設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成線條方式呈現更佳!)

 

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1

 

程式說明:

1.          使用Python import OpenCV

2.          使用cv2.imread讀取圖片存入img

3.          利用cv2.cvtColor及參數cv2.COLOR_BGR2GRAY將圖片轉灰階

4.          利用cv2.GaussianBlur讓圖片更平滑以減少噪點

5.          XY兩個方向上用cv2.Sobel做處理,並用cv2.convertScaleAbs進行編碼的轉換

6.          最後用cv2.addWeightedXY的結果合併

7.          進行黑白轉換並用cv2.imshow印出

 

處理結果:

 

原圖:



轉為灰階:


 

X軸及Y軸的處理結果:



 


合併後進行黑白反轉: