2021年7月4日 星期日

s1041413 影像處理作業4

 

作業說明:

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


環境:

windows:8.1

Visual Studio 2017

Open CV 4.3.0


實作方法:

imread讀取圖片檔案

imshow顯示圖片

cvtColor  rgb圖轉換 ycrcb

split通道分離

取出cr

GaussianBlur高斯濾波

threshold二值化

imwrite儲存圖片


執行結果:




s1041413 影像處理作業8

 

作業說明:

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

環境:

windows:8.1

Visual Studio 2017

Open CV 4.3.0

 

 

實作方法:

imread讀取圖片檔案

imshow顯示圖片

bilateralFilter去雜訊

adaptiveThreshold二質化

medianBlur 濾波

imwrite儲存圖片

 

執行結果:



s1041413 影像處理作業2

 

作業說明:

撰寫一個程式,讀取一張256 色灰階圖像 RGB 全彩圖像 (.bmp .jpg 圖像格式都可如 圖像 先將圖片由 RGB 轉換至 灰階 影像 利用 Sobel Operators 圖像邊緣 為基礎 ,設計一個類似素描線條自畫像程式。 如果可以分析邊緣偵測所得到的點,結合成線條方式呈現更佳。

 

環境:

windows:8.1

Visual Studio 2017

Open CV 4.3.0

 

 

實作方法:

imread讀取圖片檔案

imshow顯示圖片

sobel求出xy的梯度

addWeighted合併xy的梯度

255-dst  將相素反白

imwrite儲存圖片

 

執行結果:

左原圖,右結果



2021年6月21日 星期一

S1041470 影像處理作業6

 一、作業說明:


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


二、使用環境:


python3.8

spyder

windows 10

opencv4.5.0


三、方法:


壓縮:

讀入圖片

提取出需要的資料

進行run-length壓縮

再做run-length decoding

合併回原本圖片

執行結果

img1結果比較




img2結果比較


img3結果比較


img1壓縮率 = 2.46

img2壓縮率 = 1.42

img3壓縮率 = 2.68


平均壓縮率 : 2.18


s1041470 影像處理作業8


 

s1041470 影像處理作業7

 作業說明:

 題目:

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

開發環境:

  1. Windows10

  2. spyder

  3. OpenCV - 4.5.1

  4. python 

程式說明 :

  1. 讀取圖片成灰階圖

  2. 做二值化

  3. 做侵蝕erode()&侵蝕程度細調

  4. findContours來計算數量

  5. plt顯示結果與存取圖片

  6. 輸出計算的個數結果

 

執行結果:


s1073340 影像處理作業5

 開發環境:

    Visual Studio 2019
    Python3.8
    OpenCV 4.5.1

程式說明:

    用struct.unpack ()取得 width , height ,channel 
    32byte之後每4byte(float)分別struct.unpack並且存入list 
    找出list的min, max值
    將list改成array並用cv.reshape()轉成圖片的格式
    cv2.applyColorMap()轉成對應的顏色
    cv2.imwrite()輸出圖片

    








2021年6月20日 星期日

s1073340 影像處理作業7

 

開發環境

l   Windows 10

l   Visual Studio 2019

l   Python 3.8.3

l   OpenCV 4.5.1


程式說明

1.讀取圖片後改為灰階
2.圖片進行threshold二值化後將圖片黑白反轉
3.進行erode()和dilate()處理,將棋子特徵顯示
4.用findContours找出旗子輪廓並存在參數裡
5.得到棋子數量

程式結果:



s1070702 影像處理作業6

 作業說明

Run-Length Based Image Compression練習

附件中為三張利用將高度以色彩視覺化後的圖片。 請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)


作業環境

win10 + Spyder (Python 3.7) + OpenCV 4.5.1

實作方法

1.先讀取.bmp的header,把寬,高求出
2.對3個channel做run length encoding 運算並把長, 寬, channel數與run length encoding後的資料存在.encode裡


執行結果





s1070702 影像處理作業 5

作業說明

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


作業環境

win10 + Spyder (Python 3.7) + OpenCV 4.5.1

實作方法

1.二元檔方式讀入raw檔
2.width, height, channel 個別取出
3.剩下的部分用struct.unpack轉成float
4.找出除了invalid value 以外的最大值及最小值
5.將invalid value 換成最小值
6.調整範圍
7.輸出圖片

執行結果







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月18日 星期五

 作業說明:

 題目:

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

開發環境:

  1. Windows10

  2. spyder

  3. OpenCV - 4.5.1

  4. python 

程式說明 :

  1. 讀取圖片成灰階圖

  2. 做二值化

  3. 做侵蝕erode()&侵蝕程度細調

  4. findContours來計算數量

  5. plt顯示結果與存取圖片

  6. 輸出計算的個數結果

 

執行結果:


2021年6月15日 星期二

s1071754影像處理作業7

 一. 主題: 數學型態學影像處理應用 Morphological Image Processing


二、作業環境&語言

  •  python 3.7
  • matplotlib 3.3.4
  • openCV 3.4.2
  • numpy 1.18.5
  • windows 10 + pycharm 2021.1.1

三、方法&步驟

  1. 讀取圖片並轉灰階
  2. 先模糊化灰階照片再二值化
  3. 先erode()多次後再dilate()多次以取得明顯分開的棋子=>get mask
  4. 用findcoutours去找出所有棋子輪廓=> 找出所有棋子
  5. 用rectangle和puteText畫出棋子位置與編號
  6. 儲存結果與mask

五、執行結果

                                                        1.   找到21個棋子




2.找到27個棋子



3.找到30個棋子