Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 在-128到+之间的像素值上操作的DCT;127_Image Processing_Signal Processing - Fatal编程技术网

Image processing 在-128到+之间的像素值上操作的DCT;127

Image processing 在-128到+之间的像素值上操作的DCT;127,image-processing,signal-processing,Image Processing,Signal Processing,为什么在JPEG压缩中,DCT(离散余弦变换)要在像素值-128到127之间运行 在对图像应用DCT之前,为什么要对像素值进行级别偏移(减去128) 每个分量(Y、Cb、Cr)的每个8×8块使用归一化的二维II型离散余弦变换(DCT)转换为频域表示 在计算8×8块的DCT之前,其值从正范围移动到以零为中心的范围。对于8位图像,原始块中的每个条目都在[0255]范围内。从每个条目中减去范围的中点(在本例中为值128),以生成以零为中心的数据范围,从而修改后的范围为[-128,127] 此步骤降低了

为什么在JPEG压缩中,DCT(离散余弦变换)要在像素值-128到127之间运行

在对图像应用DCT之前,为什么要对像素值进行级别偏移(减去128)

每个分量(Y、Cb、Cr)的每个8×8块使用归一化的二维II型离散余弦变换(DCT)转换为频域表示

在计算8×8块的DCT之前,其值从正范围移动到以零为中心的范围。对于8位图像,原始块中的每个条目都在[0255]范围内。从每个条目中减去范围的中点(在本例中为值128),以生成以零为中心的数据范围,从而修改后的范围为[-128,127]


此步骤降低了随后的DCT处理阶段中的动态范围要求。(除了DCT阶段内动态范围的差异外,该步骤在数学上相当于在执行变换后从DC系数中减去1024–这可能是在某些架构上执行操作的更好方法,因为它只涉及执行一次减法,而不是64次减法).

以下是我的理解。。假设没有进行电平偏移,那么如果我们在这个矩阵上进行DCT,DC值(比如说X)将是一个更大的数字,因为所有像素值都是正值。当对图像像素值进行水平偏移时,一些像素值将为负值,而一些像素值将为正值。稍后,当我们对结果矩阵进行DCT时,DC值(比如说Y)现在不会像以前那样是一个更大的数字,即Y。因此,存储此数据所需的位数Y将小于X所需的位数


因此,需要进行电平偏移,并且在应用DCT之前,DCT意味着在像素值-128到127之间进行操作。使用范围为0-255的RGB(红、绿、蓝)值对像素进行估值。为了将值集中在0附近,(因为很容易找到值的余弦),我们将其减去128

访问以供参考

或者你可以这样理解。[0255]共有256个值。256/2 = 128. 以0为中心,范围变为[-127127]