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個棋子











        

s1063314 影像處理作業7

   作業說明:

 題目:

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

開發環境:
  1. Windows10
  2. Visual Studio 2017
  3. OpenCV - 4.5.1
  4. C++ 
程式說明:

                 用erode&dilate做事前處理,findContours計算數量

    1. 讀取圖片成灰階圖
    2. 做二值化
    3. 做侵蝕&膨脹設定
    4. findContours來計算數量
    5. 存取圖片&輸出結果

執行結果:
圖1

圖2

圖3

結果

圖一(18/24) 圖二(29/31)圖三(31/31)





s1073319影像處理作業7

一、作業說明:

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

二、使用環境:

        - Windows 10

        - Visual Studio Code 

        - OpenCV

        -Nump

程式說明

1. imread讀取圖片,讀取時設為灰階圖

2. threshold將灰階圖二值化

3. 每個點減掉255將其反白

4. erode將圖片侵蝕

5. dilate將圖片膨脹

6. findContours計算出個數

結果:

圖1.



圖2.



圖3.










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