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

2021年6月11日 星期五

s1061439 影像處理作業7

作業說明

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

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

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

操作環境

Windows 10

Python 3.8.5

openCV 4.5.1

matplotlib 3.4.1

numpy 1.19.5


實作方法

  • 讀檔
  • 將影像二值化
  • 利用erosion將影像侵蝕消除雜訊
  • 利用dilation將影像膨脹還原
  • 利用findcounters找出圖形邊緣,並列印出棋子個數

執行結果


IMG_5702




IMG_5703



IMG_5704











2021年6月6日 星期日

s1061439 影像處理作業6

作業說明

請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)

操作環境

Windows 10

Python 3.8.5

openCV 4.5.1

matplotlib 3.4.1


實作方法

RLE Encode
  • 讀取照片
  • 利用split將RGB通道各別取出
  • 以RLE方式壓縮,分別處理每一個通道裡面的值 (e.g. 0002335 就要換成 30122315 )
  • 將圖片的圖片大小、長、寬、channel及壓縮結果合併為一個list
  • 將一維的list寫入bin file中
RLE Decode
  • 讀檔
  • 將檔案復原成一個一維的list
  • 將list的資料還原成圖片大小、長、寬、channel及R通道、G通道、B通道等資料
  • 利用merge合併RGB通道

執行結果

img1.bmp解壓縮還原後

img1壓縮率 = (4.08/13.9)*100% = 29.35%


img2.bmp解壓縮還原後

img2壓縮率 = (6.80/13.9)*100% = 48.92%


img3.bmp解壓縮還原後

img3壓縮率 = (3.90/13.9)*100% = 28.05%


平均壓縮率 = ((4.08+6.80+3.90)/13.9*3)*100% = 35.44%














2021年5月17日 星期一

s1061439 影像處理作業5

作業說明

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

操作環境

Windows 10

Python 3.8.5

openCV 4.5.1

matplotlib 3.4.1


實作方法

  • 利用struct.unpack分別將header的32byte資料切開
  • 持續利用struct.unpack將最後的pixel部分存入list,-99999的部分則用空值代替
  • 找出list中的最大值及最小值
  • 利用最大值及最小值算出每個pixel在0~255之間的分布
  • 利用reshape將list轉為圖片
  • 將圖片視覺化

執行結果

以下的圖片順序為:原圖、灰階圖、視覺化圖

02.bmp


08.bmp


10.bmp

2021年5月16日 星期日

s1061439 影像處理作業4

作業說明

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

操作環境

Windows 10

Python 3.8.5

openCV 4.5.1

matplotlib 3.4.1


實作方法

方法一:YCrCb

  • 使用cvtColor將圖片轉為YCrCb color space
  • 將圖片利用cv2.split分為y、cr、cb三個通道
  • 對cr通道進行膚色偵測,判斷膚色範圍

方法二:Cr + Otsu

  • 使用cvtColor將圖片轉為YCrCb color space
  • 將圖片利用cv2.split分為y、cr、cb三個通道
  • 使用cv2.threshold對cr通道進行otsu處理
  • 對cr、cb通道進行膚色偵測,判斷膚色範圍

方法三:HSV

  • 使用cvtColor將圖片轉為HSV color space
  • 將圖片利用cv2.split分為h、s、v三個通道
  • 對h、s、v通道進行膚色偵測,判斷膚色範圍

執行結果

原圖

YCrCb

Cr+Otsu

HSV









2021年5月2日 星期日

1061439 影像處理作業 3

作業說明

撰寫一個程式,讀取一張 256 色灰階圖像。 
(1)計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階 256 色圖像 方式呈現出。 
(2)對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。

操作環境

Windows 10
Python 3.8.5
openCV 4.5.1
numpy 1.20.2
matplotlib 3.4.1

實作方法

1.讀取圖片
2.將圖片轉為灰階
3.利用np.fft.fft2()進行二維傅立葉轉換
    呼叫fftshift()函式轉移中心點到中間位置
4.利用np.abs()輸出頻譜圖
5.利用np.angle()輸出相位圖
6.使用GaussianBlur()模糊影像

執行結果

原圖


轉灰階


頻譜圖

相位圖

Gaussian Low-Pass filter