【发布时间】:2015-02-12 19:07:14
【问题描述】:
在 libjpeg 中我无法找到 8x8 DCT 矩阵?如果我没记错的话,这个矩阵对于 8x8 块来说始终是一个常数。它必须在第一行包含 1/sqrt(8) 但这个矩阵在哪里?
【问题讨论】:
标签: image-processing jpeg libjpeg dct
在 libjpeg 中我无法找到 8x8 DCT 矩阵?如果我没记错的话,这个矩阵对于 8x8 块来说始终是一个常数。它必须在第一行包含 1/sqrt(8) 但这个矩阵在哪里?
【问题讨论】:
标签: image-processing jpeg libjpeg dct
在实际的 JPEG 实现中,DCT 矩阵通常分解为其高斯范式。这给出了一系列矩阵乘法。但是,在正常形式中,这些只涉及对角线和与对角线相邻的值的操作。归一化矩阵中的大多数值都为零,因此您可以省略它们。
这将 DCT 转换为一系列 8 个并行操作。
本书描述了矩阵运算的几种转换方式:
http://www.amazon.com/Compressed-Image-File-Formats-JPEG/dp/0201604434/ref=pd_bxgy_b_img_y
这本书描述了一种张量方法,理论上更有效,但在实现中往往不是这样
【讨论】:
它没有。或者,也许它在一个鬼鬼祟祟的地方,但这并不重要。 DCT 的真正实现不是这样工作的,它们是非常专业的代码片段,所有常量都硬编码在其中,它们看起来一点也不像矩阵乘法。从理论的角度来看,将变换视为矩阵乘法有时很有用,但它可以更有效地实现。
对于 libjpeg 中的 DCT,请参阅文件 jfdctflt.c(或其朋友之一)。
【讨论】: