【问题标题】:JPEG Compression Implementation QuestionsJPEG压缩实现问题
【发布时间】:2012-12-04 04:27:35
【问题描述】:

我正在尝试实现 JPEG 压缩(或尽可能接近它),但在实际实现中我需要明确一些要点。我将解释我目前所知道的以及我在哪里看到这些问题,如果有人能解决它们,那就太好了。

第一步是将图像分割成 8x8 块。但是我不确定执行此操作的最佳方法,例如,考虑到必须对色度进行向下采样然后应用 DCT,最好使用哪个维度数组来存储所有这些段。是 3D 数组(存储图像的 2D 元素的二维,然后是颜色通道的一个维),然后以 8 个为一组进行迭代,还是 4D 数组(每个 8x8 组有一个额外的维度)或其他方法完全。

然后我可能会看到色度下采样的问题,因为一旦减少了色度值的数量,数组的大小就必须改变大小,然后必须将这些放入 DCT 中,而这不能真正采取所有不同尺寸的色度和发光阵列同时进行。

DCT 的想法也是,它采用 8x8 组的所有三个颜色通道,然后将三个值转换为一个值,从而节省空间,还是一次采用一个颜色通道(如果是这样,我不这样做) t 真正理解转换为傅立叶空间如何使压缩更有效)?我还注意到,我为 DCT 获得的值远远超出了 0-255 的范围,而是更高。据我所知,每个 8x8 块的这些值将除以 IJG 标准量化矩阵,然后是不同的熵编码。

我意识到这个问题涉及很多领域并且非常混乱,但如果需要,我可以提供任何其他信息,非常感谢任何帮助。

【问题讨论】:

  • 这是一个非常笼统的问题。一个好的起点是关于 JPEG 压缩的维基百科文章:en.wikipedia.org/wiki/JPEG
  • 这仍然没有真正清除 DCT 的实际输入,确定它是一个 8x8 矩阵,但它没有指定多个颜色通道的输入。它们应该一次完成,还是可以将 3 个值合并到一个 DCT 系数中。
  • 出于某种原因,我觉得这不是一个实际的编程问题。也许这只是我,但我认为 dsp.stackexchange.com 的人将更有能力回答这些问题。
  • 正如 Wiki 文章所说,每个颜色通道都进入一个单独的 DCT。正如@Abdias Software 所说,这可能不是编程问题。

标签: image compression jpeg


【解决方案1】:

Peter Symes 的“Digital Video Compression”有一章是关于 JPEG 的,一般来说是对压缩的一个很好的介绍。

JPEG 的reference implementation 可能是一个好的开始。

【讨论】:

    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2011-03-29
    • 2011-08-09
    • 1970-01-01
    • 2013-02-22
    • 2021-07-15
    相关资源
    最近更新 更多