YUV颜色空间家族

摘要

弄清楚YUV颜色空间家族。
常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等


YUV与YCbCr关系

YUV 与 YCbCr 两者是等价的。

YUV颜色空间家族

YUV颜色空间家族思维导图

YUV与RGB转换公式

YUV与RGB互转各种公式 (YUV与RGB的转换公式有很多种,请注意区别!!!):它讲清楚了为什么网上的YUV与RGB相互转换公式有好多种不同的,因为一方面是量化的考究问题,另一方面是浮点转为整形加速计算的考虑。
注意: 好像即使是量化,对YUV的量化到哪个范围也有好多种,所以公式不太一样。个人觉得,由于大家的转化公式系数都不太一样,RGB2YUV与YUV2RGB需要配套使用。
另外: RGB转YUV_I420时,对UV进行了降采样,把图像分为若干2x2的小块,每个小块共用一个UV,因此,在做YUV_I420转RGB时,同样把图像分为若干2x2的小块,每个小块共用一个UV来恢复RGB。其它降采样格式的YUV同理。
注意: 下面的公式中的RGB,应该已经经过伽马矫正。

方法一

bgr2yuv来自opencv源码:
double y = bgr[2] * 0.299000 + bgr[1] * 0.587000 + bgr[0] * 0.114000;
double u = bgr[2] * -0.168736 + bgr[1] * -0.331264 + bgr[0] * 0.500000 + 128;
double v = bgr[2] * 0.500000 + bgr[1] * -0.418688 + bgr[0] * -0.081312 + 128;

方法二

yuv与rgb相互转换公式,来自opencv源码:

	//  These functions operate with gamma-corrected images.
	//  The basic equations for conversion between gamma-corrected RGB(R'G'B')and YUV are:
	//
	//       Y' =  0.299*R' + 0.587*G' + 0.114*B'
	//       U  = -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B' - Y' )
	//       V  =  0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R' - Y' )
	//
	//       R' = Y' + 1.140 * V
	//       G' = Y' - 0.394 * U - 0.581 * V
	//       B' = Y' + 2.032 * U
	//
	//     For digital RGB values in the range [0 .. 255], Y has a range [0..255],
	//   U a range [-112 .. +112], and V a range [-157..+157].
	//
	//   These equations are usually scaled to simplify the implementation in an actual
	//   NTSC or PAL digital encoder or decoder.

用整形加速的公式:
Y = (4899 * R + 9617 * G + 1868 * B) >> 14;
V = ((R - Y) * 14369 + delta) >> 14;
U = ((B - Y) * 8061 + delta) >> 14;
delta = (255 / 2 + 1) * (1 << 14);

方法三

YUV与RGB转换代码

【视频处理】YUV与RGB格式转换:文末给出了各种方法的YUV2RGB时间对比,得到ffmpeg速度最快的结果。

相关/参考链接

《H.264和MPEG-4视频压缩新一代多媒体的视频编码技术》p18
图文详解YUV420数据格式
YUV色彩空间浅析
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
Recommended 8-Bit YUV Formats for Video Rendering
YUV pixel formats :可以查到YUV各种格式的别称,以及所属的采样类型
YUV色彩格式总结 :YUV采样格式有讲解,并给出RGB到YUV的转换公式
YUV与RGB互转各种公式 (YUV与RGB的转换公式有很多种,请注意区别!!!):讲清楚了为什么网上的YUV与RGB相互转换公式有好多种不同的,因为一方面是量化的考究问题,另一方面是浮点转为整形加速计算的考虑。

发布了88 篇原创文章 · 获赞 61 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/a435262767/article/details/103653215