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

2021年6月11日 星期五

s1071536 影像處理作業7

    一、作業說明 

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


二、作業環境

    Windows 10
    Python 3.7.10
    opencv 4.2.0

三、實作方法

Way1
1.讀入圖片
2.將圖片轉成灰階
3.用較大的Kernal對灰階圖做Erosion
4.用較小的Kernal對灰階圖做Erosion
5.對灰階圖做Dilation
6.使用cv2.findContours尋找輪廓,並利用找到的輪廓數作為預測的棋數

Way2
1.讀入圖片
2.將圖片轉成灰階
3.對原圖做cv2.HoughCircles並將中心點用黑色覆蓋在灰階圖上
4.用較大的Kernal對灰階圖做Erosion
5.用較小的Kernal對灰階圖做Erosion
6.對灰階圖做Dilation
7.在灰階圖上畫上cv2.HoughCircles的結果
8.使用cv2.findContours尋找輪廓,並利用找到的輪廓數作為預測的棋數

四、執行結果

 左圖為Way1,右圖為Way2
 HoughCircles只出現在Way2中,故只有一張圖

Predict Result
Way1 vs Way2

Original Image
output_IMG_5702.JPG

HoughCircles
Additional step in Way2

Erosion
*Way2: original image(gray) - houghcircles -> erosion

Dilation
*Way2: (previous step result -> dilation) + houghcircles

Contours

Original Image
output_IMG_5703.JPG

HoughCircles
Additional step in Way2

Erosion
*Way2: original image(gray) - houghcircles -> erosion

Dilation
*Way2: (previous  step result -> dilation) + houghcircles

Contours

Original Image
output_IMG_5704.JPG

HoughCircles
Additional step in Way2

Erosion
*Way2: original image(gray) - houghcircles -> erosion

Dilation
*Way2: (previous step result -> dilation) + houghcircles 

Contours




2021年6月7日 星期一

s1071536 影像處理作業8

一、作業說明 

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


二、作業環境

    Windows 10
    Python 3.7.10
    opencv 4.2.0

三、執行結果
原圖


結果圖

2021年6月5日 星期六

s1071536 影像處理作業6

   一、作業說明 

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

請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)


二、作業環境

    Windows 10
    Python 3.7.10
    opencv 4.2.0
    imagehash 4.2.0

三、實作方法

Compress
1.讀入圖片(.bmp)
2.將圖片的BGR三個channel分離(2D Array)
3.將各自channel資料flatten後(2D->1D)再合併成1D Array
4.使用RLE壓縮演算法將1D資料壓縮並寫入bin file中

Decompress
1.讀入壓縮檔案(.bin)
2.逆著RLE壓縮演算法的步驟得到壓縮前1D的資料
3.將1D資料分成BGR channel(1D Array)
4.將RGB channl各自資料reshape成2D後再merge成3D
5.輸出圖片

Verification
1.讀入原本的圖片以及解壓縮後的圖片
2.使用imagehash 對圖片hash,並比較之間的差異

四、執行結果

Average compression ratio = (6.642+4.041+6.967)/3 = 5.883

img1.bmp_compression ratio: 6.642

img2.bmp_compression ratio: 4.041

img3.bmp_compression ratio: 6.967

2021年5月17日 星期一

s1071536 影像處理作業5

   一、作業說明 

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


二、作業環境

    Windows 10
    Python 3.7.10
    opencv 3.4.2

三、實作方法

1.將raw檔讀入(header、data)
2.找到data中的max和min值,並將所有值為-99999.0改為min值
3.以min和max值為上下限將data比例縮放到0~255中
4.將data轉uint8並儲存照片

四、執行結果

02.raw

08.raw

10.raw

2021年5月16日 星期日

s1071536 影像處理作業4

  一、作業說明 

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


二、作業環境

    Windows 10
    Python 3.7.10
    opencv 3.4.2

三、實作方法

1.使用CV2.imread讀入圖片
2.將圖片(BGR)轉成HSV和YCrCb
3.在HSV中制訂膚色範圍,並將圖片以制訂的膚色範圍進行二值化,接著對二值化後的圖做medianBlur得到blur_hsv_mask
4.利用Human Skin Detection Using RGB, HSV and YCbCr ColorModels提到的Proposed Skin Detection Algorithm對圖片進行二值化取得PSD_mask
5.blur_hsv_mask & PSD_mask得到skin_mask
6.以skin_mask在原圖上標示皮膚以及過濾原圖

四、執行結果
input

blur_hsv_mask

PSD_mask

skin_mask

output(標記皮膚)

output(過濾皮膚)

input2

output2

input3

output3

input4

output4

input5

output5
圖片來源:


2021年5月1日 星期六

s1071536 影像處理作業3

 一、作業說明 

請撰寫一個程式,讀取一張 256 色灰階圖像。 
(1)計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階 256 色圖像 方式呈現出。
(2)對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。(程式利用課本的 frequency filter 步驟者可得滿分!)

二、作業環境

    Windows 10
    Python 3.7.10
    opencv 3.4.2
    numpy 1.19.5
    matplotlib 3.3.4


三、實作方法

1.使用imread將圖片以灰階方式讀入
2.使用zero padding將圖片補到2M*2N大小(M:圖高,N:圖寬),並讓圖片靠左上
3.multiplying f(u,v) by (-1)^(x+y)
4.使用傅立葉轉換將圖轉成頻域(np.fft.fft2()) -> F(u,v)
5.取得頻譜圖及相位圖(np.angle())
6.建立GaussLowpassFilter(D0 = 100) -> H(u,v)
7.將H(u,v)、F(u,v)相乘取得過濾後的頻譜(G(u,v) = H(u,v) * F(u,v))
8.使用逆傅立葉轉換將資料轉換回spatial domain(np.fft.ifftshift())
9.multiplying real part by (-1)^(x+y)
10.Extracting後得到結果(刪掉padding的資料)

四、執行結果
Padding Image
Spectrum
Phase
H(u,v), D0 = 100
H(u,v) × F(u,v)
The Real part of IDFT of HF, multipled by (-1)^(x+y)
Result
Compare


圖片來源:


2021年3月23日 星期二

s1071536 影像處理作業2

 一、作業說明 

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

二、作業環境

    Windows 10
    Python 3.7.10
    OpenCV 3.4.2

三、實作方法

1.使用imread將圖片以灰階方式讀入
2.對原圖使用Sobal函式並分別取得x軸方向梯度與y軸方向梯度的圖
3.將兩種不同的梯度圖結合(各自權重為0.5)
4.使用cv2.threshold函式對結合後的圖二值化
   (門檻值為80,最大灰階值為255,二值化類型為cv2.THRESH_BINARY_INV)
5.將圖片儲存並輸出

四、執行結果

input


output


















圖片來源: