2016-04-02 152 views
0

我一直在嘗試在Matlab上實現JPEG壓縮算法。 我遇到麻煩的唯一部分是huffman編碼。我確實瞭解DCT進行量化和8字形矩陣的Z字形。一般來說,我也明白huffman編碼是如何工作的。 我不明白的是,在我有一個輸出比特流和一個將連續比特轉換爲原始格式的字典之後,我該如何處理輸出?我如何告訴計算機使用我爲它創建的字典來翻譯輸出比特流?另外,每個8x8矩陣都會有自己的輸出和字典。所有這些輸出如何組合成一個?因爲在一天結束時,結果應該是一個圖像。 我可能誤解了一些步驟,在這種情況下,我對此造成的任何困惑表示歉意。 任何幫助將非常appriciated!Matlab - JPEG壓縮。霍夫曼編碼

編輯:對不起,我的問題似乎還不夠清楚。假設我使用在huffman函數(huffmanenco和huffmandict)中構建的Matlabs,我應該怎樣處理huffmanenco返回的值? 只要huffman編碼在其他IDE和編程語言中使用,輸出字符串位的操作部分對我來說還不是很清楚。

回答

0

你有兩種選擇的霍夫曼編碼。

  1. 使用預罐頭的霍夫曼表。
  2. 對第一遍生成哈夫曼表和第二遍編碼的數據進行兩次傳遞。

對於每個MCU,不能有不同的字典。

你說你有運行長度編碼值。你huffman編碼這些並寫入輸出流。

編輯:

你需要確保MATLAB霍夫曼endocoder是JPEG兼容。有不同的方法來編碼huffman。

您需要將編碼器中的位寫入JPEG流。這意味着你需要一個比特級的I/O例程。 PLUS您需要將壓縮數據中的FF值轉換爲JPEG流中的FF00值。

我建議得到的

http://www.amazon.com/Compressed-Image-File-Formats-JPEG/dp/0201604434/ref=pd_sim_14_1?ie=UTF8&dpID=41XJBED6RCL&dpSrc=sims&preST=_AC_UL160_SR127%2C160_&refRID=1DYN5VCQQP0N88E64P5Q

副本顯示的編碼是如何完成的。

+0

首先,謝謝你的回覆。關於編碼的問題對於那些已經瞭解它的人來說似乎是非常基本的。我編輯它來澄清我的意思。 –