1

我试图找出图片是由哪个 MCU(8x8、16x8 和 16x16)制成的。为此,我解析了存储色度二次采样因子的帧开始 (SOFn) 标记。我找到了以下内容:

Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)

我对如何解释它感到困惑。读到这里我开始相信 1x1 代表 4:4:4 采样,因此导致 8x8 像素 MCU,2x1 代表 4:2:2 -> 16x8 像素 MCU,2x2 代表 4:2:0 -> 16x16 pixl MCU .

每个采样率都决定了组件如何存储在熵编码数据中,从而导致 MCU。但是现在每个分量(Y、Cb、Cr)都有自己的子采样率。

如何解释我从 JPEG 标记中读取的日期,以判断整个图像中使用了哪个 MCU?

4

1 回答 1

1

在 JPEG 中,通常对不同的组件进行不同的采样。这是因为人眼比颜色(色度)更能感知亮度变化。

在您的示例中,亮度以全频采样(与 JPEG 一样),而两个色度分量都是 2x2 的子采样(或者如果您愿意,可以在水平和垂直方向上进行子采样)。这意味着对于每个色度样本,有 4 个亮度样本。

类似的东西(其中C= Cb,c= Cr):

YCcY  YCcY...
Y  Y  Y  Y... 
YCcY  YCcY...
Y  Y  Y  Y... 
.  .  .  .
.  .  .  .

(这些是像素,样本可能存储YYYYCcYYYYCc...在流中)

所以,你的问题:所有组件中最大的子采样因子将决定 MCU 的大小。在您的情况下为 16x16。

于 2015-01-13T13:05:25.133 回答