【问题标题】:Matlab - JPEG Compression. Huffman EncodingMatlab - JPEG 压缩。霍夫曼编码
【发布时间】:2016-04-02 23:07:19
【问题描述】:

我一直在尝试在 Matlab 上实现 JPEG 压缩算法。 我唯一难以实现的部分是霍夫曼编码。我确实将 DCT 理解为 8x8 矩阵的量化和之字形。一般来说,我也了解霍夫曼编码是如何工作的。 我不明白的是,在我有一个输出位流和一个将连续位转换为其原始形式的字典之后,我该如何处理输出?我如何告诉计算机使用我为它创建的字典来翻译该输出比特流? 此外,每个 8x8 矩阵都有自己的输出和字典。如何将所有这些输出合并为一个?因为归根结底,结果应该是图像。 我可能误解了某些步骤,在这种情况下,对于由此造成的任何混淆,我深表歉意。 任何帮助都会非常感激!

编辑:对不起,我的问题似乎还不够清楚。假设我使用内置霍夫曼函数(huffmanenco 和 huffmandict)的 Matlabs,我应该如何处理 huffmanenco 返回的值? 就哈夫曼编码在其他 IDE 和编程语言中的应用而言,我还不清楚如何处理输出的位字符串。

【问题讨论】:

    标签: matlab jpeg huffman-code


    【解决方案1】:

    霍夫曼编码有两种选择。

    1. 使用预制的霍夫曼表。
    2. 对数据进行两次遍历,第一遍生成霍夫曼表,第二遍编码。

    每个 MCU 不能有不同的字典。

    你说你有游程编码值。你霍夫曼编码这些并写入输出流。

    编辑:

    您需要确保 matlab huffman 编码器与 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

    显示编码是如何完成的。

    【讨论】:

    • 首先,感谢您的回复。对于那些已经了解它的人来说,我关于编码的问题可能看起来非常基本。我对其进行了编辑以阐明我的意思。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多