s1091433 作業6
主題:Run-Length Based Image Compression 練習
請設計一個基於Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。開發環境: MacOS +
VScode+ OpenCV 4.5.4+python
1.
cv2.split()分離圖片的bgr三通道並先用flatten()轉換成1d array,對他們分別做壓縮
2. RLE壓縮:從頭開始掃描整個array,如果當前的點跟前一個點的數值一樣count++,不一樣就在encode_data中寫入紀錄的count跟點的資料,兩個為一組數據做儲存
3. 把encode_data用savez_compressed()存成一個.npz壓縮檔
4.
還原壓縮檔只要把compress過程反著做就可以,把點的數值照著有幾個count寫回去即可
5.
壓縮結果
6.
壓縮率(原文件/壓縮後)
img1:14665254/1504995=9.7443812
img2:14665254/2292707=6.39647979
img3:14665254/1429634=10.2580479
留言
張貼留言