首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >霍夫曼vs.

霍夫曼vs.
EN

Stack Overflow用户
提问于 2018-01-05 19:41:07
回答 1查看 294关注 0票数 0

我有自己的JPEG实现。它只使用了Huffman,直到我发现了ANS,我也实现了ANS。我使用这两种算法压缩的测试图像产生了以下压缩比:

霍夫曼: 10.48x

ANS: 10.56x

事实上,ANS被证明是更好的,但只是稍微好一点。我不是压缩专家,但我读到ANS应该比哈夫曼编码更好,比如算术编码,基于这个https://en.wikipedia.org/wiki/JPEG的应该是5-7%。在我的例子中,改进只有1%。这是我应该预料到的吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-06 00:21:46

JPEG标准指定了算术编码器(QM-编码器),但实现通常不支持它。这使你的压缩比Huffman好10%左右。使用jpegtran,您可以在不同的编码方法之间进行转码。

至于为什么用自定义的ANS后端替换默认的Huffman没有太多帮助-可能是建模,可能是头部的大小与有效负载的大小,也可能是其他的东西。

用于8位输入的DCT系数的大小可以高达+-2048 (DC),并且这些系数被霍夫曼编码为8位RRRRSSSS符号。只对系数的大小(4位SSSS部分)进行哈夫曼编码,并在不建模的情况下存储低阶位。如果只有编码器被替换,而其他部分没有变化,那么任何改进都仅限于霍夫曼编码部分。

此外,更精确的编码器需要更精确的概率。发送ANS报头总是要比等效的规范发送的霍夫曼码长花费更多的成本。如果没有足够的数据来抵消报头的大小,结果可能是净损失。

还有一个与“数据不足”相反的问题。如果输入数据不是均匀分布的,概率可能会混淆在一起,这给编码效率带来了硬限制。QM-编码器是自适应的,没有这个问题。在这种情况下,静态编码器需要更频繁地重新启动流。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48112920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档