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

2022年6月9日 星期四

s1081506 作業7

 作業說明:

     利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。 

使用環境/語言:

        Windows11

        Visual Studio 2019

        Opencv-4.1.0

        C++

 

實作方法(執行步驟):

        1.  輸入圖片路徑後imread()讀入圖片

        2.  Mat.empty()判斷圖片是否存在

        3.  若圖片不存在或發生例外時輸出錯誤訊息並結束程式

        4. 將圖片轉成灰階圖 並利用threshold對圖片進行二值化運算

        5. 將經過二值化運算的灰階圖片代入erode 去噪、細化影像和消除毛刺

        6. dilate 讓圖片的輪廓恢復正常大小

        7. HoughCircles偵測圖中的圍棋個數

          8. circle函式畫圓

          9. 將偵測到的所有圓形畫在圖片上

        10. 輸出圖片及圍棋個數

 

 

實作結果:

        測資一



 測資二



 測資三



2022年6月2日 星期四

s1081506 作業6

 作業說明:

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

 

使用環境/語言:

        Windows11

        Visual Studio 2019

        Opencv-4.1.0

        C++

 

實作方法(執行步驟):

        1. 輸入圖片路徑後imread()讀入圖片

        2. Mat.empty()判斷圖片是否存在

        3. 若圖片不存在或發生例外時輸出錯誤訊息並結束程式

        4.給每個顏色唯一的識別號碼並入檔案

        5.將圖片每個像素的bgr值用Run-Length方式存進檔案

        6.讀取檔案中的Run-Length 資料和顏色的資料

        7.Run-Length 資料和顏色資料比對,還原成原本的圖片

        8.輸出圖片、檔案大小及壓縮率

 

 

 

 

實作結果:

        測資一

 測資二

 測資三



2022年5月18日 星期三

s1081506 作業5

作業說明:

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

 

使用環境/語言:

        Windows11

        Visual Studio 2019

        Opencv-4.1.0

        C++

 

實作方法(執行步驟):

        1. 輸入圖片路徑後imread()讀入圖片

        2. Mat.empty()判斷圖片是否存在

        3. 若圖片不存在或發生例外時輸出錯誤訊息並結束程式

        4.將圖像從RGB color space轉成HSI color space

        5.設定要偵測的顏色的數值範圍

        6.將第三點設定的數值代入inRange函式,生成二值化的圖

        7.根據二值化的圖的白色範圍,重新設定原圖的像素顏色

        8.印出結果


實作結果:

        原圖







結果





參考資料:

2022年4月14日 星期四

s1081506 作業4

 作業說明:

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

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

程式利用課本的frequency filter步驟者可得滿分,在網頁中將每個步驟結果呈現出。直接套用opencv函數得一半分數。 

 

使用環境/語言:

        Windows11

        Visual Studio 2019

        Opencv-4.1.0

        C++

 

實作方法(執行步驟):

        1. 輸入圖片路徑後imread()讀入圖片

        2. Mat.empty()判斷圖片是否存在

        3. 若圖片不存在或發生例外時輸出錯誤訊息並結束程式

        4. 將新尺寸圖片的型態換成CV_32FC1

        5.利用高斯低通濾波器的函數定義,求出高斯低通濾波器

        6.利用dft算出新尺寸的圖片的複數值,然後將複數值拆成實數和虛數

        7.利用magnitude將實數和虛數轉成振幅,再將振幅值轉成對數,用normalize將對數做歸一化

        8.Phas將實數和虛數轉成相位角度值,用normalize將相位角度值做歸一化

        9.multiply將高斯低通濾波器與實數和虛數 互相做卷積,再用merge組成新的複數

        10.idft將複數轉換成新的複數,再用split將新的複數拆成新的實數和虛數

        11.magnitude將實數和虛數轉換成新振幅

        12.normalize將振幅做歸一化,再轉換成原圖的尺寸


實作結果:

        原圖

 頻譜圖

        相位角圖

                

 

        平滑圖

                

    

參考資料:

l   https://blog.csdn.net/cyf15238622067/article/details/87918125

l   https://blog.csdn.net/yuandm819/article/details/79897868

l   https://blog.csdn.net/jerwey/article/details/103991174

l   https://www.twblogs.net/a/5c761cffbd9eee31cea509be

l   https://www.twblogs.net/a/5b820dc82b71772165af693c

l   https://iter01.com/541551.html

2022年3月23日 星期三

s1081506 作業3

 

作業說明:

         輸入一張圖像

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

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

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

 

使用環境/語言:

        Windows11

        Visual Studio 2019

        Opencv-4.1.0

        C++

 

實作方法(執行步驟):

        1. 輸入圖片路徑後imread()讀入圖片

        2. Mat.empty()判斷圖片是否存在

        3. 若圖片不存在或發生例外時輸出錯誤訊息並結束程式

        4. 用高斯模糊去除照片的雜訊

        5. 用sobel operator偵測圖片邊緣

        6. 用threshold 函數將的圖片的黑白互換

        7. 顯示出類似素描線條的樣子

 

實作結果:

        原圖



        新圖




 

參考資料:

https://blog.csdn.net/u012566751/article/details/77046445

https://docs.opencv.org/4.2.0/d2/d2c/tutorial_sobel_derivatives.html