s1093309 作業6
Run-Length Based Image Compression 練習 附件中為三張利用將晶片高度以色彩視覺化後的圖片。 請設計一個基於Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 (compression ratio)。 作業環境: OS:windows10 Editor:Visual Studio 2019 Language:C++ Package:OpenCV - 4.7.0 程式說明: 1.首先,指定圖片的存放位置和檔案名稱格式。 2.使用迴圈依次讀取10張圖片。 3.對於每張圖片,讀取圖片並確認是否讀取成功。 4.將圖片轉換為壓縮前的位元組數組,並將其存儲在imageData向量中。 5.創建一個壓縮後的位元組向量compressedData,並初始化計數器count為1。 6.從圖片的左上角到右下角進行遍歷,對每個像素進行Run-Length編碼: *如果當前像素與前一個像素相同,增加計數器count。 *如果當前像素與前一個像素不同,將前一個像素的RGB值和計數器count存儲到compressedData中, 然後重新初始化計數器count。 7.將最後一個像素的RGB值和計數器count存儲到compressedData中。 8.將壓縮後的資料以二進制形式寫入到以".bin"為擴展名的壓縮檔案中。 9.讀取壓縮後的資料,並將其存儲到File_compressedData向量中。 10.解壓縮資料,將壓縮資料中的像素值和計數器進行還原,並將解壓縮後的像素值存儲到uncompressedData向量中。 11.創建解壓縮後的圖片File_img,並將uncompressedData中的像素值填充到圖片中。 12.將解壓縮後的圖片以BMP檔案格式儲存。 程式碼中使用了迴圈和條件語句來處理多張圖片,並且使用了OpenCV的imread函式讀取...