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

2021年6月19日 星期六

s1071215 影像處理作業5

 

作業說明:

附件中的讀.row晶片設計的高度檔案,設計人員無法直接看到相關資訊。利用你所學的Color顏色的知識與處理技術,撰寫一個程式來讀取附件中的讀.row 檔案,將高度資料以圖片(顏色)視覺化呈現出來,讓設計人員可以看到高度相關資訊。

開發環境:

Window 10Anaconda Navigator 2.0.1Spyder 5.0.0OpenCV 4.0.1

程式說明:

  1. open讀取.raw
  2. unpack取得圖片的width, height, channel
  3. 4byte分別unpack並且存入list
  4. 找出list中的minMax
  5. min值取代-99999.0
  6. list轉換成array並reshape轉換成圖片
  7. 利用array的值變換0~255
  8. 利用applyColorMap轉換成對應的顏色
  9. imwrite輸出結果圖片。

程式執行畫面及結果:

02原圖

02視覺化後的灰階圖片

02灰階轉換成RGB

08原圖

08視覺化後的灰階圖片

08灰階轉換成RGB

10原圖

10視覺化後的灰階圖片

10灰階轉換成RGB

















2021年6月15日 星期二

s1071215 影像處理作業7

 

作業說明:

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

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

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

開發環境:

Window 10Anaconda Navigator 2.0.1Spyder 5.0.0OpenCV 4.0.1

程式說明:

  1. imread()讀取圖片
  2. 將圖片轉為灰階
  3. 進行高斯模糊
  4. 進行threshold二值化處理
  5. 將圖片進行erode()和dilate()處理,使用適當的iterations
  6. 利用findContours獲取輪廓
  7. 計算棋子的數量
  8. print結果並以imwrite()將圖像結果輸出。

程式執行畫面及結果:


程式結果

test1 原圖24 測試結果24
test2 原圖31 測試結果29
test3 原圖31 測試結果31








2021年6月7日 星期一

s1071215 影像處理作業8

 作業說明:

請寫一個程式將附圖二值化後輸出黑白圖像。目的是將文字與背景分離。


原圖


結果


1071215 影像處理作業6

作業說明:

附件中為三張利用將高度以色彩視覺化後的圖片。請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。

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

開發環境:

Window 10Anaconda Navigator 2.0.1Spyder 5.0.0OpenCV 4.0.1

程式說明:

rle_輸出.py

  1. imread()讀取圖片
  2. split()切分成r,g,b通道
  3. flatten()r,g,b轉成1維陣列
  4. 利用Run-Length計算,依序以(數值,個數)的方式存入list
  5. 分別將r,g,blist各自串接,存成.dat檔。

rle_還原.py

  1. opem()讀取.dat
  2. r,g,b資訊存入list
  3. 利用Run-Length計算解碼還原
  4. np.array()list轉換成uint8存入array
  5. reshape()array轉成(height, width, channel)
  6. merge()r,g,b合併成圖片
  7. imwrite()將結果輸出。

程式執行畫面及結果:

Img1壓縮率:7.7/13.9*100% = 55.40%



原圖


壓縮後的圖

Img2壓縮率:13.1/13.9*100% = 94.24%



原圖

壓縮後的圖

Img3壓縮率:7.14/13.9*100% = 51.37%



原圖


壓縮後的圖

 



2021年5月16日 星期日

s1071215 影像處理作業4

 作業說明:

利用你所學的Color顏色的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。

開發環境:

Window 10
Anaconda Navigator 2.0.1
Spyder 5.0.0
OpenCV 4.0.1

程式說明:

本作業使用Cr+OSTUYCrCb範圍選取與HSV範圍篩選三種方式進行膚色檢測。

Cr+OSTU

  1. imread("test.jpg"),讀入圖片(test.jpg
  2. RGB轉換成YCrCb,拆分出Y,Cr,Cb
  3. Cr單獨進行OTSU處理
        YCrCb範圍選取
  1. RGB轉換成YCrCb,拆分出Y,Cr,Cb
  2. 利用迴圈對每個像素進行判斷是否在膚色範圍內
  3. 135 < Cr < 18085 < Cb < 135為判斷條件

HSV範圍篩選

  1. RGB轉換成HSV,拆分出h,s,v
  2. 建立HSV範圍為 0< H < 3030 < S < 15050<V<255進行篩選

利用imwrite將結果輸出。

執行結果:

原圖


使用Cr+OSTU做膚色偵測





使用YCrCb做膚色偵測





使用HSV做膚色偵測









2021年5月2日 星期日

s1071215 影像處理作業3

 

作業說明:

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

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

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


開發環境:

Window 10Anaconda Navigator 1.9.12Spyder 4.0.1OpenCV 3.4.2


程式說明:

  1. imread("test.jpg", 0),讀入圖片(test.jpg),將圖片直接以灰階讀入
  2. 利用dft()進行離散傅立葉轉換
  3. np.fft.fftshift()將頻譜從左上角移動至中心位置
  4. magnitude()phase()求頻譜圖與相位圖
  5. plt.imshow()顯示圖片結果。
  6. 使用GaussianBlur()取得平滑後圖像
  7. plt.show()顯示圖片結果。

原圖
傅立葉轉換

高斯平滑後結果
最終結果






 

2021年3月28日 星期日

s1071215 影像處理作業2

 

作業說明:

撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp .jpg 圖像格式都可,如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基礎,設計一個類似素描線條自畫像程式。

開發環境:

Window 10Anaconda Navigator 1.9.12Spyder 4.0.1OpenCV 3.4.2

程式說明:

  1. imread("test.jpg", 0),將圖片直接以灰階讀入
  2. 運用Sobel運算子處理X軸與Y
  3. 將得到的結果使用addWeighted函式結合
  4. 255-像素值,得到黑白反轉的圖片
  5. 以閾值threshold=200對圖片做二值化處理
  6. 利用findContours獲得輪廓
  7. 使用drawContours繪製輪廓在白色畫布上
  8. imwrite儲存圖片結果

程式執行畫面及結果:

原圖

X軸做處理


Y軸做處理

將X軸Y軸結合


將黑白反轉


將圖片二值化處理

將獲得的輪廓繪製在白色畫布上