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

2022年6月10日 星期五

s1073513 作業7

 

一、作業要求

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

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

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

二、程式說明

1. imread讀取圖片並儲存灰階

2. 圖片太大需resize圖片

4. 先erode侵蝕再dilate膨脹圖片

5. 用houghcircles()計算圓圈數

6. 最後用circle()畫出圓至原圖上

三、程式環境

Windows 10

Visual Studio 2019

OpenCV 3.4.6

 

四、執行畫面   


















2022年6月2日 星期四

s1073513 作業6

 

作業說明

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

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

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

開發環境

·                     Windows 11

·                     Visual Studio Code

·                     Anaconda 4.11.0

·                     OpenCV 4.5.5

程式說明

def RLE_encoding(img, bits=8,  binary=True, view=True):

獲取每個通道並將其視為灰度圖像並在其上應用 RLE。

將圖像轉換為二進製或按原樣使用。

然後將圖像轉換為平面,即一維向量。

從左到右掃描。

如果先前的值與當前值相同,則計算運行,否則附加(value, run)在編碼上。並且還要檢查運行長度,即如果它變成2**bits - 1然後附加它。如果它超過該值,那麼我們的值將在稍後四捨五入到 8 位範圍。

執行結果:



平均壓縮率:

TIFF: 9.875182079629367

NPZ: 1.470892777801373

2022年5月19日 星期四

s1073513 作業5

 1. 作業說明:

l   擷取指定圖片的黃色花瓣區域

2. 開發環境:

l   Windows 10

l   PyCharm 2019

l   OpenCV 4.5.5

l   Python 3.7

3. 實作方法:

n   imread將照片輸入

n   將影像轉成HSV

n   利用upper-bound, lower-bound抓取臨界值並用cv2.inRange()

n   將圖片去掉黃色以外的顏色

n   bitwise_and()產生結果

4. 實作結果:
















2022年4月14日 星期四

s1073513 作業 4

1.作業說明:

 

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

 

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

 

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

 

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

2. 開發環境:

Windows 10

OpenCV 4.5.5

Python 3.7

3. 實作方法:

(1)

•        先利用imread將照片輸入

 

•        由cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)函式進行傅立葉轉換

 

•        以np.fft.fftshift(dft)將输出的零頻率分量移到中心

 

•        extract magnitude and phase images : cv2.cartToPolar(dft_shift[:,:,0], dft_shift[:,:,1])

•        get spectrum : np.log(mag) /20

(2)

•        參考PIL原始檔的ImageFilter.py

•        高斯的計算公式: res1=1/(2*math.pi*self.sigema*self.sigema)

•                            res2=math.exp(-(x*x+y*y)/(2*self.sigema*self.sigema))

4.結果:

• (1)


•        


•        


•         (2)






2022年3月24日 星期四

s1073513 作業 3

 作業說明: 

主題: 線條自畫像(二值化與邊緣偵測Image Thresholding and Edge Detection)

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

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

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

開發環境:

l   Windows11

l   Visual Studio 2019

實作方法:

(1.) 利用 imread("img", IMREAD_GRAYSCALE)讀取灰階圖片



(2.) mat x y 座標的圖,並利用sobel抓取xy軸的圖像

                                                                                        X軸:


Y軸:




(3.)再利用addweight將圖像合併。

(4.)利用cv2.THRESH_BINARY_INV模式將圖片二值化。



2022年3月11日 星期五

s1073513 作業 2

 

1. 作業說明:

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

2. 開發環境:

 

o                  Windows 10

 

o                  Visual Studio 2019

 

o                  OpenCV4.5.5

 

3. 程式流程:

1.跳出兩個視窗數字一為整張圖旋轉;二為中心內切圓的選轉圖

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

3.內切圓切割方法為先以中心為基準切出一個內切圓,切完之後會有一個內切圓還有內切圓以外的圖片,旋轉內切圓的圖片,並且合併內切圓以外的圖片,即可完成

4. 執行結果: