壓縮算法
簡介
壓縮算法是通過去除冗余信息來達到的,在圖像壓縮算法中一般是通過去除編碼冗余、像素間冗余、心理視覺冗余這三者之間的一個或多個來完成的。
編碼冗余:當所用碼字大于最佳編碼長度的時候出現的冗余
像素間冗余:因為圖像數據間是存在相關性的,所以像素間的數據可以通過一定的表達式來進行轉換從而達到數據壓縮的目的
心理視覺冗余:也就是視覺上不重要的信息,因為人眼對色彩信息的敏感度是有限的
在圖像壓縮算法中可以采用哈夫曼編碼的方式對編碼冗余的信息進行壓縮,可以采用預測的方式來減少像素間冗余,可以采用量化的方式完成心理視覺冗余信息的去除
圖像壓縮方法按照壓縮后的圖像數據能否恢復為原圖像可以分為兩種壓縮算法
有損壓縮
無損壓縮
有損壓縮技術在圖像壓縮之后會有信息的損失,也就是信息熵的減少,從而導致壓縮后的圖像不能完整的恢復為原始圖像,比如采用DCT、FFT的方式對數據進行處理。無損壓縮技術在圖像壓縮的過程中不會有信息的丟失,所以壓縮后的圖像可以完整的被恢復為原始數據。
圖像壓縮的過程如下圖所示
其中映射變換器是將原始輸入圖像進行變換從而降低像素間的冗余,通常進行變換后的數據是不可以直接進行顯示的。量化器根據預定義的逼真度標準來減少映射變換器輸出的精確性,以便試圖去除心理視覺的冗余信息,這個過程是不可逆的,也是區分無損壓縮和有損壓縮的關鍵步驟,如果在量化的過程中有信息的丟失,那么就是有損壓縮,若量化過程中沒有信息的丟失那么就是無損壓縮,最后的編碼器用于減少編碼冗余。
常見的壓縮算法有:DEFLATE、LZW、JPEG、JPEG 2000、JPEG LS等。
圖像編碼方法
常見的圖像編碼方法有三種
預測編碼
統計編碼
變換編碼
預測編碼
圖像相鄰的元素之間有很高的相關性,預測編碼就是利用圖像相鄰元素之間時間和空間上的相關性進行編碼。通過待編碼數據的相鄰數據來推斷當前待編碼數據的預測值,然后計算預測值和實際值之間的差值,最后對差值進行編碼。JPEG LS就使用了這種方式來提高編碼效率。
統計編碼
統計編碼是通過對數據進行統計之后,將出現概率大的數據用較少的位寬來表示,出現概率小的數據用較大的位寬來表示,從而使得平均碼字長度盡可能的短來達到數據壓縮的目的。在不同的壓縮算法中使用的統計編碼方式不太相同,比如在JPEG算法中在哈夫曼編碼的方式降低平均碼字長度,在JPEG LS算法中則采用的是Golomb-Rice編碼和游程編碼的方式。
變換編碼
變換編碼是指將空間域描述的數據變換到頻域從而減少圖像像素間的相關性,常用的方法有離散余弦變換(Discrete Cosine Transform, DCT),離散傅里葉變換(Discrete Fourier Transform, DFT),小波變換(Wavelet Transform)等。在JPEG 2000中采用了DWT的方式來進行變換編碼。
審核編輯:黃飛
-
FPGA
+關注
關注
1626文章
21678瀏覽量
602006 -
變換器
+關注
關注
17文章
2087瀏覽量
109151 -
圖像壓縮
+關注
關注
1文章
60瀏覽量
22373 -
壓縮算法
+關注
關注
1文章
21瀏覽量
10488
原文標題:FPGA壓縮算法(一) -- 簡介
文章出處:【微信號:FPGA開源工坊,微信公眾號:FPGA開源工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論