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

2021年6月13日 星期日

s1061402 影像處理作業7

 

s1061402 影像處理作業7

1.      作業內容說明

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

2.      開發環境

Windows10

Visual Studio 2017 c++

Opencv4.5.1 vc15

3.      操作方式

在code內輸入三張圖片的路徑並執行,執行完會cout預測數量以及處理過後的圖。

4.      程式說明

把圖片轉成黑白後進行二值化並且把每個點用255減掉得到反白後的二值化圖。

再來先用dilate()將圖中的細小黑點去除以免影響下一步erode()後得到的圖形。

最後用findcontours()找到數量。

5.      執行結果

預測結果

IMG_5072膨脹侵蝕後結果
預測22(實際24)

IMG_5073膨脹侵蝕後結果
預測26(實際31)

IMG_5074膨脹侵蝕後結果
預測31(實際31)


2021年6月7日 星期一

s1061402 影像處理作業8

作業說明

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


執行結果:


s1061402 影像處理作業6

 

s1061402 林廷瑜 影像處理作業6

1.      作業內容說明

利用run-length方式壓縮bmp檔

2.      開發環境

Windows10

Visual Studio 2017 c++

Opencv4.5.1 vc15

3.      操作方式

在code內輸入三張圖片的路徑並執行便輸出壓縮後的檔案(副檔名為123)

4.      程式說明

首先使用split將rgb三個channel分開,把這三個channel的data取出,並且將裡面的值用run-length的方式進行整理並放入壓縮檔





2021年5月16日 星期日

s1061402 影像處理作業4

 

s1061402 林廷瑜 影像處理作業4

1.      作業內容說明

輸入圖片路徑後利用所學的顏色知識及技術將圖片內的皮膚區域找出並偵測。

2.      開發環境

Windows10

Visual Studio 2017 c++

Opencv4.5.1 vc15

3.      操作方式

輸入圖片的路徑及名稱,便會出現一張原圖以及把非膚色的部分塗黑的結果圖。

4.      程式說明

除了輸入的圖片在建立三個Mat,分別為輸出結果result、負責擋住非膚色區域的mask,以及負責轉成YCrCb的temp。

首先用cvtColor()將temp成為原圖的YCrCb數值,再將要的CrCb數值用at取出,再用迴圈將每一個位置一一判斷是否符合設定的範圍,不符合就將mask那個位置給塗黑,最後把原圖跟mask用copyTo()結合到result。

5.      執行結果

 範例1原圖


將Cr介於140到175

將Cr介於143到175

從上兩張可以看到如果為了減少非膚色區域容易導致其他膚色區域判斷失準

(像是把沙灘的部分減少會讓黑人的膚色判斷容易失敗)

範例2原圖


範例2結果

光線、皺紋......等都容易影響輸出結果


2021年5月2日 星期日

s1061402 影像處理作業3

s1061402 林廷瑜 影像處理作業3

1.      作業內容說明

輸入圖片路徑後將圖片轉為黑白後

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

(2)   對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。

2.      開發環境

Windows10

Visual Studio 2017 c++

Opencv4.5.1 vc15

3.      操作方式

按照上面指示輸入圖片的路徑及名稱,之後會輸出四張圖,分別是轉成灰階圖的原圖片、傅立葉轉換後的頻譜圖、相位角圖、以及高斯模糊後的圖片。

4.      程式說明

首先使用cvtColor()搭配COLOR_BGR2GRAY將圖片轉成黑白的。

(1)   使用進行傅立葉轉換,之後使用split()把轉換後的實數及虛數部分分開儲存並且用magnitude()取出頻譜以及phase()取出相位角,再來使用copyTo()來調整圖片取出的頻譜及相位角中心點位置。

(2)   使用GaussianBlur()將圖片進行模糊

5.      程式結果

原圖

頻譜圖

相位角圖

高斯模糊後








2021年3月26日 星期五

s1061402 影像處理作業2

s1061402 林廷瑜 影像處理作業2

1.      作業內容說明

輸入圖片路徑後將圖片轉為黑白後用sobel找出邊緣的部分,然後再將圖片反白並將其二值化,得到的類似素描圖輸出在畫面上

2.      開發環境

Windows10

Visual Studio 2017 c++

Opencv4.5.1 vc15

3.      操作方式

按照上面指示輸入圖片的路徑及名稱,之後會將每個步驟的圖片都輸出。

4.      程式說明

首先使用cvtColor()搭配COLOR_BGR2GRAY將圖片轉成黑白的,之後再用sobel將x方向跟y方向的edge找出來,並使用addWeighted相加,相加完得到的所有edge的圖被255減來反白,為了把一些多餘的edge消除掉再使用threshold將其二值化,把得到的結果輸出到銀幕上。

5.      程式結果

原圖


使用cvtColor轉成黑白


sobelx方向


sobely方向


將上面兩圖相加


反白


二值化來讓圖片更像素描






2021年3月1日 星期一

s1061402 影像處理作業1

1.      作業內容說明

輸入圖片路徑及要修改的v值,將圖片轉化過後輸出在畫面上

2.      開發環境

Windows10

Visual Studio 2017 c++

Opencv4.5.1 vc15

3.      操作方式

按照上面指示輸入圖片的路徑及名稱,接下來再輸入要修改多少RGB的value來改變明暗度,輸入完成便輸出結果圖片。

4.      程式說明

首先先輸入一串string來給imread讀取該檔案,接下來輸入完v之後先建立一個uchar的pointer來讀取原圖片的RBG來修改,修改時使用saturate_cast來避免修改後的RGB值溢出,最後使用imshow搭配waitKey來顯示圖片。

5.      程式結果

   v =  0  (原圖)
v = -100
v = 100