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