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

2022年6月7日 星期二

s1081534 作業7

   1. 作業說明: 

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


2.開發環境:

  • Windows 10
  • Visual Studio 2019
  • OpenCV3.4.6
  • C++
3.實作方法:
  1. 將圖片以灰階的形式讀進去

  2. 原圖比較大所以先將圖片resize()

  3. 將圖片以threshold()二質化處理

  4. 以二質化後的圖片使用 erode() 後再 dilate()

  5. HoughCircles()計算圖片裡有幾個圓形

  6. 將辨識出來的圓化回原圖得到結果

4.執行結果:
總輸出個數


  圖一
圖一實際結果24顆

 圖二
圖二實際結果31顆
圖三
圖三實際結果31顆














2022年6月1日 星期三

s1081534 作業6

  1. 作業說明: 

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


2.開發環境:

  • Windows 10
  • Visual Studio 2019
  • OpenCV3.4.6
  • C++
3.實作方法:
  1. 將讀入的圖片使用split()把三個channel分離並存入vector

  2. 將分離出的三個cahnnel從二維降成一維,也將其分別存入不同vector

  3.  對每個一維的陣列個別做Run-length encoding               

  4. 最後輸出到同一個dat檔中,將每一個 channel的資訊分別做區隔

  5. 第二部分將壓縮後的檔案在解壓縮

  6. 讀入dat檔,將每個channel個別存取 

  7. Mat一張新的圖片並讀取的資訊填入每個pixel得到無失真的影像

  8. 用resize()去調整輸出圖片的大小  

  9. 最後分別去計算壓縮率(原圖大小/壓縮檔大小)和平均壓縮率

4.執行結果:
輸出圖片:


檔案大小對照:
壓縮率:








2022年5月18日 星期三

s1081534 作業5

  1. 作業說明: 

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


2.開發環境:

  • Windows 10
  • Visual Studio 2019
  • OpenCV3.4.6
  • C++
3.實作方法:
  1. 輸入圖片名稱
  2. 將圖片以RGB的形式讀取進去
  3. 用公式將RGB的圖轉成HSI的圖
  4. 設定偵測黃色的區域
  5. 使用inRange()將圖片二值化
  6. 用for迴圈將白色部分保留取得最後的結果

4.執行結果:

原圖:
HSI:
二質化:
結果:












2022年4月14日 星期四

s1081534 作業4

 1. 作業說明: 

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

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

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


2.開發環境:

  • Windows 10
  • Visual Studio 2019
  • OpenCV3.4.6
  • C++
3.實作方法:
  1. 將圖片進行padding
  2. 傅立葉轉換後要存取實部和虛部的地方
  3. 用merge()合起來
  4. 進行傅立葉轉換dft()
  5. 用split()分離出實部和虛部
  6. 使用magnitude()和phase()算出頻譜圖和象位角
  7. 用filter與前面傅立葉轉換的結果相乘再用idft()取逆傅立葉轉換
  8. 以magnitude()和normalize()得到結果

4.執行結果:

原圖:

 

padded image:


phase:

  
spectrum:


filter:


result


















2022年3月23日 星期三

s1081534 作業3

 1. 作業說明: 

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

2.開發環境:

  • Windows 10
  • Visual Studio 2019
  • OpenCV3.4.6
  • C++

3.實作方法

  1. 輸入圖片路徑或名稱
  2. 使用imread(path, IMREAD_GRAYSCALE)以灰階模式讀取一張圖
  3. 透過GaussianBlur將圖片模糊處理、去除雜訊 
  4. 透過Sobel operator計算出x,y方向梯度
  5. 透過addweight合併兩個方向梯度得到邊緣成分圖 
  6. 將照片透過threshold(b, c, 55, 255, THRESH_BINARY_INV);二值化 且在高斯模糊一次得到素描圖
4.執行結果
  1. 灰階圖

  2. 邊緣成分圖

  3. 素描圖

2022年3月9日 星期三

s1081534 作業二

1. 作業說明: 

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


2.開發環境:

  • Windows 10
  • Visual Studio 2019
  • OpenCV3.4.6
  • C++

3.實作方法

  1. 輸入圖片路徑或名稱
  2. 做出一個 trackbar
  3. 判斷圖片的長短邊
  4. 找出它的內切圓
  5. 分別產生出三種圖片
  6. 原圖 ,切出來的圓(用來檢查切出來的是否為圓)以及內切圓旋轉的圖片

4.執行結果







2022年2月23日 星期三

s1081534 作業1

 1.作業說明:

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

2.開發環境:

  • Windows 10
  • Visual Studio 2019
  • OpenCV3.4.6
  • C++

3.實作方法:

(1)輸入圖片名稱或路徑,並用imread讀取圖片 

(2)用channel數去判斷輸入的圖像是灰階圖像或者是全彩圖像

(灰階圖像channel數為1 ,全彩圖像則為3)

(3)如果是灰階圖像 調整其亮度

(4)如果是全彩圖像會判斷其RGB值是否相等,若三者有不同,調整他的R值

(5)輸入數字,並顯示結果

4.實作結果:

原圖









-100










+100









原圖











+100










-100