最近在学习视频的颜色空间转换,由于摄像机拍出来的视频很多都是用YUV格式保存的,而颜色空间的转换必须在RGB颜色模型上才能完成,所以第一步自然就是将YUV颜色模型转成RGB颜色模型。在网上查到了许多的YUV与RGB互转的公式,但是总觉得有些杂乱,没有系统的总结。

首先说一说YUV颜色模型,单单就YUV颜色模型来说,就有很多中叫法,而且总是让人颇感困惑。一般来讲,我们把YUV、Y`UV、YCbCr, YPbPr包含在YUV颜色模型的范围内,其中Y都表示亮度,UV表示两个色度分量,但是具体的颜色模型的用途又各不相同,当然,他们与RGB的互转公式也就不尽相同。那就先说说这些不同叫法的YUV的用途和由来。在电视系统发展的早期,YUV和Y`UV都是颜色信息的模拟信号编码形式,虽然Y和Y`都表示亮度,但是两种亮度的意义却天差地别,Y用来代指luminance,表示的是自然颜色的亮度,而Y`代指luma,表示的是经过伽马压缩之后电信号的强度。在现在的计算机系统中,YUV一般用来代指YCbCr,用来表示文件的编码格式,用于数字视频的编码,而YPbPr颜色模型常常用在模拟分量视频中。所以YUV颜色模型到RGB颜色模型的转换,应该对应两种方式,分别是模拟YUV->模拟RGB、数字YUV->数字RGB。不过因为标清、高清、以及超清幅面,YUV转RGB的权重值各不相同,需要将模拟信号和数字信号再做一次幅面划分,就出现了2*3 = 6,6中转换公式。

1.模拟YUV->模拟RGB

  1) BT601(标清国际定义)

 //*********************BT601***********************************////  Y = 0.299 * R + 0.587 * G + 0.114 * B               //// Pb =-0.169 * R - 0.331 * G + 0.500 * B                  //// Pr = 0.500 * R - 0.439 * G - 0.081 * B                    ////  R = Y + 1.402* Pr                                 // //  G = Y - 0.344 * Pb  - 0.792* Pr                 // //  B = Y + 1.772 * Pb                                 // //*********************BT601***********************************//

  2)BT709(高清)

  //*********************BT601***********************************////  Y = 0.213 * R + 0.715 * G + 0.072 * B                //// Pb =-0.115 * R - 0.385 * G + 0.500 * B                  //// Pr = 0.500 * R - 0.454 * G - 0.046 * B                    ////  R = Y + 1.402* Cr                                 // //  G = Y - 0.344 * Cb  - 0.792* Cr                 // //  B = Y + 1.772 * Cb                                 // //*********************BT601***********************************//

2 数字YUV->数字RGB

  1)BT601

//*********************BT601***********************************//
//  Y = 16  + 0.257 * R + 0.504 * g + 0.098 * b                //
// Cb = 128 - 0.148 * R - 0.291 * g + 0.439 * b                  //
// Cr = 128 + 0.439 * R - 0.368 * g - 0.071 * b                  //
//  R = 1.164 *(Y - 16) + 1.596 *(Cr - 128)                    //
//  G = 1.164 *(Y - 16) - 0.392 *(Cb - 128) - 0.812 *(Cr - 128)//
//  B = 1.164 *(Y - 16) + 2.016 *(Cb - 128)                    //
//*********************BT601***********************************//

  2)BT709

//*********************BT709***********************************//
//  Y = 16  + 0.183 * R + 0.614 * g + 0.062 * b                //
// Cb = 128 - 0.101 * R - 0.339 * g + 0.439 * b                  //
// Cr = 128 + 0.439 * R - 0.399 * g - 0.040 * b                  //
//  R = 1.164 *(Y - 16) + 1.792 *(Cr - 128)                    //
//  G = 1.164 *(Y - 16) - 0.213 *(Cb - 128) - 0.534 *(Cr - 128)//
//  B = 1.164 *(Y - 16) + 2.114 *(Cb - 128)                    //
//*********************BT709***********************************//

至于超清幅面的计算公式,大家可以按照下面的推导方式自己推导一下。

模拟RGB转YUV的推导公式 :

Wr + Wg + Wb = 1; UMax = 0.5; VMax = 0.5
Y  = Wr * R + Wg * G + Wb * B;
Pb = Umax * (B - Y) / (1 - Wb);
Pr = Vmax * (R - Y) / (1 - Wr);

  

数字RGB转YUV的推导公式:

Wr + Wg + Wb = 1; Umax = Vmax = 0.5;
Y = 16 + 219 * (Wr * R  + Wg * G + Wb * B)   / 255;
Cb = 128 + 224 * (Umax * (B - Y) / (1 - Wb)) / 255;
Cr = 128 + 224 * (Vmax * (R - Y) / (1 - Wr)) / 255;

  

BT601 Wr = 0.299 Wg = 0.587 Wb = 0.114

BT709 Wr  = 0.2126 Wg = 0.7152 Wb = 0.0722

BT2020 Wr = 0.2627 Wg = 0.678 Wb = 0.0593

转载于:https://www.cnblogs.com/zhengjianhong/p/7872459.html

总结各种RGB转YUV的转换公式相关推荐

  1. java rgb转yuv_【转】总结各种RGB转YUV的转换公式

    最近在学习视频的颜色空间转换,由于摄像机拍出来的视频很多都是用YUV格式保存的,而颜色空间的转换必须在RGB颜色模型上才能完成,所以第一步自然就是将YUV颜色模型转成RGB颜色模型.在网上查到了许多的 ...

  2. java rgb转yuv_总结各种RGB转YUV的转换公式

    最近在学习视频的颜色空间转换,由于摄像机拍出来的视频很多都是用YUV格式保存的,而颜色空间的转换必须在RGB颜色模型上才能完成,所以第一步自然就是将YUV颜色模型转成RGB颜色模型.在网上查到了许多的 ...

  3. 视音频数据处理入门:RGB、YUV像素数据处理【转】

    转自:http://blog.csdn.net/leixiaohua1020/article/details/50534150 ==================================== ...

  4. 初学音视频(一)-RGB和YUV格式分析

    前言 有幸能够看到雷霄骅先生的博客,很感谢雷神能够这么无私把知识分享出来,对我这种新手的帮助实在是太大了.希望到另一个世界雷神不用再这么辛苦的. 本篇文章基本全是参考雷神的:视音频数据处理入门:RGB ...

  5. rgb到yuv的转换

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 RGB到YUV(4:2:0)的转换 实验目标:实验RGB到YUV 的转换 一.实验原理 二.编程步骤 1.读入rgb分量 2.由RGB ...

  6. 矢量图、位图、RGB、YUV、JPEG、PNG的理解

    开发的项目中缺少不了图形图像的支持,对图的使用场景也是极多的,但对其内部原理却一直处理模糊状态,抽时间做个整理吧,理一下相关的概念. 一.矢量图与位图 矢量图与位图均为图像的表述方式,矢量图可以理解为 ...

  7. 视音频数据处理入门:RGB、YUV像素数据处理

    ===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...

  8. Metal之探究理解视频渲染RGB与YUV颜色编码

    一.颜色编码 ① RGB 颜色编码 RGB 三个字母分别代表了 红.绿.蓝,这三种颜色作为三个基底颜色,将它们以不同的比例相加,可以产生多种多样的颜色. RGB 图像中,每个像素点都有红.绿.蓝三个基 ...

  9. RGB与YUV的转换

    计算机领域,RGB被称为基色分量,组合后能显示的颜色叫做颜色空间,一般取值范围从0-255(2^8,可以显示1600万多种颜色:现在有的显示器为10位位深,即2^10,约可以显示10亿种颜色) 还有一 ...

  10. 实验一 |彩色空间rgb和yuv的相互转换

    彩色空间转换 一.实验目的 1.基本要求:编写RGB转化为YUV程序,重点掌握函数定义,部分查找表的初 始化和调用,缓冲区分配.将得到的RGB文件转换为YUV文件,用YUV Viewer播放器观 看, ...

最新文章

  1. 卷积神经网络中十大拍案叫绝的操作!
  2. 联想lenovo Z470笔记本的驱动安装
  3. C#编程(十六)----------匿名类型
  4. 你真正的去了解过Linux吗?不单单是一些命令操作,比如它的系统架构!!!
  5. OpenTLD相关资料
  6. HOG特征(Histogram of Gradient)学习总结
  7. d类功放芯片_应用于无滤波级D类音频功放的新型死区时间控制系统
  8. bzoj3594 [Scoi2014]方伯伯的玉米田
  9. adb 命令获取点击位置坐标
  10. python数据驱动读取用例_【webdriver自动化】Python数据驱动工具DDT(示例代码)
  11. 解决SVN Can’t open file ‘/XXX/xxx/db/txn-current-lock’错误
  12. android app增加内存大小,硬件不够软件来凑:如何提升Android手机运行内存?
  13. PPT2010中,如何让带圈的序号填充背景颜色?
  14. 如何在h5页面中调用摄像头来完成拍照之类的操作
  15. HTML页面为什么设置了UTF-8仍然中文乱码
  16. 【夏目鬼鬼分享】springboot搭建阿里Druid数据源监控
  17. 常用的文本情感分析方法及其应用
  18. 内存泄漏,内存溢出总结以及相关解决方案
  19. centos7重新安装polket
  20. EXCEL中设置固定行列

热门文章

  1. Java-mail发送邮件
  2. PC端微信一直显示“正在登录”问题处理
  3. protel99se原理图设计,怎样显示隐藏的“PART TYPE”?
  4. greendao的简单使用
  5. psd导出jpg太大_PSD源文件、导出JPG\PNG格式文件过大解决办法
  6. 界面原型创建工具Axure使用教程
  7. ThinkPHP自动匹配CP端移动端模板
  8. Windows服务器IE浏览器无法下载文件解决方法
  9. 腾讯云服务器硬盘价格,腾讯云服务器价格表(CPU/内存/带宽/云硬盘收费标准)...
  10. Lora sx1278+stm32(ADC录音)+SPPEX音频压缩 数字对讲机