JPEG解碼——(3)文件頭解析

  與具體的編碼數據空間相比,jpeg文件頭佔據很是小乃至能夠忽略不計的大小。html

  仍然拿JPEG解碼--(1)JPEG文件格式概覽中的《animal park》這張圖片來舉例,從跳過SOS(FF DA)的TAG開始——0x153,工具

就真正進入了編碼數據區域,以下圖所示:post

  其佔據的比例爲:0x153/0x9721 = 339/38689 = 0.876%,還不到1%,其餘jpeg圖片也是相似狀況。編碼

  可是,就是這麼小的數據區域,倒是相當重要的地方,某些關鍵的地方一個字節出錯了的話,解碼就會出錯(例如huffman tableurl

中數據),或者重建出的yuv圖像異常(例如quantization table中數據)!spa

  本篇博客主要介紹jpeg頭信息解析,其中除了huffman table重建較複雜外,其餘TAG的解析都比較容易。3d

1. APP0——FF EOorm

  先貼出這段區域:htm

  從ASCII值能夠看出,保存了JFIF——JPEG File Interchange Format(JPEG文件交換格式),後面的幾個字節應該是version信blog

息吧,沒深究。

2. DQT——FF DB

  量化表有兩個,上面貼圖只高亮了其中一個表。

  從offset=0x16開始的兩個字節(0x00 43)爲這段區域的size=67,後面的一個字節爲表的ID——0x00=0(能夠看到第二張表中對

應位置offset=0x5D處爲0x1)。

  跳過前面三字節從offset=0x19處開始的64字節,即爲量化表中量化值。其中須要說明的是,量化值是固定爲64字節的,由於按8X8

進行DCT變換的。

  工具解析的結果以下:

  須要補充兩點:

  A.亮度信號的Y份量使用DQT表一,UV份量使用表二。

  B.亮度信號一般採用細量化(量化值較小),對應位置處,表一一般比表二值要小。此量化緣由是人眼對亮度信號比較敏感,採用顆粒度

較細來量化,細量化引入的一個問題會消耗更多的數據空間。

3. SOF——FF C0

  在該JPEG解碼系列中第一篇已經詳細介紹過了,再也不贅述。工具解析以下:

4. DHT——FF C4

  共有四張表,上面只貼出第一張表。

  DHT表的重建有些複雜,涉及底層更多關於數據壓縮領域的知識,能夠參考「範式霍夫曼編碼」相關材料,本博文再也不作介紹該編碼原理。

相關文章
相關標籤/搜索