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

2019年6月6日 星期四

s1043325 的作業 5

數學型態學影像處理應用 Morphological Image Processing

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

環境與使用套件版本

  • Windows 10
  • Python 3.7.1
    • opencv-python 4.0.0.21
    • PyQt5 5.12 

實作方式

  1. 將圖片轉為灰階並使用 GaussianBlur 將圖片模糊處理去除雜訊
  2. 將圖片做二值化處理
  3. 使用 erode 侵蝕圖片
  4. 使用 findContours 取得圖片輪廓數

使用方法

Step1. 運行程式

 

Step2. 點擊選擇圖片,讀入想要的圖片

 

Step3. 點擊計算數量,計算出的數值顯示在右下方 (可自訂 erode 的 kernel 大小)

 

Step4. 點擊查看圖片,可以顯示輪廓圖片

 


實作過程

1. 將題目所給的三張圖片餵入程式
2. 翻覆測試 erode 函數之 kernel 大小與輪廓的關係
3. 並將計算出來的輪廓數量記錄下來,結果如下表


紅色字為 3 種 kernel 中最接近正解








  •  IMG_5702.JPG 在不同 kernel 對應的輪廓圖與數量
在這張圖片中,棋子重疊的部分多,在使用較大的 kernel 下,會取得比較準確的數值
































  •  IMG_5703.JPG 在不同 kernel 對應的輪廓圖與數量
而在這張圖片中,棋子反光與重疊的部分多,在使用較大的 kernel 下,
會使得圖片侵蝕過多,取得較不準確的數值


























  •  IMG_5704.JPG 在不同 kernel 對應的輪廓圖與數量
第三張圖片中,棋子重疊與反光的部分少,
使用 200~300 間的 kernel 大小均能取得精準的數值

2019年5月15日 星期三

s1043325 的作業 4

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

環境與使用套件版本

  • Windows 10
  • Python 3.7.1
    • opencv-python 4.0.0.21
    • PyQt5 5.12 

實作方式

    1. 將色彩空間轉為 HSV 與 YCrCb
    2. 用 cv2.inRange 個別取得 HSV 與 YCrCb 的皮膚遮罩 (mask)
    3. 將兩遮罩用 and 邏輯運算取得最終皮膚 mask
    4. 使用 3 取得的 mask 套用在原圖
    5. (選) 將皮膚區塊以白色替換,形成對比較容易觀察

    使用方法

    Step1. 運行程式

     

    Step2. 點擊 Load 按鈕,選擇想要的圖片

     

    Step3. 將圖片儲存於資料夾

     

     

     

    原圖
    輸出

    2019年5月7日 星期二

    s1043325 的作業 3

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

    環境與使用套件版本

    • Windows 10
    • Python 3.7.1
      • opencv-python 4.0.0.21
      • PyQt5 5.12 
      • matplotlib 3.0.3

    使用方法

    Step1. 運行程式

     

    Step2. 點擊 Load 按鈕,選擇想要的圖片

     

    Step3-1. 點擊 Preview Spectrum Image

     

    Step3-2. 點擊 Preview Phase Image

     

    Step4. 將圖片儲存於資料夾

     

    2019年3月30日 星期六

    s1043325 的作業 2

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

    環境與使用套件版本

    • Windows 10
    • Python 3.7.1
      • opencv-python 4.0.0.21
      • PyQt5 5.12 

    實作方法 

    1. 使用 cv2.GaussianBlur() 將圖片模糊處理,以減少雜訊
    2. 使用 cv2.Sobel() 取得 x 軸與 y 軸的梯度
    3. 使用 cv2.convertScaleAbs() 將上面取得的梯度轉回 unit8
    4. 使用 cv2.addWeighted() 將 x, y 兩個維度的圖片分配權重,並組合再一起

    使用方法

    Step1. 運行程式

     

    Step2. 點擊 Load 按鈕,選擇想要的圖片

    Step3. 修改後的圖像會顯示在右側

     

    Step4. 點擊 Save 按鈕,自由選擇欲存放的檔案路徑與檔名

    原圖
    輸出

    2019年3月16日 星期六

    s1043325 的作業 1

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

    環境與使用套件版本

    • Windows 10
    • Python 3.7.1
      • opencv-python 4.0.0.21
      • PyQt5 5.12

    使用方法

    Step1. 運行程式

     

    Step2. 點擊 Load 按鈕,選擇想要的圖片

     

    左側為原圖,右側為修改預覽圖

    Step3. 透過下方拖曳條調整亮度,亮度增減的數值將會顯示在拖曳條左方  

     

    亮度增加 75
    亮度減少 100

    Step4-1. 若想要取消修改,點擊 Reset 按鈕即可 

    Step4-2. 修改完成後,點擊 Save 按鈕,自由選擇欲存放的檔案路徑與檔名