一、作業題目:
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案
二、開發環境:
ide:pycharm,anaconda 4.4.0
圖像處理:open-cv 4.4.0
語言:python 3.6
三、操作方法:
压缩:
- 將圖像文件img.bmp和程式碼compress.py處在同一文件目錄下
- 運行compress.py等待程式輸出跑完以後,會在該目錄下生成compress.1061448
解压缩:
- 將壓縮後文件compress.1061448和程式碼decompress.py處在同一文件目錄下
- 運行decompress.py等待程式輸出跑完以後,會在該目錄下生成decompress.bmp
四、實現方法:
压缩:
- 讀入img.bmp
- 將此圖像每一個行、列和RGB channel首尾相接視為一個一維整列
- 從第一個值到最後一個,記錄所有像素值連續出現的次數,整理並表示為[壓縮後陣列長度, 原圖像長, 原圖像寬, 原圖像channel數, 像素值1, 重複次數1, 像素值2, 重複次數2...]的格式。
- 以bw形式寫入compress.1061448中
解压缩:
- 讀入compress.1061448
- 提取長寬和像素值訊息
- 新建一個空的np陣列,並將像素值寫入
- 將該np陣列保存為decompress.bmp
五、最終效果:
1. 壓縮前:
沒有留言:
張貼留言