2016-04-02 180 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

首先,谢谢你的回复。关于编码的问题对于那些已经了解它的人来说似乎是非常基本的。我编辑它来澄清我的意思。 –