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

2022年6月2日 星期四

s1073331 作業6

 

一、說明

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

二、開發環境:

  1. MacOS 12.3.1 m1 silicon
  2. PyCharm
  3. python 3.9
  4. opencv 4.5.4

三、實作方法

(一)需安裝matplotlib

(二)將讀進來的圖片依RBG進行通道分割

(三)把三通道利用flatten()轉成一維陣列

(四)壓縮編碼為:1,1,2,2,2,3,3,3,3 → 1,2,2,3,3,4

(五)最後輸出成.dat檔


四、成果與壓縮率:


(圖一)


(圖二)
(圖三)

三原圖皆為14.7MB,故可得平均壓縮率約為:48.9%




2022年5月19日 星期四

s1073331 作業5

 

一、 作業說明

擷取圖片的黃色花瓣區域


二、 開發環境:

  1. MacOS 12.3.1 m1 silicon
  2. PyCharm
  3. python 3.9
  4. opencv 4.5.4

三、實作方法

1.將照片放入專案📁編譯

2.程式會將圖片轉成HSV模式,如圖一所示。

3.接著用cv2.inRange找出黃色區域

4.產生黃色區域的遮罩,並合成起來。


圖一





2022年4月14日 星期四

s1073331 作業4

 

1. 作業說明:

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

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



 2. 開發環境:

o    Windows 10

o    Atom

o    OpenCV 4.5.5

o    Python 3.9


 3. 實作方法:

將照片放入專案資料夾,會以灰階模式導入

利用fft.fft2(a, s=None, axes=(- 2, - 1), norm=None)來進行傅立葉轉換

fft.fftshift將零頻率分量移到中心。

利用magnitude()phase()去取得相位和頻譜圖

使用高斯函數取的平滑圖形。



原始圖片




(2)第二部分












2022年3月24日 星期四

s1073331 作業 3

  一、 作業說明

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


二、 作業環境

Windows 10OpenCV 4.5.5Visual Studio 2017、C++


三、  實作方法

(1)輸入圖片名稱或是圖片路徑,如果輸入錯誤會有防呆,可以重新輸入。

(2)使用高斯函數減少圖片的雜訊,並且轉成灰階。

(3)利用sobel()完成邊緣偵測,導出edge_map。

(4)將黑白顏色反轉,形成素描風格圖片。


四、 成果


(1)




(2)




2022年2月26日 星期六

s1073331 作業2

 

一、 作業說明

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

二、 作業環境

Windows 10OpenCV 4.5.5Visual Studio 2017

三、  實作方法、執行結果

1.input的圖片放入專案資料夾內,編譯程式後,輸入圖片名稱,如:XXXX.jpg。如檔案位置錯誤或名稱錯誤會跳出訊息,並且結束程式。

2.成功之後會跳出圖片,上方會有滑動條,可以調整角度,預設為零度,可以從0~360度,並及時出現在畫面中。

程式實作原理:

  (1)首先,要先針對原圖進行分割處理,切出一個內切圓的圖、還有一個外框。

  (2)分割的原理,先創兩個空白Mat物件,然後在原始圖片上切出一個圓圈,程式尋訪每個點,然後判斷該點是不是在圈內,如果是就將該點的資料複製到其中一張圖上,反之依然,圈外就複製到另外一張圖上,最後切出來的結果如下所示。





  (3)我們再將只有圓的圖,利用getRotationMatrix2D()、warpAffine()進行旋轉的動作。



  (4)最後,再利用分割的尋訪模式,將旋轉過後的圖,重新映射回只有外框的圖上。



  (5)加上拉條,完成。


  (6)3/10補充:整張圖的旋轉:

  (6-1)可以選擇,要旋轉何種方式、並且有防呆機制

 (6-2)輸入a可以旋轉整張圖片



2022年2月24日 星期四

s1073331 作業1

一、 作業說明

  輸入圖片路徑、欲調整數值,若圖片為灰階調整亮度,若圖片為彩色則只調整R值。調整後數值超出8bit範圍(0~255)則調整為最大值或最小值。

二、 作業環境

Windows 10OpenCV 4.5.5Visual Studio 2017

三、  實作方法

1.將要輸入的圖片放入專案資料夾內,編譯程式後輸入檔案名稱,如:apple.jpg。如放入圖片錯誤或名稱錯誤會跳出提示並結束程式。

2.成功載入後,輸入要增加的值大小,程式會自行判斷圖片格式,做turn_red()或是turn_gray()

3.最後會跳出視窗顯示修改過後的結果。

(1)程式說明:

程式碼fuction主要有3個。

bool grayscale(int h, int w, Mat image)

判斷是否為灰階圖片,判斷依據為看三通道的數值有無相同。

Mat turn_gray(int h, int w, int val, Mat image)

如果是灰階圖片,則用此fuction<Vec3b>3通道逐一改值。

Mat turn_red(int h, int w, int val, Mat image)

如果是彩色圖片,則用此fuction,而只改<Vec3b>R通道。

 

四、  執行結果

灰階圖騙數值-100
圖1.灰階圖數值-100


圖2.灰階圖數值+100

圖3.彩色圖數值-100


                        
圖4.彩色圖數值+100