为什么DCT(离散余弦变换)在JPEG压缩中的像素值-128到127之间运行?
为什么在对图像应用DCT之前对像素值进行电平偏移(减去128)
答案 0 :(得分:3)
你读过Wikipedia吗?
使用归一化的二维II型离散余弦变换(DCT)将每个分量的每个8×8块(Y,Cb,Cr)转换为频域表示。
在计算8×8块的DCT之前,其值从正范围转移到以零为中心的值。对于8位图像,原始块中的每个条目都在[0,255]范围内。从每个条目中减去范围的中点(在这种情况下,值128)以产生以零为中心的数据范围,以便修改的范围为[-128,127]。
此步骤降低了后续DCT处理阶段的动态范围要求。 (除了DCT阶段内动态范围的差异之外,此步骤在数学上等效于在执行变换后从DC系数减去1024 - 这可能是在某些体系结构上执行操作的更好方法,因为它涉及仅执行一次减法而不是64个)。
答案 1 :(得分:1)
这是我所理解的..假设没有进行电平偏移然后如果我们在这个矩阵上采用DCT,DC值(比如 X )将是一个更大的数字,因为所有的像素价值是积极的。当对图像像素值进行电平偏移时,一些像素值将为负,一些像素值为正。之后,当我们在得到的矩阵上采用DCT时,DC值(比如 Y )现在将不会像之前那样更大,即 Y< X 即可。因此,存储此数据所需的位数 Y 将小于 X 所需的位数。
因此需要电平偏移,并且DCT意味着在像素值-128到127
之间操作答案 2 :(得分:0)
在应用DCT之前,像素的值是RGB(红色,绿色,蓝色)值,范围为0-255。要将值集中在0左右(因为它很容易找到值的余弦值),我们将它减去128.
访问http://www.whydomath.org/node/wavlets/basicjpg.html以供参考。
或者你可以这样理解它。 [0,255]有256个值。 256/2 = 128.以0为中心,范围变为[-127,127]。