YUV的组成格式如下图所示
Y:明亮度,即灰度值
U、V:颜色
YUV格式将亮度信息和色彩信息分离,没有色彩信息依然能够显示图像(没有色彩信息),很好的解决了彩色电视机与黑白电视机的兼容问题(这也是最初的设计目的)。
缺点:YUV格式不能直接用于显示,需要转换成RGB格式。
二、YUV像素格式分类YUV按照采样的格式分为三种(严谨一点其实是四种,但YUV411很不常用):
YUV444:完全采样,1个Y值对应1个U值和1个V值
YUV422:半采样,2个相邻Y值公用共用1个相同的U/V值
YUV420:1/4采样,4个像素平面上相邻的Y值公用一个U/V值(最常用)
三、YUV2RGB格式转换由于YUV格式不能直接用于显示,所以需要先将YUV格式的数据转换为RGB格式。格式的转换过程涉及到了大型数组的计算,因此会比较耗时。
YUV格式到RGB的转换公式如下:
R = Y + 1.4075 ∗ ( V − 128 ) R=Y+1.4075*(V-128) R=Y+1.4075∗(V−128)
G = Y − 0.3455 ∗ ( U − 128 ) − 0.7169 ∗ ( V − 128 ) G=Y-0.3455*(U-128)-0.7169*(V-128) G=Y−0.3455∗(U−128)−0.7169∗(V−128)
B = Y + 1.779 ∗ ( U − 128 ) B=Y+1.779*(U-128) B=Y+1.779∗(U−128)
RGB到YUV的转换公式:
Y = 0.30 R + 0.59 G + 0.11 B Y=0.30R+0.59G+0.11B Y=0.30R+0.59G+0.11B
U = 0.493 ( B − Y ) U=0.493(B-Y) U=0.493(B−Y)
V = 0.877 ( R − Y ) V=0.877(R-Y) V=0.877(R−Y)
在利用ffmpeg对视频文件进行解码显示的过程中,可以使用OpenGL的shader来完成像素格式转换过程,比使用CPU计算速度要快很多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)