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

2022年6月7日 星期二

s1083332 作業7

一、作業說明

    請撰寫一個程式,利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像

    (共三張)每張圖像中圍棋個數。

二、開發環境

    Windows 10

    Python 3.9.7

    OpenCV - 4.5.5

三、實作方法

    1. 以灰階模式讀入圖片

    2. 將圖片resize,並二值化

    3. 用erode處理圖片

    4. 利用findContours()偵測圍棋輪廓,得到圍棋個數

    5. 利用drawContours()繪製輪廓

四、執行結果

IMG_5702.JPG

    

IMG_5703.JPG

  

IMG_5704.JPG

                                                                    
偵測到的圍棋個數

2022年5月26日 星期四

s1083332 作業6

一、 作業說明

    請設計一個基於Run-Length的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案。

    部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率。 

二、 開發環境

Windows 10

Python 3.9.7

OpenCV - 4.5.5

三、 實作方法

        1. 讀入圖片,並利用split(),分成r, g, b channel

        2. 將各個channel降成一維

        3. 利用Run-Length方法,得到最新壓縮後的資料(img_color, data_color)

        4. 利用原資料與最新資料計算每張圖的壓縮率及平均壓縮率

        5. 將壓縮後的資料解壓縮,得到原圖 (無失真)

四、 執行結果

    

compression ratio

output_img1.bmp

output_img2.bmp
      

output_img3.bmp

2022年5月11日 星期三

s1083332 作業5

一、 作業說明

    撰寫一個程式將所附圖像flower.jpg的黃色花瓣區域擷顯示出來。

二、 開發環境

    Windows 10

             Visual Studio 2019

             OpenCV - 4.5.5

三、 實作方法

    1. 利用imread()讀入圖片

    2. 利用以下公式將圖片從RGB轉成HSI

   3. 設定HSI黃色的範圍,並帶入inRange(),得到黃色花瓣二值化的圖

   4. 將二值化的圖與原圖作bitwise_and(),得到結果

四、 執行結果

原圖

RGB轉HSI結果


得到黃色花瓣區域

結果



2022年4月13日 星期三

s1083332 作業4

   一、 作業說明

    請撰寫一個程式,讀取一張256色灰階圖像。

    (1) 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。

    (2) 對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。

二、 開發環境

         Windows 10

Visual Studio 2019

OpenCV - 4.5.5

三、 實作方法

          1. 利用IMREAD_GRAYSCALE讀入灰階圖

          2. 利用getOptimalDFTSize()及copyMakeBorder()將圖片padding

          3. 利用dft()作傅立葉轉換,接著用split()將實虛部分開

          4. 以phase()及magnitude()分別取得相位角度及頻譜,處理後輸出

          5. 最後利用GaussianBlur(),將圖片平滑化後輸出

四、 執行結果

讀入的灰階圖

頻譜

相位角度



高斯低通filter



2022年3月21日 星期一

s1083332 作業3

  一、 作業說明

撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)

(a)利用 Sobel Operators 偵測並輸出邊緣成分圖 

(b)設計一個類似素描線條的自畫像圖案

二、 開發環境

         Windows 10

Visual Studio 2019

OpenCV - 4.5.5

三、 實作方法

    (a)

  1. 以灰階模式讀入圖片
  2. 利用GaussianBlur將圖片模糊化、去除雜訊
  3. 利用Sobel operator 取得x, y方向梯度
  4. 利用addWeighted將得到的x, y方向兩張圖片疊合,得到邊緣成分圖
    (b)
        方法一:
  1. 將邊緣成分圖反白
  2. 利用threshold將圖片二值化
        方法二:      
  1. 利用GaussianBlur將原先讀入的灰階圖模糊化、去除雜訊
  2. 利用divide將灰階圖與模糊化後的圖片混合,得到素描圖          

四、 執行結果


灰階圖

邊緣成分圖

方法一 素描圖

方法二 素描圖

2022年3月2日 星期三

s1083332 作業2

 一、 作業說明

撰寫一個程式將一張圖像的(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋 0 度至 359 ):利用一個滑動條(trackbar)控制旋轉角度。

二、 開發環境

         Windows 10

Visual Studio 2019

OpenCV - 4.5.5

三、 實作方法

        旋轉整張照片:

  利用createTrackbar搭配warpAffine處理

        旋轉圖片中心內切圓區域:

1.      先判斷圖片內切圓半徑

2.      將點與圓中心距離大於以及小於等於內切圓半徑的點分別合成一張圖

3.      利用createTrackbarwarpAffine將內切圓區域旋轉

4.      最後將旋轉後的內切圓以及區域為內切圓外的圖片利用addWeighted疊合在一起

四、 執行結果


原圖
旋轉圖片中心內切圓區域

旋轉整張圖片





2022年2月23日 星期三

s1083332 作業1

 一、 作業說明

撰寫一個程式讀取一張圖片,將圖像中每一個點像素的值各加上一個數值。如果輸入

圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖像(RGB),則只改變

每個像素的 R 值。修改後,像素值須介於 0 與 255 之間。

二、 開發環境

Windows 10

Visual Studio 2019

OpenCV - 4.5.5

三、 實作方法

1. 利用imread讀取圖片,並要求使用者輸入欲改變的值。

2. 接著確認圖片每一個pixel的RGB是否皆相等。

3. 若皆相等,表示其為灰階圖像。將每個pixel的RGB值加上使用者輸入的值。

4. 若不相等,表示其為全彩圖像。將每個pixel的R值加上使用者輸入的值。

5. 利用saturate_cast,處理溢位問題。

6. 最後同時輸出原本的照片以及調整後的照片做比對。

四、執行結果

    全彩圖像

        1. +100


        2. -100
   

    灰階圖像
        1. +100

        2. -100