zl程序教程

您现在的位置是:首页 >  其他

当前栏目

FFmpeg之YUV420排列原理(二十三)

原理 FFMPEG 排列 二十三
2023-09-14 09:09:53 时间
一、RGB与YUV转换
LCD显示的数据就是RGB来表示每个像素的颜色,黑白电视机与彩色电视机两种,为了兼容两种电视机,
引入YUV格式代替RGB,其中Y表示亮度,U和V表示色差,黑白电视机只用Y信号,
而彩色电视机可由YUV转换成RGB再显示颜色。YUV格式是ITU-R的标准,也叫YCbCr.

YUV是由RGB格式的数据转换得来。
Y <====> Y = 0.299 x R + 0.587 x G + 0.114 x B + 0 
U <====> Cb = -0.169 x R - 0.331 x G + 0.499 x B + 128 
V <====>Cr = 0.499 x R - 0.418 x G - 0.0813 x B + 128 

2.YUV存储方式
<1>.YUV4:4:4格式
YUV4:4:4的数据各占用8位,每个像素都由YUV组成.

相邻4个像素数据: 
Y0U0V0    Y1U1V1   Y2U2V2  Y3U3V3

存储时:    
Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3  //即每个像素YUV的数据都会存放起来

相邻的4个像素里有4个Y,4个U,4个V.

<2>.YUV4:2:2格式
相邻4个像素数据:   
Y0U0V0    Y1U1V1   Y2U2V2  Y3U3V3
存储时:    
Y0 U0  Y1 V1 Y2 U2 Y3 V3 //每两个相邻的像素,一个丢弃V数据,一个丢弃U数据 
相邻的4个像素里有4个Y,2个U,2个V,按上面存储的顺序也叫YUYV.

还原成RGB数据必须需要YUV,第一个像素只有Y0U0是没法还原的,只能用下一像素的V1数据。
还原时的YUV:  
[Y0U0V1] [Y1U0V1] [Y2U2V3] [Y3U2V3]  //还原理论上会对图像的质量有影响的,人眼看不出来.


<3&