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

2019年6月5日 星期三

s1053336 的作業 5

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

二、實作環境:window、python3、opencv、PyQt5、Numpy

三、程式片段說明:
  • 讀入圖片並轉成灰階
  • 使用GaussianBlur除去雜質
  • 二值化(threshold)圖片
  • 使用erode和dilate,並調整參數數值,使其最佳化呈現
  • 利用findContours數出圖片中的棋子數量

四、執行結果:

  • 初始介面,按下Load選擇圖片

  • 下圖中實際棋子數量為24,計算出的棋子數量為23(左:原圖;中:運算後以二值化方式呈現;右:標示棋子)

  • 下圖中實際棋子數量為31,計算出的棋子數量為29(左:原圖;中:運算後以二值化方式呈現;右:標示棋子)

  • 下圖中實際棋子數量為31,計算出的棋子數量為31(左:原圖;中:運算後以二值化方式呈現;右:標示棋子)

  • 按下Save儲存圖片



2019年5月13日 星期一

s1053336 的作業 4

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

二、實作環境:window、python3、opencv、PyQt5、Numpy

三、程式片段說明:

  • 讀入圖片
  • cv2.cvtColor()從BGR轉成HSV
  • cv2.inRange()選取要的顏色,得到HSV的mask
  • cv2.cvtColor()從BGR轉成YCrCb
  • cv2.inRange()選取要的顏色,得到YCrCb的mask
  • 再將2個mask用cv2.bitwise_and加起來
     (過程中會用模糊化以及侵蝕、膨脹,以減少圖的雜質)

四、執行結果:

  • 偵測結果(上排按鍵可對圖進行儲存等操作)

s1053336 的作業 3

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

二、實作環境:window、python3、opencv、PyQt5、Numpy

三、程式片段說明:

  • 將圖片以灰階方式讀入
  • cv2.dft()做DFT傅立葉轉換
  • np.fft.fftshift()做移頻
  • cv2.magnitude()得到spectrum圖
  • 將上述經由fftshift後的結果作為cv2.phase()的輸入,然後得倒phase圖
  • 將fftshift後的結果進行反向操作,即可得到原本輸入的灰階圖
四、執行結果:

  • 初始介面,按下Load選擇圖片



  • 執行結果(左上角Input為原本輸入的灰階圖片、右上角為Spectrum圖、左下角為Phase圖、右下角Back為反向操作得回的灰階原圖)



  • 上排的按鍵可對圖進行存取等動作


2019年4月3日 星期三

s1053336 的作業 2

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

二、實作環境:window、python3、opencv、PyQt5、Numpy

三、實作方法:

  •         將圖片平滑處理(GaussianBlur),以減少雜訊
  • 圖片的色彩空間轉成YCrCb
  • 對channel Y進行Sobel,得到sobelX、sobelY
  • 將sobelX、sobelY轉成以CV_8的型態表示
  • sobelX、sobelY進行組合,得到新的channel Y
  • 新的channel Y代入原圖
  • 將結果圖的色彩空間轉成BGR,再轉成GRAY,即可得到類似素描線條的圖

    嘗試分析邊緣偵測所得到的點,結合成線條方式呈現
    • 將類似素描線條的圖進行二值化(threshold)
    • 利用二質化後的圖,得到contour(findContours)
    • 將contour畫於全黑的圖上(drawContours),並轉為灰階得到最後結果
    四、執行結果:

    • 初始介面



    • 按下Load選擇圖片



    • 圖片結果展示(img1為利用Sobel偵測圖像邊緣;img2為嘗試以利用分析邊緣偵測所得到的點,結合成線條方式呈現)



    • 按下Save1選擇儲存img1;按下Save2選擇儲存img2



    • 儲存結果

    2019年3月18日 星期一

    s1053336 的作業1

    一、實作方法:藉由bar左右滑動調整亮度,對圖片每個像素進行調整,並檢查是否有0~255以外的數值。

    二、實作環境:window、python3、opencv、PyQt5、Numpy

    三、執行方式:Load按鈕為載入圖片,Save按鈕為儲存當前圖片,Brightness為對像素加減的數值(-255~255)。



    四、執行畫面:

    • 按下Load按鈕並選擇圖片  


    • 以左右滑動調整亮度(彩圖)



    • 按下Save按鈕儲存圖片(彩圖)


    • 以左右滑動調整亮度(灰階),並按下Save按鈕儲存圖片


    • 儲存的圖片