我有以下64x64图像,它由随机颜色的8x8正方形组成。
现在,我通过PHP的imagejpg()函数推送这个图像,默认情况下它的质量达到了75%,我收到了这个结果,带有可见的文物:
据我了解JPEG,DCT适用于各个8x8正方形,均为纯色。色度子子采样也具有足够的分辨率来提供精确的颜色,因此也不会产生影响。
为什么我看到8x8方块内的文物?是否有可能使用16x16 DCT? 8x8正方形是在随机位置选择的,而不是从角落选择的吗?是否有其他可能的原因会导致我的方块与8x8 DCT分区不完美对齐?
谢谢!
答案 0 :(得分:2)
我相信我已经弄明白了。 DCT不应用于原始图像上的8x8块,而是分别应用于每个Y-Cb-Cr颜色通道。 Y通道不进行子采样,但Cb和Cr采样为半采样(4:2:0)。
这意味着固体8x8正方形将只有4个水平Cb样本和4个垂直Cb样本。这不是8x8。因此,当DCT划分Cr和Cb通道时,8x8部分将采用属于相邻正方形的Cb和Cr样本。
我已将每个方块的大小增加到16x16,并且工件已经消失。
我仍然看到一个小的逐个值,但我猜这可以归因于算法中的舍入误差或类似值。