图像基础知识
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
UVUVNV21:
YYYY
YYYY
YYYY
YYYY
VUVU
VUVUYU12:
YYYY
YYYY
YYYY
YYYY
UU
UU
VV
VVYV12:
YYYY
YYYY
YYYY
YYYY
VV
VV
UU
UUYUV422
YUV422P:
YYYY
YYYY
YYYY
YYYY
UU
UU
UU
UU
VV
VV
VV
VVYUYV:
YUYV YUYV
YUYV YUYV
YUYV YUYV
YUYV YUYVYVYU:
YVYU YVYU
YVYU YVYU
YVYU YVYU
YVYU YVYUYUV444
YUV YUV YUV YUV
YUV YUV YUV YUV
YUV YUV YUV YUV
YUV YUV YUV YUV