Matlab - JPEG压缩。霍夫曼编码

时间:2016-04-02 23:07:20

标签: matlab jpeg huffman-code

我一直在尝试在Matlab上实现JPEG压缩算法。 我实施上遇到问题的唯一部分是霍夫曼编码。我确实将DCT理解为量化和曲折的8x8矩阵。我也理解霍夫曼编码一般是如何工作的。 我不明白的是,在我有一个输出比特流和一个将连续位转换成原始形式的字典之后,我该如何处理输出?如何告诉计算机使用我为其创建的字典翻译输出比特流? 此外,每个8x8矩阵都有自己的输出和字典。如何将所有这些产出合二为一?因为在一天结束时,结果应该是一个图像。 我可能误解了一些步骤,在这种情况下,我为此引起的任何混淆道歉。 任何帮助都会非常受欢迎!

编辑:对不起,我的问题似乎还不够明确。假设我使用内置霍夫曼函数的Matlabs(huffmanenco和huffmandict),我应该如何处理huffmanenco返回的值? 关于输出字符串的部分原因并不清楚,只要霍夫曼编码在其他IDE和编程语言中也是如此。

1 个答案:

答案 0 :(得分:0)

霍夫曼编码有两种选择。

  1. 使用预装的霍夫曼表。
  2. 对第一遍生成霍夫曼表和第二遍编码的数据进行两次传递。
  3. 每个MCU都不能有不同的字典。

    你说你有运行长度编码值。你将霍夫曼编码并写入输出流。

    编辑:

    您需要确保matlab霍夫曼内核编码器与JPEG兼容。霍夫曼编码有不同的方法。

    您需要将编码器中的位写入JPEG流。这意味着您需要一个位级I / O例程。加上您需要将压缩数据中的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

    显示编码是如何完成的。