s1061637 作業6
主題 : Run-Length Based Image Compression 練習 作業要求: 附件中為三張利用將晶片高度以色彩視覺化後的圖片。 請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 (compression ratio) 。 開發環境: Windows 11 Vscode python Open CV 4.7 作業步驟說明: 1. 導入需要的程式庫。 2. 在 main function 中先行寫好要讀入的圖片路徑與規畫要完成的步驟。 l 將三張欲讀入的圖片路徑存為 image_paths ,壓縮後的檔案命命名為 compressed_img.npz 。 NPZ 格式是 NumPy 的壓縮存儲格式, 是壓縮的二進制文件,其內容由數個 NumPy 數組組成。 NPY format ref: numpy.lib.format — NumPy v1.24 Manual l 將解壓縮後的圖片儲存為 img_de.bmp ,方便後續比對。 l 對每一張圖片都進行以下操作:將檔案進行壓縮,並透過 compressed_files function 一邊壓縮文件,一邊暫時存起檔案的 size ,以方便後續解壓縮時 reshape 。 l 以 deccompress_image function 對剛剛壓縮完的檔案進行解壓縮, l 計算壓縮率,並將三張圖片的壓縮率進行加總,最後除以三 獲得平均壓縮率,在螢幕上顯示平均壓縮率。 3. compress_img( 圖片路徑,輸出名稱 ) :按照路徑讀入圖片並存起圖片的 shape 。將圖片的 bgr 通道透過 cv2 的 split 功能分離,並使用 np 的 flatten() ,將 array 攤成一維方便後續 run_lengh_encode 壓縮。將壓縮後的 np array 以 np.save_compressed 功能存成npz檔案。最後回傳圖片的 shape 。 4. ...