作業說明:
請寫一個程式將附圖二值化後輸出黑白圖像。目的是將文字與背景分離。
1. 作業說明:
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
2.
作業環境、語言:
l Python3.9
l OpenCV4.5.1
l Windows10
l Visual Studio Code
3.
實作過程:
RLE壓縮:
(1)
先讀入bmp圖檔,先read head出來並且使用struct.unpack得到長、寬
(2)
將剩餘的data read出來,用np.reshape成numpy格式
(3)
接著對r、g、b三個通道分別進行RLE的壓縮,將資料放進對應的list中
(4)
將三個list以及長寬在append新的list,寫成1504的格式檔案
RLE解壓縮:
(1)
將1504的檔案讀入
(2)
取出前面的長寬,並且用設計RLE的方式,反過來取回原本的RGB資料
(3)
創建出一個空白的np 2D array,再把RGB值填入
(4) 圖片以1504.bmp重新輸出
解壓縮還原的bmp檔案
解壓縮還原後的bmp檔
Img2.1504.bmp(解壓縮後)
解壓縮還原後的bmp檔
Img3.1504.bmp(解壓縮後)
平均壓縮率:(2.45+1.42+2.67)/3=2.18
1. 作業說明:
附件中的讀.row晶片設計的高度檔案,設計人員無法直接看到相關資訊。利用你所學的Color顏色的知識與處理技術,撰寫一個程式來讀取附件中的讀.row 檔案,將高度資料以圖片(顏色)視覺化呈現出來,讓設計人員可以看到高度相關資訊。
2.
作業環境、語言:
l Python3.9
l OpenCV4.5.1
l Windows10
l Visual Studio Code
3.實作過程:
(1)
讀進.raw檔使用二元檔的方式
(2)
讀出前面32bytes的header,使用struct.unpack取出width, height, channel。
(3)
剩下的每4個bytes為一個pixel的高度資訊,用struct.unpack切成float的格式
(4)
再來要reshape成(width, height, channel)
(5)
將invalid value -99999處理掉並找出invalid value外的最大值以及最小值,再將invalid value換成最小值
(6)
下一步要將所有的高度值scale到0~255成為圖片
(7)
最後使用ColorMap_Jet對應值填色
1.
作業說明:
利用你所學的Color顏色的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。
2.
作業環境、語言:
l Python3.9
l OpenCV4.5.1
l Windows10
l Visual Studio Code
3.實作過程:
(1) 使用imread讀取原本的RGB圖片
(2) 使用cv2.cvtColor( ) 轉成YCbCr圖片
(3) 再用兩個for loop取出圖片的每個pixel值作YCrCb以及RGB的運算,將Cr、Cb、Y設定範圍
(4) 在這些範圍中的pixel填上白色,範圍以外的填上黑色
(5) 最後再用plt.imshow()輸出圖片
1.
作業說明:
請撰寫一個程式,讀取一張256
色灰階圖像。
(1) 計算輸入圖的離散傅立葉轉換結果並將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出。
(2) 對圖像利用 Gaussian Low Pass filter 處理,輸出平滑後圖像。
2.
作業環境、語言:
l Python3.9
l OpenCV4.5.1
l Windows10
l Visual Studio Code
3.
實作過程:
(1)
使用imread讀取原本的RGB圖片
(2)
將圖片轉為灰階
(3)
使用np.fft.fft2()進行二維的傅立葉轉換
(4)
使用np.fft.fftshift()將頻譜移到中心點
(5)
使用np.abs()先取絕對值,在用np.log()將資料變化到較小的範圍得到我們的頻譜圖
(6)
使用np.angel()得到相位圖
(7)
利用cv2.GaussianBlur()將原圖濾波,以得到平滑圖
原圖:
1.
作業說明:
撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可, 如全彩圖像可先將圖片由
RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基礎,設計一個類似素描線條自畫像程式。
2.
作業環境、語言:
l Python3.9
l OpenCV4.5.1
l Windows10
l Visual Studio Code
3. 實作過程:
(1) 使用imread讀取原本的RGB圖片
(2) 將圖片轉為灰階
(3) 使用sobel函式,抓出X軸與Y軸的邊緣
(4) 把兩個抓到的圖片以0.5作條配合成
(5) 用255把每個像素值扣掉做黑白反轉的動作
(6) 再利用threshold函式做黑白二值化(門檻190)
(7) 使用imwrite把最終結果存起來
原圖
灰階圖
X軸邊緣
Y軸邊緣
XY軸合成且反白
二值化後輸出