图像基础知识

Image Memory Layout

这里以RGB图像为例,常见的内存layout有:

  • Interleaved Storage(交错存储):在交错存储中,RGB三通道是交替存储的。每个像素的RGB值连续存储在内存中。R0 G0 B0 R1 G1 B1 R2 G2 B2 R3 G3 B3 R4 G4 B4
  • Planar Storage(平面存储):平面存储方式中,RGB三通道的数据是分别存储的,即所有R通道数据存储在一起,所有G通道数据存储在一起,所有B通道数据存储在一起。R0 R1 R2 R3 R4 G0 G1 G2 G3 G4 B0 B1 B2 B3 B4
  • Chunked Storage(块存储):在块存储中,每个块包含一部分图像的数据,然后这些块按照一定顺序排列。块存储方式常用与图像压缩和分块处理,以下是块存储的示例(因为不太好理解)。
// 示例:块存储的基本思路(块的具体布局视实现而定)
struct Pixel {
    uint8_t R;
    uint8_t G;
    uint8_t B;
};

struct Block {
    Pixel pixels[16];  // 一个块包含16个像素
};

Block blocks[10];  // 假设有10个块

YUV图像格式

色彩空间

RGB色彩空间

  • RGB色彩空间是加色模型中的一种色彩空间,常用于显示设备(如显示器、电视等)。
  • RGB表示的颜色是通过混合红、绿、蓝三种基色的不同强度来实现的。 YUV色彩空间
  • YUV是一种用于视频和图像处理的色彩空间,其中Y分量表示亮度,U和V分量表示色度(色彩)。
  • YUV色彩空间可以解决黑白电视和彩色电视信号的兼容性问题。

亮度和色度分离

人眼对于亮度(Y分量)的敏感度远高于对色度(U和V分量)的敏感度。因此,在视频压缩和传输中,可以使用色度子采样(Chroma Subsampling)减少数据量,而对视觉质量的影响较小。

YUV色彩空间通过将亮度和色度信息分开,使得压缩和处理变得更高效。

转换

转换公式是基于实验和感知研究的结果。这些公式能够有效地将RGB色彩空间的颜色转换到YUV色彩空间,并保留尽可能多的视觉信息。

RGB 到 YUV

BT.601标准——标清数字电视(SDTV)

$$\begin{aligned} Y &= 0.299 \times R + 0.587 \times G + 0.114 \times B \\ U &= C_{b} = 0.564 \times (B - Y) \\ V &= C_{r} = 0.713 \times (R - Y) \end{aligned}$$

BT.709标准——高清数字电视(HDTV)

$$\begin{aligned} Y &= 0.2126 \times R + 0.7152 \times G + 0.0722 \times B \\ U &= C_{b} = 0.539 \times (B - Y) \\ V &= C_{r} = 0.635 \times (R - Y) \end{aligned}$$

BT.2020标准——超高清数字电视(UHDTV)

$$\begin{aligned} Y &= 0.2627 \times R + 0.6780 \times G + 0.0593 \times B \\ U &= C_{b} = 0.5315 \times (B - Y) \\ V &= C_{r} = 0.678 \times (R - Y) \end{aligned}$$

色度子采样(Chroma Subsampling)

色度子采样是YUV格式中重要的特性,它减少了色度分量的分辨率,保留了亮度分量的高分辨率,这种方法减少了数据量并提高了编码效率。

常见的子采样格式

  • 4:4:4:无色度子采样,Y、U、V分量都有相同的分辨率。
  • 4:2:2:U和V分量的水平分辨率是Y分量的一半。
  • 4:2:0:U和V分量的水平和竖直分辨率都是Y分量的一半。

当从RGB转YUV的时候,色度采样可以使用最近邻插值也可以用双线性插值。

常见格式和数据存储layout

通常有以下几种存储方式

  • Planar: YUV三个分量分开存放。
  • Semi-Planar:Y分量单独存放,UV分量交错存放。
  • Packed YUV:三个分量全部交错存放。

YUV420

NV12

YYYY
YYYY
YYYY
YYYY
UVUV
UVUV

NV21:

YYYY
YYYY
YYYY
YYYY
VUVU
VUVU

YU12:

YYYY
YYYY
YYYY
YYYY
UU
UU
VV
VV

YV12:

YYYY
YYYY
YYYY
YYYY
VV
VV
UU
UU

YUV422

YUV422P:

YYYY
YYYY
YYYY
YYYY
UU
UU
UU
UU
VV
VV
VV
VV

YUYV:

YUYV YUYV
YUYV YUYV
YUYV YUYV
YUYV YUYV

YVYU:

YVYU YVYU
YVYU YVYU
YVYU YVYU
YVYU YVYU

YUV444

YUV YUV YUV YUV
YUV YUV YUV YUV
YUV YUV YUV YUV
YUV YUV YUV YUV