YUV与RGB

来源:互联网 发布:网络直播公司怎么赚钱 编辑:程序博客网 时间:2024/06/18 04:55

进入主题之前,首先介绍一下这两种色彩编码:

YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号B-Y(即U)、R-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。

这里写图片描述

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一RGB颜色查询对照表
RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。红、绿、蓝三个颜色通道每种色各分为256阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为255时,是最亮的白色调。RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。加成色用于照明光、电视和计算机显示器。例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。这些颜色若发生重叠,则产生青、洋红和黄。

这里写图片描述

YUV的优点: YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中”Y”表示明亮度(Luminance或Luma),也就是灰阶值;而”U”和”V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。”亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。”色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号

RGB的主要技术特点为
采集计算机VGA输出屏幕、各种非标准相机的输出采集设备、标准或非标的RGB分量信号
采集的信号种类按照接口可为复合非标准模拟信号,绿路带同步的/行场分离的RGB分量信号
高分辨率高帧率:1280×1024/40帧;1024×768/60帧;800×600/120帧;
最高点频可达170M
支持硬件任意开窗,二级缩放,硬件翻转
有类似内存映射的功能,多个应用程序/进程可以共享其采集的图像数据;
信号接入丢失感知,无信号不蓝屏、死机
硬件控制帧率流量,可在实际使用中和其它采集卡配合,更有效提高PCI带宽的利用
支持RGB32、RGB24、YUV422、RGB8等采集格式
全自动行场频检测:具有全自动行场频自适应能力和信号自检测能力,信源端信号的变化不需要用户调节,完全适合无人值守应用
编程完全使用微软提供DirectShow /VFW接口,也可提供基于VC、VB、Delphi等的二次开发包演示程序和源代码,
可使用微软的AmCap,VidCap,Windows Media Encode,Window Movie Maker、第三方提供的LabView等应用软件
RGB有多种形式表示一个像素:RGB555、RGB565、RGB24、RGB32,分别有不同的定义。

在数字视频中,还定义了从 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.299

Kb = 0.114

第二个转换为 BT.709 中定义用于 60-Hz 的较新 YUV 格式,应该被视为用于高于 SDTV 的视频分辨率的首选格式。它的特征由下面两个不同的常量值来定义:

Kr = 0.2126

Kb = 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等。

原创粉丝点击