详解RGB和YUV色彩空间转换 |
您所在的位置:网站首页 › lab色彩空间转换 › 详解RGB和YUV色彩空间转换 |
前言
首先指出本文中的RGB指的是非线性RGB,意思就是经过了伽马校正,按照行业规矩应当写成R'G'B',但是为了书写方便,仍写成RGB。关于YUV有多种叫法,分别是YUV,YPbPr,YCbCr。因此本文将首先指出他们之间的区别与联系,然后依次推演和RGB色彩空间之间的关系,最后导出转换矩阵。 各种说法对于名称的叫法本来无所谓,例如鬼子、倭寇、小日本、Japan指的都是日本,只要交流的人之间互相明白对方的意思即可。对于YUV色彩空间来说,原本也是如此,只是概念上的混用对于专业人士来说,有时候会引起不专业的问题。所以有必要汇总一下各家的说法。 YUV:第一种含义是YUV,YCbCr,YPbPr的统称,任何一种都可以叫YUV;第二种含义指的是原始版YUV色彩空间。 YCbCr:第一种含义指的是数字分量,他是YUV的压缩和裁剪版本;第二种含义指的是标清隔行视频的模拟分量接口名称。 YPbPr:第一种含义指的是模拟分量,仅仅是YCbCr进行模拟化得到;第二种含义指的是高清视频的模拟分量接口名称。 演化推导 1:亮度和色差的定义因为 所以 因此亮度分量可以使用下面的表达式表示: 红色分量和亮度之差为: 蓝色分量和亮度之差为: 上面三个式子用矩阵的形式表达如下: 所以可以知道红色分量范围是: 同理可知,蓝色分量范围是: 通常我们知道RGB的范围是0~1,因此 那么为了给色差分量的范围归一化,就需要乘以缩放系数: 色差归一化后用UV去表达,矩阵形式如下: 写成方程式RGB转YUV如下: 反过来YUV转RGB公式为: 由于模拟信号在传输的过程中会引起吉布斯过冲现象,导致后端解码识别错误,因此在模拟视频时代需要对YUV信号进行二次压缩,同时为了保证电平为正,还需要叠加一个偏置。 化简后得如下: 上式中Y'~[0~235],Cb~[0~240],Cr~[0~240];R,G,B~[0,255] 3, RGB的辐值范围均在[16,235]时的转换关系首先可以知道亮度表达式一定如下,原因时带入RGB=16或235时,亮度可以取到16或235: 另外按照原来的表达式Cb和Cr还不能够达到240,因此还需要乘以个比例系数: 化简后可以得到: 显然只需要在YUV转换关系中将U和V偏移到正数区域即可: 我们知道SDTV中,色域空间的定义如下: 另外我们也知道sRGB跟SDTV的色域空间几乎一致: 在我的上一篇文章 详解RGB和XYZ色彩空间转换之下篇_古楼望月的博客-CSDN博客中已经推导出XYZ和sRGB之间的色彩转换矩阵如下: rgb2xyz = 0.4124 0.3576 0.1805 0.2126 0.7152 0.0722 0.0193 0.1192 0.9505 因此SDTV中真正的亮度表达式应该如下所示: 但是实际上SDTV规范中亮度表达式确实如下定义: 因此只有一种解释,那就是SDTV事实上并没有严格按照自己的色域空间进行执行,而是采用了比较接近的三基色,这样的做法或许是技术实现难度上的考量。进一步分析SDTV中RGB三基色的比例关系正好是LED显示中发白光时的比例,这可以百度查询到,如下: 本文参考:BT.601,BT.709,BT.2020
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |