s1081540 作業 6
主題:Run-Length Based Image Compression 練習 作業說明 附件中為三張利用將晶片高度以色彩視覺化後的圖片。 請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。 開發環境 Windows 10 OpenCV 4.2.0 Visual Studio 2019 C++ 程式實作 使用 imread() 讀入附件中的圖像,再使用 empty() 判斷圖片是否存在,若圖像讀取失敗會輸出錯誤訊息並結束程式。 split() :將彩色圖像拆分為3個單一通道(B、G、R)。 分別對3個單一通道(B、G、R)進行Run-Length編碼壓縮。 Run-Length Encoding:將連續重複的資料改以兩個部份來表示,第一個byte代表顏色(0~255),第二個byte代表該顏色連續出現的次數。 將壓縮後的資料寫入txt文字檔。 txt文字檔的內容包含:影像的列數、影像的行數、B通道的壓縮資料、G通道的壓縮資料、R通道的壓縮資料。 imshow() :顯示原圖及經過膚色檢測後的圖像。 計算壓縮率。 資料壓縮比 = 壓縮前的資料量大小 / 壓縮後的資料量大小。 輸出影像的列數、影像的行數、原來的檔案大小、壓縮後的檔案大小、壓縮率。 waitKey(0) :透過使用者輸入0來中止程式。 執行結果 img1 ▲ img1圖像及原始檔案大小 ▲ 將img1壓縮後的文字檔部分內容及 壓縮後的檔案大小 ▲ 輸出結果 img2 ▲ img2圖像及原始檔案大小 ▲ 將img2壓縮後的文字檔部分內容及 壓縮後的檔案大小 ▲ 輸出結果 img3 ▲ img3圖像及原始檔案大小 ▲ 將img3壓縮後的文字檔部分內容及 壓縮後的檔案大小 ▲ 輸出結果 壓縮率 img1壓縮率 = 2.070107752429847 img2壓縮率 = 1.213333514247755 img3壓縮率 = 2.239885522678505 平均壓縮率 = ( 2.070107752429847 + 1.21333351424775...