2011-02-08 70 views
6

我聽說Jpeg使用Hufman代碼。什麼是霍夫曼編碼?Jpeg編碼技術

+3

這就是霍夫曼編碼**。如果你使用它,第一個答案會讓你進入[維基百科頁面](http://en.wikipedia.org/wiki/Huffman_coding)。 – darioo 2011-02-08 10:03:25

回答

8

霍夫曼編碼是一種採用符號(例如字節,DCT係數等)並用根據統計概率分配的可變長度代碼對它們進行編碼的方法。經常使用的符號將使用僅佔用幾位的代碼進行編碼,而很少使用的符號由需要更多位來編碼的符號表示。

JPEG文件最多包含4個霍夫曼表,這些表定義了這些可變長度代碼(需要1到16位)和代碼值(它是8位字節)之間的映射關係。創建這些表通常包括計算每個符號(DCT代碼字)出現在圖像中的頻率,並相應地分配位串。但是,大多數JPEG編碼器只是使用JPEG標準中提供的哈夫曼表。有些編碼器允許優化這些表,這意味着創建了一個最佳二叉樹,可以生成更高效的霍夫曼表。

看一看http://www.cs.duke.edu/csed/poop/huff/info/一個更深的解釋

+1

非常感謝,另外一個問題,你提到的DCT係數是什麼? – 2011-02-08 19:49:52

7

只是爲了完成david99world給出了答案:

Huffman編碼只是在JPEG壓縮的最後步驟。重要的壓縮來自應用於DCT的量化矩陣。這是什麼?那麼,DCT變換隻是一種通過頻率顯示圖像信息的方法。

enter image description here

你將不得不與DCT係數的矩陣,示出頻率信息,在左上角集中的大多數信息:

enter image description here

代替具有這樣與像素值的矩陣的

現在您已經擁有了DCT係數,它實際上是一個壓縮步驟,它將所有的值除以基於人眼視覺的量化矩陣。這個矩陣將使那些包含與人眼無關的信息的係數爲零,並且將使幾乎相同的重要信息相同。

enter image description here

爲什麼這一步壓縮很重要?因爲現在你有很多的零,所以霍夫曼編碼將以小代碼字對大量的零進行分組,因此你正在節省存儲空間。

enter image description here

你可以嘗試計劃在Matlab整個算法,你會更好地理解它。請注意,如果您多次應用Q矩陣,則會有更多的壓縮(更多的零),但也會產生質量較差的圖像。

我希望這可以讓你的事情更清晰。