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

2019年6月6日 星期四

s1053314 的作業 5

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

二、使用環境/語言

  • windows10
  • Opencv 4.1.0
  • Visual Studio 2017
 三、特殊程式片段註解
  • resize() //因原圖過大所以先將原圖縮小至758*408
  • cvtColor() //將圖片轉為灰階
  • threshold() //將圖片二值化
  • THRESH_BINARY | THRESH_TRIANGLE //於二值化的過程中將超過Thresh的相入設成maxval其餘設成0或利用Triangle algorithm選出最佳的Threshold value
  • getStructuringElement() //設定kernel的樣式及大小
  • erode() //腐蝕圖片
  • dilate() //膨脹圖片
  • findContours() //計算圍棋個數
  • drawContours() //用來繪製讀取到的邊緣
 四、執行結果
  • IMG_5702
            (原圖)
            (二值化)
            (膨脹及腐蝕)
            (誤差1顆)
  • IMG_5703
            (原圖)
            (二值化)
            (膨脹腐蝕)
            (誤差1顆)
  • IMG_5704
            (原圖)
            (二值化)
            (膨脹及腐蝕)
            (誤差5顆)
  • IMG
            (原圖)
            (二值化)
            (膨脹及腐蝕)
            (誤差0顆)

2019年5月13日 星期一

s1053314 的作業 4

一、作業要求

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

二、原理

HSV顏色空間:由色調(Hue)、飽和度(Saturation)、亮度(Value)三個分量構成,HSV更接近於人眼的主觀感受,可通過下圖展現出HSV顏色分布:
YCbCr顏色空間:用於影片中影像的連續處理,或者數字攝影系統中。Y是所謂的流明(Luminance)表示光的濃度且為非線性,並使用Gamma correction編碼處理。Cb和Cr是藍色和紅色的濃度偏移量成分。

三、實現步驟
  • 亮度補償:R、G、B三通道5%非線性Gamma校正
  • 顏色空間轉換:RGB顏色空間轉換到YCbCr顏色空間
  • 使用規則化作膚色分割

四、使用環境/語言

  • Windows 10
  • Spyder 
  • Python 3.7.1
  • Opencv 3.4.1


    五、特殊程式片段註解

    • cv2.cvtColor(img,cv2.COLOR_BGR2YCR_CB) //RGB顏色空間轉換到YCbCr顏色空間
    • cv2.cvtColor(img,cv2.COLOR_BGR2RGB) //BGR顏色空間轉換到RGB顏色空間
    • np.zeros //準備一個空的影像空間
    • np.hstack //將原圖與偵測膚色的圖水平方向堆疊起來
    • imwrite //將影像寫入路徑上存放
    六、環境設置

    • 將Anaconda的路徑加入的path
    • 於Anaconda cloud server中搜尋package(cmd輸入:anaconda search opencv)
    • 挑選一個符合系統的package(cmd輸入:conda install -c https://conda.anaconda.org/package名稱)
    • 下載完畢後,開啟Spyder執行程式
    七、執行結果
    • pyplot
    • 存圖
    八、參考資料

    s1053314 的作業 3

    一、作業要求

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

    二、原理

    傅立葉轉換常用在分析各種濾波器的特性。可以是用2D離散傅立葉轉換分析影像的頻域特性。
    實現2D離散傅立葉轉換(DFT)的演算法叫做快速傅立葉轉換(FFT),對影像進行x方向和y方向的傅立葉轉換,會得到影像的頻域表示圖。

    直觀來說,一個正弦訊號如果幅度變化很快,可以稱之高頻訊號,如果轉換很慢,可以稱之低頻訊號。在影像中灰階值變化快的位置,可以稱之高頻分量,灰階值變化慢鑿稱之低頻分量。

    然而2D傅立葉轉換的一公式為:
    反轉換為:
    當u=v=0時,反轉換可以實現將頻域圖像恢復成時域圖像:
    三、使用環境/語言

    • Windows 10
    • Spyder 
    • Python 3.7.1
    • Opencv 3.4.1
    四、特殊程式片段註解
    • np.fft.fft2() //對訊號進行頻率轉換輸出一個複數陣列,第一個引數為灰階影像,第二個引數為輸出陣列大小
    • np.fft.fftshift() //進行移頻操作
    • np.abs() //取絕對值,將複數變化成實數
    • np.log() //取log,將數據變化成較小的範圍
    • np.angle() //取相位
    五、環境設置

    • 將Anaconda的路徑加入的path
    • 於Anaconda cloud server中搜尋package(cmd輸入:anaconda search opencv)
    • 挑選一個符合系統的package(cmd輸入:conda install -c https://conda.anaconda.org/package名稱)
    • 下載完畢後,開啟Spyder執行程式
    六、執行結果

    七、參考資料

    2019年4月1日 星期一

    s1053314 的作業 2

    一、作業要求

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


    二、原理


    去雜訊:利用高斯函數得到高斯濾波的各個參數

    紀錄梯像素梯度方向與強度:以Sobel運算子計算水平和垂直梯度(Gx,Gy),兩者平方後相加得到梯度強度(G)

    非最大抑制:採用梯度找邊緣,邊緣會比較模糊,這方法讓邊緣定位較精確,比較每個像素,當這個像素的梯度強度最大就保留此像素的值,否則設成0


    判斷邊界:依據輸入的上下兩個閾值判斷此像素是否為邊緣,下列三種判斷依據,
    • 此像素梯度強度大於上閾值,此像素為邊緣
    • 此像素梯度強度小於下閾值,此像素不為邊緣
    • 此像素梯度強度介於上下閾值,若此像素周圍,有像素的梯度強度大於上閾值,則此像素為邊緣,否則不為邊緣


    三、使用環境/語言

    • Windows 10
    • Spyder 
    • Python 3.7.1
    • Opencv 3.4.1


      四、特殊程式片段註解

      • cvtColor //以BGR顏色空間轉換到灰度空間
      • GaussianBlur //用來去除雜訊
      • Canny //抗雜訊及精確定位有較好的效果
      • hstack //將原圖與調整過的圖水平方向堆疊起來
      • createTrackbar //建立滑動條調整閾值大小
      • imwrite //將照片寫入路徑上存放

      五、環境設置

      • 將Anaconda的路徑加入的path
      • 於Anaconda cloud server中搜尋package(cmd輸入:anaconda search opencv)
      • 挑選一個符合系統的package(cmd輸入:conda install -c https://conda.anaconda.org/package名稱)
      • 下載完畢後,開啟Spyder執行程式

      六、執行結果

      • 閾值=0

      • 閾值=11
      • 閾值=38
      • 閾值=70
      • 閾值=100
      • 儲存圖片(dog copy)

      七、影片連結
      • https://youtu.be/qLNZ2wYlpO0
      八、參考資料
      • http://monkeycoding.com/?tag=canny





      2019年3月18日 星期一

      s1053314 的作業 1

      一、作業要求:

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

      二、原理

      g(x) = f(x)+b
      亮度調節就是對圖像的點操作,如上述公式,改變b的值就是改變圖像亮度。

      三、使用環境/語言:
      • Windows 10
      • Python 3.7.1
      • Opencv 3.4.1
      四、特殊程式片段註解:
      • cv2.getTrackbarPos(trackbar_name, wname)
        cv2.createTrackbar(trackbar_name)來創建滑動條控制亮度與對比度。
      • resize 修改圖片大小。
      • np.hstack將原圖與調整過的圖水平方向堆疊起來。
      • imwrite()將照片寫入路徑上存放。
      五、執行方式/畫面:

      • 原圖(對比10 亮度0)(dog)
      • 亮度(對比10 亮度96)

      • 對比(對比2 亮度96)

      • (對比0 亮度-128)

      • (對比20 亮度128)


      • 存圖(dog copy)
      六、連結影片
      • https://youtu.be/42Xdrn65IKo

      七、參考資料