YUV到RGB怎么转换
来源:学生作业帮助网 编辑:六六作业网 时间:2024/10/04 21:42:09
YUV到RGB怎么转换
YUV到RGB怎么转换
YUV到RGB怎么转换
对于数字视频,定义了从 RGB 到两个主要 YUV 的转换.这两个转换都基于称为 ITU-R Recommendation BT.709 的规范.第一个转换是 BT.709 中定义用于 50-Hz 的较早的 YUV 格式.它与在 ITU-R Recommendation BT.601 中指定的关系相同,ITU-R Recommendation BT.601 也被称为它的旧名称 CCIR 601.这种格式应该被视为用于标准定义 TV 分辨率 (720 x 576) 和更低分辨率视频的首选 YUV 格式.它的特征由下面两个常量 Kr 和 Kb 的值来定义:Kr = 0.299Kb = 0.114第二个转换为 BT.709 中定义用于 60-Hz 的较新 YUV 格式,应该被视为用于高于 SDTV 的视频分辨率的首选格式.它的特征由下面两个不同的常量值来定义:Kr = 0.2126Kb = 0.0722从 RGB 到 YUV 转换的定义以下列内容开始:L = Kr * R + Kb * B + (1 – Kr – Kb) * G然后,按照下列方式获得 YUV 值:Y = floor(2^(M-8) * (219*(L–Z)/S + 16) + 0.5)U = clip3(0,2^M-1,floor(2^(M-8) * (112*(B-L) / ((1-Kb)*S) + 128) + 0.5))V = clip3(0,2^M-1,floor(2^(M-8) * (112*(R-L) / ((1-Kr)*S) + 128) + 0.5))其中 M 为每个 YUV 样例的位数 (M >= 8).Z 为黑电平变量.对于计算机 RGB,Z 等于 0.对于 studio 视频 RGB,Z 等于 16*2,其中 N 为每个 RGB 样例的位数 (N >= 8).S 为缩放变量.对于计算机 RGB,S 等于 255.对于 studio 视频 RGB,S 等于 219*2.函数 floor(x) 返回大于或等于 x 的最大整数.函数 clip3(x,y,z) 的定义如下所示:clip3(x,y,z) = ((z < x) x :((z > y) y :z))Y 样例表示亮度,U 和 V 样例分别表示偏向蓝色和红色的颜色偏差.Y 的标称范围为 16*2 到 235*2 .黑色表示为 16*2 ,白色表示为 235*2 .U 和 V 的标称范围为 16*2 到 240*2 ,值 128*2 表示中性色度.但是,实际的值可能不在这些范围之内.对于 studio 视频 RGB 形式的输入数据,要使得 U 和 V 值保持在 0 到 2M-1 范围之内,必需进行剪辑操作.如果输入为计算机 RGB,则不需要剪辑操作,这是因为转换公式不会生成超出此范围的值.这些都是精确的公式,没有近似值.在DirectShow中,常见的RGB格式有RGB1、RGB4、RGB8、RGB565、RGB555、RGB24、RGB32、ARGB32等;常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等.