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

2022年6月9日 星期四

s1081408 作業7

  

  • 1. 開發環境: 

      • Windows 10 
      • OpenCV 4.5.5 
      • Visual Studio 2022
      • 語言:C++ 

 

 

  • 2. 作業說明: 

      • Morphological Image Processing:  
        • 利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像中圍棋個數。
        • 程式不一定可以算出正確棋子數量,越接近正確答案越好!
  •  

  • 3. 程式功能: 

      • 讀取圖片:輸入圖片路徑後,若路徑存在,使用imread(IMG_PATH, IMREAD_GRAYSCALE)把圖片以灰階形式讀進來。若路徑不存在的話則提示使用者,並結束程式。 
      • 原圖片尺寸太大,先調整圖片大小:resize()。
      • 將灰階圖片經過高斯、二值化的處理,得到黑白圖像:GaussianBlur()、threshold()
      • 先使用侵蝕的方式去除二值化後雜訊,之後再將圖片輪廓恢復回來:erode()、dilate()。
      • 用HoughCircles()偵測出圖片中的圓形圍棋位置,並用vector把偵測到的圓形的圓心x/y座標、圓半徑記錄下來。重要參數:
        1. minDist表示兩個圓之間圓心的最小距離,如果檢測到的兩個圓心之間距離小於該值,則會認為會是同一個圓心。
        2. param2越小,就越可以檢測到更多根本不存在的圓,而它越大的話,能通過檢測的圓就更加接近完美的圓形。
        3. minRadius要偵測的圓半徑的最小值。
        4. maxRadius要偵測的圓半徑的最大值。
      • 將上個步驟儲存的圓形資訊傳進circle()函式,在圖上標示出偵測到的圓形。
      • 按任意鍵關閉視窗,回到步驟1再次輸入路徑。


  • 4. 執行結果:

圖一預測數量
圖一圍棋標示


圖二預測數量
圖二圍棋標示


圖三預測數量
圖三圍棋標示

2022年6月1日 星期三

s1081408 作業6

 

  • 1. 開發環境: 

      • Windows 10 
      • OpenCV 4.5.5 
      • Pycharm
      • 語言:Python

 
 

  • 2. 作業說明: 

      • Image Compression:  
        • 設計一個Run-Length的壓縮方法對圖片作無失真壓縮後儲存成新檔案,並計算三張圖的平均壓縮率

  •  

  • 3. 程式功能: 

      • 讀取圖片: for迴圈裡使用imread()把圖片一個一個讀進來,並用矩陣的形式存起來
      • 使用split()將圖片分成BGR三個通道,在各自使用flatten()把二維變成一維陣列並將一維陣列放進RLE function 
      •  利用np.savez()將所有BGR的資料存入檔案裡,並記錄壓縮後的檔案大小,得到單張壓縮率
      • 將剛剛經過RLE的資料解碼,解碼後經過merge把三個通道合併,即得到原圖。

  • 4. 執行結果: 




    2022年5月14日 星期六

    s1081408 作業5


      

    • 1. 開發環境: 

        • Windows 10 
        • OpenCV 4.5.5 
        • Visual Studio 2022
        • 語言C++

     

    • 2. 作業說明: 

        • Color SpaceTransformation: 撰寫一個程式將圖像的黃色花瓣區域顯示出來。

    • 3. 程式功能: 

        • 讀取圖片:輸入圖片路徑後,若路徑存在,使用imread(IMG_PATH, -1)把圖片讀進來。若路徑不存在則提示使用者並結束程式。 
        • RGB圖片轉換成HSI形式:
          • 轉換公式:
                      
            1. BGR需要先經過normalize: [0,255] --> [0,1]
            2. 根據公式算出HSI
            3. HSI分量都擴充到[0,255]區間以便顯示結果。
        • 擷取想要的黃色花瓣區域:
          1. 設定黃色花瓣區域HSV值的上下限。
          2. inRange() color picker: 以hsi圖像、HSV數值上下限當作輸入,每個通道的像素值都必須在規定的上下限的範圍內因此用此函數可以把我們想要的黃色花瓣區域擷取出來。位於區間的像素值設為255(白),位於區間外的值設為0(黑)
          3. 輸出的矩陣是二值化之後的圖像。
        • 將二值化圖像和原圖合併:
          1. cvtColor()將二值化圖像先轉換成BGR圖像。
          2. bitwise_and()將原圖和二值化圖像的白色區域合併,得到黃色花瓣區域。
        • imshow()顯示操作後結果,waitKey()等待使用者按任意鍵後關閉視窗,使用者可再次輸入圖片,回到步驟1 
    •  


        4. 執行結果 


      • 原圖:
                                
      • HSI:
                    
      • 二值化:
                    
      • 結果: