音视频笔记(1)--YUV格式
来源
我们都知道RGB格式表示色彩,但是之前的显示器只能解析灰白的图像,为了兼容老旧设备,自然不能用RGB格式表示图像,于是YUV出现了。它可以将RGB三个分量转换成YUV三个分量,对于可以显示彩色的设备,解析Y、U、V三个分量,显示出彩色;对于老旧黑白设备,仅解析Y分量,就可以显示出黑白的图像。
YUV和YCbCr、YPbPr几个概念是一样的,Y表示亮度(Luminance),也就是灰度,U是色度(Chrominance),V是浓度(Chroma),而人眼对亮度分量Y的敏感度是高于UV分量的,所以YUV相对于RGB还可以减少数据量
RGB转YUV
Y = 0.299R + 0.587G + 0.114*B
U = -0.147R - 0.289G + 0.436B = 0.492(B-Y)
V = 0.615R - 0.515G - 0.100B = 0.877(R-Y)
YUV转RGB
R = Y + 1.140*V
G = Y - 0.394U - 0.581V
B = Y + 2.032*U
格式
分类
YUV444
Y + U + V = 8 + 8 + 8 = 24bits = 3字节
YUV422
Y + 0.5U + 0.5V = 8 + 4 + 4 = 16bits = 2字节
YUV420
Y + 0.25U + 0.25V = 8 + 2 + 2 = 12bits = 1.5 字节
存储
YUV的存储形式分为Packed(打包)格式和Planar(平面)格式
- Packed: YUV-YUV-YUV-YUV(交替存储)
- Planar:
- Planar: YYYY-UUUU-VVVV(连续存储)
- Semi-Planar: YYYY-UVUVUVUV(Y连续存储,UV交替存储)
YUV422常用格式
Packed格式:
1.YUYV: Y0 U0 Y1 V0 Y2 U2 Y3 V2
2.UYVY: U0 Y0 V0 Y1 U2 Y2 V2 Y3
Planar格式:
3.YUV422P(I422): Y Y Y Y U U V V
YUV420常用格式
Planar格式(YUV420P):
1.YU12(I420): Y Y Y Y Y Y Y Y U U V V
2.YV12: Y Y Y Y Y Y Y Y V V U U
Semi-Planar格式(YUV420SP):
1.NV12: Y Y Y Y Y Y Y Y U V U V ————iOS使用
2.NV21: Y Y Y Y Y Y Y Y V U V U ————Android使用
YUV图像处理
以YU12格式(也即I420)为例,介绍一下常用的YUV图像处理方法,图像宽为width,高height,则占用存储空间大小为 width*height*3/2 bytes
YUV分量提取
存储0~width*height*1,即Y分量
存储width*height*1~width*height*5/4,即U分量
存储width*height*5/4~width*height*3/2,即V分量
转灰度图
将width*height*1~width*height*3/2置128
U\V一个字节取值范围为0~255,128代表无色