像素格式
概述
RGB 和 RGBA
- RGB 图像具有三个通道R、G、B,分别对应红、绿、蓝三个分量,一般也叫做 RGB24.
- RGBA 图像是 RGB 图像加一个通道 alpha,即透明度,通过四个分量共同控制颜色, 一般也叫做 RGB32.
- RGB图像中,每个像素点都有红、绿、蓝三个原色,其中每种原色都占用 8 bit,即一个字节,一个像素点占用24bit,即三个字节。
一张1280 * 720 大小的图片,占用1280 * 720 * 3 / 1024 / 1024 = 2.63MB 存储空间.
YUV 格式
- YUV(YCrCVb) 图像是将亮度参量 Y 和色度参量 U/V 分开表示的像素格式,主要用于优化彩色视频信号的传输.Cr 反映了 RGB 输入信号红色部分与 RGB 信号亮度值之间的差异,Cb 反映了 RGB 输入信号蓝色部分与RGB信号亮度值之间的差异。
- Y 表示明亮度,即灰阶值.U 和 V 表示色度,描述影像色彩以及饱和度.
RGB 与 YUV 转换
YUV采样格式
- YUV图像的主流采样方式: YUV4:4:4, YUV4:2:2, YUV4:2:0.
YUV4:4:4采样
假如图像像素为: [Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
# Y、U、V三个分量的采样比例相同.
采样的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
最后映射的像素点: [Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
YUV4:2:2采样
- 如果水平方向有 10 个像素点,那么采样了10个 Y 分量,而采样了 5 个 UV 分量.
假如图像像素为: [Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
# Y0和Y1各自采样.
# U0和V1分别用于Y0 和 Y1 的色度信息.
# Y2和Y3各自采样, U2 和 V3 用于 Y2 和 Y3 的色度信息.
采样的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 V3
最后映射的像素点: [Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
YUV4:2:0采样
- YUV4:2:0采样,并不是指只采样 U 分量而不采样 V 分量,而是指, 在每一行扫描时,只扫描一种色度分量(U或者V),和 Y 分量按照2:1的方式采样. 例如:第一行扫描时,YU 按照 2:1 的方式采样,第二行扫描时,YV分量按照2:1的方式采样。
假如图像像素为:
[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
[Y5 U5 V5]、[Y6 U6 V6]、[Y7 U7 V7]、[Y8 U8 V8]
# 每个像素都采样 Y 分量.
# 第一行采样 U 分量(每两个像素采一次).
# 第二行采样 V 分量(每两个像素采一次).
采样的码流为: Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8
# 每四个像素共享一组UV分量
最后映射的像素点:
[Y0 U0 V5]、[Y1 U0 V5]、[Y2 U2 V7]、[Y3 U2 V7]
[Y5 U0 V5]、[Y6 U0 V5]、[Y7 U2 V7]、[Y8 U2 V7]