2016-12-28 143 views
1

我有以下64x64圖像,它由隨機彩色的8x8正方形組成。爲什麼JPEG編碼8x8方格圖像會產生僞像?

enter image description here

現在,我通過PHP的imagejpg()函數,它默認75%質量推這個形象,我該接受這個結果,可見僞像:

enter image description here

enter image description here

據我瞭解JPEG,DCT適用於單獨的8x8正方形,這些都是純色。色度子採樣還具有足夠的分辨率來提供準確的顏色,因此也不應該具有任何效果。

爲什麼我在8x8方格內看到文物?是否有可能使用16x16 DCT? 8x8方格是在隨機位置選擇的,而不是從角落選擇的?是否有其他可能的原因會導致我的方格不能完美地與8x8 DCT分區對齊?

謝謝!

+1

使用16×16方塊或禁用色度子採樣。 – DaBler

回答

1

我相信我已經想通了。 DCT未應用於原始圖像上的8x8塊,而是分別應用於每個Y-Cb-Cr色彩通道。 Y通道未被二次採樣,但Cb和Cr被二次採樣(4:2:0)。

這意味着一個實心的8x8正方形將只有4個水平Cb樣本和4個垂直Cb樣本。這不是8x8。所以當DCT分割Cr和Cb通道時,一個8x8的部分將採取屬於相鄰正方形的Cb和Cr樣本。

我已經將每個正方形的大小增加到16x16,並且工件已經消失。

我仍然看到小的偏移值,但我猜這可能是由於算法或類似的舍入誤差。

相關問題