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

2022年6月2日 星期四

s1083335 作業7

一、作業說明:

    請撰寫一個程式,利用數學型態學影像處理運算,計算出所附圖像中圍棋個數。

二、開發環境:

      Windows 10
      Python 3.9.7
      OpenCV 4.5.5

三、實作方式:

    1. imread()讀入圖片後轉成灰階圖像
    2. threshold()做二值化
    3. 計算kernel後做opening(),用來消除小於結構元大小的細小區域
    4. 再做dilate()
    5. 使用distanceTransform()計算圖像中每一個非零點距離離自己最近的零點的近似或精確距離

四、執行結果:

    

    
實際數量:24,預估數量:21
實際數量:31,預估數量:31
實際數量:31,預估數量:31







 







2022年5月31日 星期二

s1083335 作業6

 一、作業說明

    請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
    並計算三張圖的平均壓縮率(compression ratio)。

二、開發環境

    Windows 10
    Python 3.9.7
    OpenCV 4.5.5

三、實作方式

    1. 用imread讀入三張圖片
    2. 用split將圖像分成BGR三個通道
    3. 使用flatten將BGR轉成一維陣列
    4. 分別計算三個通道run length
    5. 將結果存入檔案並計算壓縮率

四、執行結果

img1

img2

img3

result

2022年5月10日 星期二

s1083335 作業5

一、作業說明

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

二、開發環境

    Windows 10
    Python 3.9.7
    OpenCV 4.5.5

三、實作方式

    1. 以imread讀入圖片
    2. 使用 cvtColor 將影像從彩色轉換成HSV。
    3. 找出黃色HSV值的範圍
    4. 使用inRange 找出黃色部分
    5. bitwise_and 輸出黃色部分

四、執行結果

 


2022年4月12日 星期二

s1083335 作業四

 一、作業說明

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

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

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

二、開發環境

    Windows11
    Visual Studio 2019
    OpenCV4.0.1

三、實作方式

    1. 以imread(path, IMREAD_GRAYSCALE)讀入圖片
    2.進行行和列的擴充,找到最適合擴充值
    3. 進行邊緣擴充,傅立葉轉換
    4. 分離通道, planes[0] 爲實數部分,planes[1]爲虛數部分
    5.使用normalize把值控制在0-1之間
    6. magnitude()生成頻譜,phase()生成相位
    7. GaussianBlur()生成平滑圖片

四、執行結果

原圖
頻譜大小

相位角度

平滑後圖片





2022年3月16日 星期三

s1083335 作業3

一、作業說明

    撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)
    (a)利用 Sobel Operators 偵測並輸出邊緣成分圖
    (b)設計一個類似素描線條的自畫像圖案。

二、開發環境

    Windows11
    Visual Studio 2019
    OpenCV4.0.1

三、實作方式

    1. 以灰階模式讀入一張圖像
    2. 利用Sobel()分別對x和y做邊緣檢測
    3. 以addWeighted合成兩張圖片,即可得到邊緣成分圖
    4. 把邊緣成分圖做色彩反轉
    5. 再把反轉後的圖做二質化,即可得到類似素描線條的自畫像圖案

四、執行結果

    原圖

灰階圖片

邊緣成分圖

素描線條

2022年3月6日 星期日

s1083335 作業2

一、作業說明

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

二、開發環境

    Windows11
    Visual Studio 2019
    OpenCV4.0.1

三、實作方法

    (a)整張圖片

        1. 設定圖片路徑,利用imread()讀取圖片,並檢查是否讀取成功。
        2. 利用creatTrackbar創造出一個數值為0~359的trackbar
        3. 利用Point2f找出圖片中心點
        4. 使用getRotationMatrix2D及warpAffine從中心點旋轉某個角度得到旋轉後圖片
        5. 以imshow顯示trackbar與圖片

    (b)中心內切圓區域,旋轉一個角度

        1. 設定圖片路徑,利用imread()讀取圖片,並檢查是否讀取成功。
        2. 利用creatTrackbar創造出一個數值為0~359的trackbar
        3. 找出內切圓之圓心及半徑
        4. 將內切圓的部分存為image1,剩下部分存為image2
        5. 使用getRotationMatrix2D及warpAffine從內切圓圓心旋轉某個角度得到旋轉後圖片cir
        6. 將cir及image2利用addWeighted疊加
        7. 以imshow顯示trackbar與合併後的圖像

四、執行結果

    (a)整張圖片


圖片旋轉50度

    (b)
中心內切圓區域,旋轉一個角度


內切圓旋轉45度


2022年2月22日 星期二

s1083335作業1

 一、作業說明

撰寫一個程式讀取一張圖片,將圖像中每一個點像素的值各加上一個數值。如果輸入圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖像(RGB),則只改變每個像素的 R 值。修改後像素值介於 0 與 255 之間。

二、開發環境

Windows11

Visual Studio 2019

OpenCV4.0.1

三、實作方法

1.設定圖片路徑,利用imread()讀取圖片,並檢查是否讀取成功。

2. 利用img.at<Vec3b>(i, j)[0]讀入圖片之R,B,G數值,如果三數值相等則為灰階圖片,否則為彩色。

3.若是灰階圖像,則增加灰階圖像每個像素的值,再將原圖像灰階圖像印出。 

4.若是彩色圖像,則增加彩色圖像中R的值,再將原圖像和彩色圖像印出。 

5.上述兩點使用下列公式:新圖像=α*原圖像+β 改變像素值,且利用saturate_cast<uchar>()處理溢位問題。當underflow,數值設為最小值0;當overflow,數值設為最大值255。

6.接著輸出原圖及調整後圖片。        

四、執行結果

灰階圖像

β= -100

原圖

β= 100

 

彩色圖像 

β= -100

原圖

β=100