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

2019年6月5日 星期三

1053342 的 作業5


一、作業要求

請撰寫一個程式,利用數學型態學影像處理運算,計算出所附圖像(共三張)每張圖像中圍棋個數。
a. 請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖。
b. 程式不一定可以算出正確棋子數量,越接近正確答案越好!



二、執行環境
 Windows 10
 Visual Studio 2017
 OpenCV 3.4


三、實作方法
1. 使用imread並以UNCHANGED方式讀入圖片檔。
2. 只針對第三張圖做GaussianBlur()。(其他兩張不做,測試結果更佳)
3. 利用HoughCircles()找出圓形,紀錄X與Y座標以及半徑。
4. 調整param1、param2、最小邊長、最大邊長等參數來尋找黑棋。
5. 利用circle()來畫出圓形並計算數量。
6. imwrite儲存結果。

四、執行結果


圖一、偵測了24顆,實際為24顆,誤差0

圖二、偵測了30顆,實際為31顆,誤差1
圖三、偵測了32顆,實際為31顆,誤差1
圖四、輸出結果

2019年5月15日 星期三

1053342的作業4

題目:

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

使用環境:

Windows 10
Visual Studio 2017
OpenCV 3.4

執行:

1.定義YCbCr顏色空間膚色cb的平均值、cr的平均值以及YCbCr顏色空間膚色的範圍
2.把圖片中RGB的值轉換成YCbCr值
3.將符合範圍的區塊填入白色,其他填黑

執行結果:



1053342的作業3

離散傅立葉轉換DFT練習

題目:

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


使用環境:

Windows 10
Visual Studio 2017
OpenCV 3.4


執行:

1.讀入圖片後,先使用copyMakeBorder()來對影像邊界拓展
2.透過merge()來拓展通道
3.開始傅立葉轉換
4.用split()分離通道,planes[0]為實數部分,planes[1]為虛數部分
5.將影像重排,使原點在影像中央
6.將頻譜圖透過normalize()轉換為可看的圖像格式
7.用phase()計算相位
8.將相位圖透過normalize()轉換為可看的圖像格式


執行結果:

左為原圖、中為 spectrum 、右為 phase

2019年4月3日 星期三

一、作業題目:

        撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至 HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)

二、環境設置:
  1. Visual Studio 2017
  2. opencv 3.4.0

三、作業說明:
  1. imread讀取圖片
  2. imread讀取時將圖片轉成灰階(CV_LOAD_IMAGE_GRAYSCALE)
  3. 透過GaussianBlur濾波函式將圖片平滑化來去除雜訊
  4. 使用Sobel函式取得影像梯度來進行邊緣檢測。
  5. 將其結果轉成CV8U
  6. 利用addWeighted把Sobel出來的值與原有圖片合併
  7. imshow印出原始圖、灰階圖以及處理完成的圖
  8. 調整後顯示並透過imwrite儲存為(output.jpeg)

四、結果展示:
      

2019年3月20日 星期三

1053342 作業1

一、簡介:
        撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。


二、環境
  1.Windows 10
  2.Visual Studio 2017  
  3.OpenCV 3.4.0

三、作業解釋
1.讀入一張圖片,imread("001.jpeg", CV_LOAD_IMAGE_UNCHANGED) //UNCHANGED表示讀入格式不變
2.使用者輸入一個介於-255~255之間的整數var
3.使用涵式convertTo(Output m , int rtype, alpha, beta):
          m:輸出圖,如果和呼叫的Mat尺寸或型態不同,會再重新分配空間。
          rtype:指定輸出圖型態,如果為負數的話,輸出圖型態會和呼叫的Mat相同。
          alpha:選擇性的放大倍率,也就是線性變換:x’ = a * x + b這個式子裡的a。
          beta:選擇性的偏移量,也就是線性變換:x’ = a * x + b這個式子裡的b,也就是本題的            var。
4.imshow():秀出更改前後的圖片。
5.imwrite():儲存更改後的圖片。

四、執行結果:

1.輸入56時:
2.輸入為-100時:
3.儲存最後產生的影像: