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

2022年6月8日 星期三

s1071805 作業7

 

s1071805 作業7

 

一、作業說明

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

a.請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖。

b.程式不一定可以算出正確棋子數量,越接近正確答案越好!

 

二、開發環境

Windows 10

Anaconda Jupyter Notebook 6.4.11

OpenCV 4.5.5

Python 3.7.13

 

三、實作方法

1.分別讀入三張圖片

2.將圖片轉成灰階、模糊、二值化

3.接著做erode()dilate()

4.findContours()找出所有棋子輪廓

5.drawContours()把輪廓畫在原本的圖片上

6.imwrite()輸出結果

morphological_1_檔名.jpg->儲存第一次erode()dilate()的結果

morphological_2_檔名.jpg->儲存第二次erode()dilate()的結果

draw_檔名.jpg->儲存最後標示棋子的結果

 

四、執行結果








 

 

 

2022年6月1日 星期三

s1071805 作業6

 

 

一、作業說明

附件中為三張利用將晶片高度以色彩視覺化後的圖片。

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

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

 

二、開發環境

Windows 10

Anaconda Jupyter Notebook 6.4.11

OpenCV 4.5.5

Python 3.7.13

 

三、實作方法

1.input的方式輸入檔案名稱且得到檔案的大小


2.接著讀取圖片求出長 寬和channel



3.把不重複的顏色(B,G,R)新增到tmp



4.dictionary的方式將tmp裡面的color編號

{ key: value } -> { color id: [B,G,R] }



5.之後把所有的color數量顯示出來



6.儲存原本img(B,G,R)經過get_key()轉換後的color id

7.自定義一個run_length_encoding()function來計算

8.執行完run_length_encoding()的結果都寫到原檔名.txt的檔案中


9.計算壓縮檔的檔案大小 get_ratio()就可以算出壓縮率

10.
當三張圖片都分別產生壓縮檔後就可以執行get_average()



 

四、執行結果







2022年5月13日 星期五

s1071805 作業5

 

一、作業說明

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

 

二、開發環境

macOS Monterey 12.3

Anaconda Jupyter Notebook 6.4.8

OpenCV 3.4.2

Python 3.7.11

 

三、實作方法

1.imread()讀取圖片

2.cvtColor()把圖片轉換成HSV

3.設定黃色的lower boundupper bound

4.inRange()鎖定黃色範圍

5.bitwise_and()進行挖空 得到結果


四、執行結果



 

 

 

 

2022年4月13日 星期三

s1071805 作業4

一、作業說明

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

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

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

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

 

二、開發環境

macOS Monterey 12.3

Anaconda Jupyter Notebook 6.4.8

OpenCV 3.4.2

Python 3.7.11

 

三、實作方法

(1)

1.imread(path, cv2.IMREAD_GRAYSCALE)以灰階模式讀取圖像

2.fft.fft2() 進行傅立葉轉換

3.fft.fftshift() Centralize Spectrum

4.絕對值取log得到頻譜圖

5.angle()取得Phase Angle

6.以plt.show()顯示圖片

 

(2)

1.imread(path, cv2.IMREAD_GRAYSCALE)以灰階模式讀取圖像

2.利用GaussianBlur()取得結果

 

四、執行結果





2022年3月19日 星期六

s1071805 作業3

 

一、作業說明

撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) (a)利用 Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合成看似素描筆畫出的線條)

 

二、開發環境

macOS Big Sur 11.6

Anaconda Jupyter Notebook 6.4.8

OpenCV 3.4.2

Python 3.7.11

 

三、實作方法

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

1.imread(path, cv2.IMREAD_GRAYSCALE)以灰階模式讀取圖像

2.利用Sobel()分別取得x方向和y方向梯度

3.convertScaleAbs()函式將其轉回原來的uint8形式

4.再用addWeighted()x方向和y方向圖片等比重合併

(Sobel)


 

(b)素描線條的自畫像圖案

1.先將圖片做色彩反轉

2.使用GaussianBlur()divide()

3.呈現出素描線條的圖片



(Sketch)

 

4.另一個是用threshold()做二值化的結果

(threshold)

 

2022年3月8日 星期二

s1071805 作業2

 

一、作業說明

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

 

二、開發環境

macOS Big Sur 11.6

Anaconda Jupyter Notebook 6.4.8

OpenCV 3.4.2

Python 3.7.11

 

三、實作方法

1.mode=1是旋轉整張圖片 mode=2則是旋轉內切圓區域

2.利用trackbar可以控制圖片旋轉的角度

 

mode=1(旋轉整張圖片)

透過getRotationMatrix2D()得到旋轉矩陣、warpAffine()得到旋轉後的圖片

(圖片1)

 





mode=2(旋轉圓形的區域)

是使用bitwise_and()bitwise_not()得到中間的內切圓區域後再跟原圖疊加在一起

(圖片2)



2022年2月24日 星期四

s1071805 作業1

一、作業說明 

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

 二、開發環境 

macOS Big Sur 11.6 

Anaconda Jupyter Notebook 6.4.8 

OpenCV 3.4.2 

Python 3.7.11 

三、實作方法 

1.將圖片檔讀入後會判斷是灰階圖還是全彩圖像 

2.輸入調整的數值 

3.用if-else來判斷調整後的數值後如果大於255就等於255 小於0的值則等於0 

4.輸出結果 

四、執行結果 

原圖和亮度調整(+100) 



原圖和亮度調整(-100)



 

原圖和RGB影像改變R值(+150)



原圖和RGB影像改變R值(-150)