【问题标题】:How are code lengths limited to 16 bits at maximum in JPEG?JPEG 中的代码长度如何限制为最大 16 位?
【发布时间】:2017-12-25 10:35:12
【问题描述】:

根据描述 JPEG 格式的 ITU T.81,BITS 存储“代码长度计数”。它的创建在规范的附录 K 图 K.2 中进行了描述。 JPEG 规范期望存在的符号在执行编码时需要长达 32 位的霍夫曼代码。但是,当对数据进行编码时,它将霍夫曼代码长度限制为最大 16 位。为此,代码长度必须限制为 16 位。该程序包含在附件 K 图 K.3 中,如下所示:

我的问题是,当我们执行 BITS(I)-2 和 BITS(I)-1 时,BITS 也会有负值吗?它必须声明为已签名吗?如果是这样,负值有什么意义?我已经在代码中实现了这一点,但它给了我负值。所以有些图像编码得很好,但其他的 BITS 必须被处理为 16 位,图像总是被破坏。

【问题讨论】:

    标签: algorithm image-processing jpeg


    【解决方案1】:

    据我了解,负值应该没问题,因为它们是 i=[17,32] 值,一旦将其减少到 16 位,就不会使用这些值。该算法假设有符号数学,注意 BITS(i) > 0 条件,负值将通过“否”分支并最终在处理 BITS(17) 后结束。

    在您的实现中,我认为如果您真的想使用无符号数学并将下溢限制为 0(天真,类似于 BITS(i) = BITS(i) > 2 ? BITS(i) - 2 : 0)。

    【讨论】:

      猜你喜欢
      • 2020-02-07
      • 2018-02-13
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      相关资源
      最近更新 更多