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

2019年6月6日 星期四

1041542 作業5

一、作業要求:

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

二、環境配置:

windows 10
visual studio 2013
opencv 3.4

三、實作方式:

先以IMREAD_GRAYSCALE讀入灰階圖,將讀入的灰階圖以threshold()進行二值化,一開始進行一般的erode()與dilate()發現在圖二的效果並不好,應該是受圖二棋子上的反光影響,將反光也判斷成棋子邊緣,導致多算出很多棋子,經過多次開運算與閉運算交錯實驗之後發現先以morphologyEx()內的MORPH_OPEN進行開運算後再進行dilate()可以將反光的邊緣補上,精準度也因此提高了不少,最後以findContours()找出邊緣,進而輸出辨識到的邊緣數量。

四、實作結果:

下面三圖為將作業圖片進行上述操作之後的結果。
圖一:















                  圖一:正確24 輸出:20
圖二:















                  圖二:正確31 輸出:34
圖三:















                   圖三正確31 輸出:31
棋子數量結果:








2019年5月15日 星期三

1041542 作業4

一、題目:

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

二、環境:

  visual studio 2013
  opencv 3.4.2

三、方法:

  HSV:
    1.讀入圖片
    2.將讀入的圖片以cvtColor()裡的BGR2HSV轉換成hsv
    3.使用inRange()將設定好範圍的皮膚顏色設定成白,非皮膚顏色的範圍設定為黑
    4.將二值化後的圖片輸出
  YCbCr:
    將上述方法中的BGR2HSV改成COLOR_BGR2YCrCb,其他操作與上述相同

四、結果:

原圖:














轉換為HSV的二值化圖:














轉換為YCbCr的二值化圖:

2019年5月14日 星期二

1041542 作業3

一、題目:

  請撰寫一個程式,讀取張 256 色灰階圖像,計算輸入圖的傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。

二、環境:

  visual studio 2013
  opencv 3.4.2

三、方法:

  頻譜:
    1.將圖像擴展到最佳尺寸
    2.分配空間給傅立葉變換的結果
    3.進行傅立葉轉換
    4.分離複數為幅度
    5.將新添加的像素剔除
    6.將幅度歸一化到可顯示範圍並輸出
  相位角度:
    將上述方法中的幅度函式改成相位函式,其他方法同上。

四、結果:

原圖:

















幅度:

















相位:

2019年4月3日 星期三

1041542 作業二

一、環境

visual studio 2013
opencv 3.4.2

二、實作方法

使用imread內的CV_LOAD_IMAGE_GRAYSCALE將圖片以灰階的方式讀入後,先以GaussianBlur函式將圖片平滑化來去除雜訊,再以Sobel函式取得影像梯度來偵測邊緣,最後用addWeighted來合併並輸出最終結果,也就是看起來為素描線條的圖。

三、結果

原圖:
















灰階圖:
















結果:

2019年3月19日 星期二

1041542 作業1

一、 環境:
visual studio 2013
opencv 3.4.2

二、執行結果:
一開始先讀入一張圖片
      

console介面顯示按下右鍵增加亮度,左鍵降低亮度以及按下Esc結束程式。
以下分別是按一次右鍵及兩次右鍵的結果:


























及按一次左鍵及兩次左鍵的結果:


























最後按Esc結束程式並儲存圖片。
三、實作方法:
在while loop中以waitKey(0)暫停程式並接收使用者輸入的值,接收到右鍵的值時增加每個像素的值,接收到左鍵時則相反,最後接收到Esc時結束迴圈並儲存最新的圖片。