顯示具有 1092hw6 標籤的文章。 顯示所有文章
顯示具有 1092hw6 標籤的文章。 顯示所有文章

2021年6月20日 星期日

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裡


執行結果





2021年6月13日 星期日

s1071515 影像處理作業7

作業說明

請撰寫一個程式,利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。
a.     請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖。
b.    程式不一定可以算出正確棋子數量,越接近正確答案越好!

操作環境

Windows 10
Visual Studio 2019
OpenCV 4.5.2
Python 3.9

程式說明

1. 把圖片轉成灰階並讀取
2. 把圖片二值化並把黑白顏色反轉
3. 用erode()和dilate()把棋子處理成合適大小
4. 用findContours()處理旗子輪廓並存在hierarchy參數裡
5. 用len(hierarchy[0])得到圖片裡輪廓的數量


實作結果

實際:24   計算:21
實際:31   計算:31
實際:31   計算:31





2021年6月7日 星期一

s1071816影像處理作業6

 作業說明:

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

使用環境:

python3.7
openCV 4.5.1
windows 10
VS2019

作業說明:

1.f.seek(18)直接跳到長寬的位址

2.f.read(4),struct.unpack各讀取長寬

3.cv2.split分割rgb

4.使用RLE各壓縮BGR

5.開一個list將資料依序存進去

6.存檔

執行結果:

 



img1壓縮率=7885/14322*100%=55%
img2壓縮率=13467/14322*100%=94%
img3壓縮率=7314/14322*100%=51%

img1
Newimg1


img2

Newimg2




img3

Newimg3
















s1071515 影像處理作業6

作業說明

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

操作環境

Windows 10
Visual Studio 2019
OpenCV 4.5.2
Python 3.9

程式說明

1. 讀取圖片的長、寬和channel
2. 對3個channel做run length encoding 運算並把長, 寬, channel數與run 
    length encoding後的資料存在.encode裡
3. 讀取.encode, 並將每個channel的資料並用row*col還原成原本的圖片
    並輸出


實作結果

       img1壓縮率:7885/14322(KB) = 55.05%
       img2壓縮率: 13467/14322(KB) = 94.03%                   
       img3壓縮率: 7314/14322(KB) = 51.06%
       平均壓縮率(55.05% + 94.03% + 51.06%) = 66.71%

1071215 影像處理作業6

作業說明:

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

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

開發環境:

Window 10、Anaconda Navigator 2.0.1、Spyder 5.0.0、OpenCV 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,b的list各自串接,存成.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%



原圖


壓縮後的圖

 



1073321 影像處理作業6

 

作業說明

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

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

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

開發環境


Window10/opencv4.5.2.52/python3.6

程式過程

ENCODE:
首先讀取圖片,用split分開RGB
再分別做RLE,

DECODE:
做解碼,然後用merge合併起來,輸出。



img1:
前:


後:
壓縮率:7963/14322*100%=58%

img2:
前:

















後:
















壓縮率:13901/14322*100%=97%

img3:
前:
















後:
















壓縮率:7963/14322*100%=55%

s1063320 影像處理作業 6

 1.作業說明:

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

2.開發環境:

Windows 10

Visual Studio 2017

Python

OpenCV 4.5.1

3.程式說明:

1.打開檔案

2.把三维图像降维为一维列表

3.二值化操作

4.encode

5.write()寫出壓縮後的.3320檔

6.decode

7.imwrite()寫出圖片


4.輸出:

壓縮效率:

2.40/13.9 =0.17



3.96 /13.9=0.28



3.79/13.9=0.27



平均:(0.17+0.28.0.27)=0.24

2021年6月6日 星期日

s1073804 影像處理作業6

 1. 作業題目:Run-Length Based Image Compression

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

2. 開發環境&語言:

  • macOS Big Sur 11.2.3
  • Visual Studio Studio 2019
  • OpenCV - 4.5.1
  • python 3.9.4
  • numpy-1.20.1
3. 說明:
  1. 讀取:imread('bmp檔') 
  2. 取出width, height, size
  3. 透過cv2.spilt( ) 得到 (B, G, R ) 三通道
  4. 再reshape成一維陣列
  5. R,G,B 各個都要用RLE的方式去壓縮
  6. 再用np.concatenate( )去合併RLE壓縮完的R,G,B
  7. 再寫入img_.bmp.學號的空白檔案裡
  8. 用本來寫RLE的方式倒回去寫
  9. 再創一個2維陣列填入
  10. 再以img_.學號.bmp的檔名輸出
4.輸出:
    
                                              壓縮率:14665254/3412083=3.85311036
                            

壓縮率:14665254/6672178=2.19797104


                                            壓縮率:14665254/3412083=4.29803554


                           平均壓縮率:(3.85311036+2.19797104+4.29803554) / 3 ≈ 3.45




s1071754 影像處理作業6

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


二、作業環境&語言

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

 

三、方法&步驟

  1. 讀取bmp檔案
  2. 取出寬和高,以及每個pixel的RGB值
  3. RGB三值分開儲存(才可使Run-Length方法有效壓縮)
  4. 將長寬及壓縮後的RGB三條list接再一起並儲存為dat檔
  5. 對比原圖取得壓縮率

五、執行結果


                                image1 壓縮率約等於0.68 => 10,200,725 / 14,665,254





image2 壓縮率約等於0.6 => 8,817,367 / 14,665,254 




image3 壓縮率約等於0.63 => 9,527,097 / 14,665,254 











s1061410 影像處理作業6

 作業說明:

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

開發環境:

    Windows 10

    python 3.7

    OpenCV 4.5.1

程式說明:

    1.讀取bmp檔

    2.使用 cv2.split()分離出rgb各通道

    3.取圖片長寬

    4.用Run-length encoding來設定rgb三通道的list

    5.將長寬與三通道的list存入:檔名.1061410

輸出:

    img1壓縮率:13.9/7.68 = 1.81

    img2壓縮率:13.9/13.1 = 1.06

    img3壓縮率:13.9/7.68 = 1.95

    平均壓縮率:(13.9/7.68+13.9/13.1+13.9/7.12)/3 = 1.61