圖像壓縮-JPEG算法介紹

關鍵字 :JPEG二維離散餘弦變化

在圖像傳輸過程中,為了有效的傳輸圖像,降低圖像數據所需帶寬,因此會對圖像數據進行壓縮,依據圖像保真度,圖像壓縮可以分為無損壓縮和有損壓縮。無損壓縮一般是把圖像數據壓縮到原本數據的1/2~1/4,常見的無損壓縮的圖像格式有:BMP、PNG、GIF。有損壓縮會將圖像信息量減少,前後圖像數據不一致,因此圖像質量會下降,常見的有損壓縮的圖像格式有:JPEG、WebP。

此篇博文著重介紹有損壓縮中的JPEG算法。

JPEG

JPEG算法壓縮後的圖像後綴一般為.JPG或者.JPEG,二者實質相同。

『通常中我們所見到的圖像一般是三通道(R、G、B)或者四通道的圖像(R、G、B、Alpha),四通道圖像只有PNG格式能夠支持。

JPEG算法採用的是YUV顏色空間,其中“Y”表示亮度,“U”和”V”表示色度,YUV的作用是描述影像色彩及飽和度,用於指定像素的顏色。因為人眼對圖像亮度敏感,而對色度不那麼敏感,因此可以在UV空間上減少信息。』(注1)

RGB轉換為YUV空間的轉換算法為:

Y = 0.299 R + 0.587 G + 0.114 B

U = - 0.1687 R - 0.3313 G + 0.5 B + 128

V = 0.5 R - 0.4187 G - 0.0813 B + 128

JPEG算法採用4:2:0的方式採樣,也就是2:1水平方向採樣,2:1垂直方向採樣,即每四個Y共用一組UV。因為人眼對於高頻分量不是很敏感,因此可以通過離散餘弦變換(DCT)分析出其中的高低頻分量,進一步壓縮數據。

二維離散餘弦變換公式為:

 

由上離散餘弦變化生成8*8的矩陣,去除高頻分量。由此8*8矩陣除以JPEG算法提供的標準係數矩陣,後取整,如下圖1所示。




圖1 JPGE標準化係數矩陣

經過上述步驟後得到的矩陣進行ZIGZAG排序,排序方式如下圖2所示:


 

圖2 ZIGZAG排序

最後通過對得到矩陣進行編碼並按照JPEG格式存儲,即可得到jpg格式的圖像文件。

 

Q&A

Q:JPEG壓縮算法對於圖像還原性如何?

A:因為JPEG是有損壓縮,且數據已經改變,因此是無法還原原始圖像,同時因為壓縮率較高的因素,可能存在圖像模糊的問題。

 

Q:目前圖像壓縮算法中有沒有更好的圖像壓縮算法,且傳輸速度更快的?

A:目前在針對高PPI、高刷等移動端方面有著更好的VESA壓縮算法,傳輸速度更快,切實無損壓縮,以Novatek的OLED drive IC NT37XXX系列,對於VESA算法的使用已經十分成熟。

 

Q:YUV算法除了4:2:0採樣還有什麼採樣嗎?

A:YUV的採樣方式有:

4:4:4表示完全取樣。

4:2:2表示2:1的水平取樣,垂直完全採樣。

4:2:0表示2:1的水平取樣,垂直2:1採樣。

4:1:1表示4:1的水平取樣,垂直完全採樣。

 

Q:為什麼會用到YUV採樣方式?

A:因為為了兼顧彩色電視與黑白電視,降低所需的信道帶寬。

 

Q:圖像壓縮比計算方式是怎樣的?

A:壓縮比=壓縮前所占空間大小/實際所占空間大小



註1:作者:Vinegar �;出處:https://blog.csdn.net/VinagerJoe/article/details/129023880

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

false: https://blog.csdn.net/VinagerJoe/article/details/129023880

評論