2020-11-27

总结各种RGB转YUV的转换公式

如果数据位宽都以8位来说.
ITU709:允许 0~255之间所有数据
ITU601:只允许 16~235之间数据,

601是SDTV的数据结构; 656是SDTV的interface
709是HDTV的数据结构 ;1120是HDTV的interface

最近在学习视频的颜色空间转换,由于摄像机拍出来的视频很多都是用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(标清国际定义)

1

2

3

4

5

6

7

8

//*********************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(高清)

1

2

3

4

5

6

7

8

//*********************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

1

2

3

4

5

6

7

8

//*********************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

1

2

3

4

5

6

7

8

//*********************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的推导公式 : 

1

2

3

4

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的推导公式:

1

2

3

4

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习笔记1-基础语法

1 在3版本中print需要加上括号2 多行语句:用\连接 1 item_one1 2 item_two2 3 item_three3 4 total item_one \ 5 item_two \ 6 item_three 7 print (total) 3 引号   字符串通常在引号中 不管是单引号 双引号还是三引号   必须保证前后一致…

『原创』一个基于Win CE 5.0的Txt文件阅读器

最近,拿到一台亲戚送的GPS导航仪,其系统是基于WinCE5.0的,所以我觉得可以写点小程序上去,上网一搜,还附带破解方法,把GPS破解后就变成一台屏幕超大的PDA了,于是我想用它看电子书,无奈…

ARM Cortex-A系列(A53、A57、A73等)处理器性能分类与对比

在如今这个电子产品泛滥的年代,仅仅靠品牌或是外观已经不足以辨别产品的优劣,其内置的处理器自然也就成为了分辨产品是否高端的标准之一。那么我们今天就不妨好好了解一下近几年来电子产品中较为主流的RAM处理器。 在这之前让我们先简单认识一下处理器的…

批量创建10个系统帐号tianda01-tianda10并设置密码

#1、添加用户 useradd tianda01#2、非交互式给密码 echo "pass"|passwd --stdin tianda#3、01-10 加0思路 (1)echo {00..10}(2)seq -w 10#随机密码6种方法 (1)echo $RANDOM | md5sum | cut -c 1-8(2)yum -y install expect mkpasswd -l 12 -d 5 #expect随机mkpasswd …

DIV常用属性大全自己整理

一、属性列表 代码如下:color : #999999 文字颜色 font-family : 宋体 文字字型 font-size : 10pt 文字大小 font-style:itelic 文字斜体育 font-variant:small-caps 小字体 letter-spacing : 1pt 文字间距 line-height : 200% 设定行高 font-weight:bold 文字粗体 vertical-a…

.NET 3.5 - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除

步步为营VS 2008 .NET 3.5(8) - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除作者&#xff1a;webabcd介绍以Northwind为示例数据库&#xff0c;DLINQ(LINQ to SQL)之完全面向对象的添加操作、查询操作、更新操作和删除操作示例Sample.aspx <% Page Language&quo…

ARM处理器的分类

对于ARM处理器而言&#xff0c;其目前有Classic系列、Cortex-M系列、Cortex-R系列、Cortex-A系列和Cortex-A50系列5个大类。 Classic系列 该系列处理器由三个子系列组成&#xff1a; ARM7系列&#xff1a;基于ARMv3或ARMv4架构 ARM9系列&#xff1a;基于ARMv5架构 ARM11系列…

Poj 1019

传送门&#xff1a;http://poj.org/problem?id1019 主要是找数学规律 然后用好pow和log函数&#xff0c;由于数组过大&#xff0c;数组的类型用unsigned 1 #include<iostream>2 #include<cmath>3 using namespace std;4 5 int t;6 int k;7 int n;8 unsigned a[312…

ARM版本系列及家族成员梳理

ARM公司简介 ARM是Advanced RISC Machines的缩写&#xff0c;它是一家微处理器行业的知名企业&#xff0c;该企业设计了大量高性能、廉价、耗能低的RISC &#xff08;精简指令集&#xff09;处理器。 1985年第一个ARM原型在英国剑桥诞生。 公司的特点是只设计芯片&#xff0c…

z-index ie无效

首先来个 解释了三个原因&#xff1a;http://www.cnblogs.com/hakuci/archive/2011/01/05/1926212.html 我这个还比较特殊 爸爸级别在最底层 遮羞层在中间 儿子最外边 <div>遮羞层</div> z-index2 <div>爷爷 <div>小爸爸</div> <div>爸…

数据结构与算法问题 AVL二叉平衡树

AVL树是带有平衡条件的二叉查找树。这个平衡条件必须保持&#xff0c;并且它必须保证树的深度是O&#xff08;logN&#xff09;。 一棵AVL树是其每一个节点的左子树和右子树的高度最多差1的二叉查找树。&#xff08;空树的高度定义为-1&#xff09;。在插入以后。仅仅有那些从插…

tomcat源码阅读之StandardHost和StandardEngine

StandardHost及UML类图&#xff1a; 1、StandardHost类是Host接口的默认实现&#xff1b;其继承自ContainerBase类&#xff0c;说明他也是一个容器类&#xff0c;既然是容器类&#xff0c;那肯定也有管道对象PipeLine和阀门&#xff0c;其基础阀门&#xff08;Basic Valve&…

安防监控产业链全景梳理

安防行业是随着现代社会安全需求应运而生的产业&#xff0c;围绕着视频监控技术的改革创新&#xff0c;行业从“看得见、看得远、看得清到看得懂”&#xff0c;一共经历模拟监控、数字监控、网络高清监控和智能监控4个阶段&#xff0c;每一阶段的突破&#xff0c;都由上游技术的…

Vue项目搭建步骤

一&#xff0e; vue-cli初始化1. 全局安装 vue-cli  npm install --global vue-cli2. 创建一个基于 webpack 模板的新项目  vue init webpack my-project3. 安装依赖  cd my-project  npm install (换源安装: npm install --registry https://registry.npm.taobao.org …

Python tutor 简介

Python tutor 能够直观显示object 引用关系。 网址是 http://www.pythontutor.com/visualize.html 先分享一下我的一个Python tutor&#xff1a; 点我出现神奇&#xff1a; 1&#xff09; 编辑code。 2&#xff09; 运行&#xff0c; 能够看到以下界面。 这个工具是很酷的&…

提高CSS性能

1、选择器 了解CSS的查找匹配原理&#xff0c;让CSS更简洁、高效使用高效率的CSS选择器如何使CSS渲染更高效 总结 不要在ID选择器前使用标签名 一般写法&#xff1a;div#divBox 更好写法&#xff1a;#divBox 解释&#xff1a; 因为ID选择器是唯一的&#xff0c;加上div反而增加…

光学镜头行业发展现状及趋势,智能手机应用领域占比最高

一、光学镜头分类 光学镜头也叫摄像镜头或摄影镜头&#xff0c;简称镜头&#xff0c;其功能就是光学成像。光学镜头是光学成像系统中的必备组件&#xff0c;直接影响到成像质量的好坏&#xff0c;影响算法的实现和效果。从结构来看&#xff0c;光学镜头一般由精密五金、塑胶零…

关于_vmvare workstation装32ubuntu的问题

刚开始启动的时候是黑屏&#xff0c;没有任何反应 1.bios也设置BIOS intel virtual technology 设置了enabled(开启硬件虚拟化:要运行一些操作系统&#xff0c;虚拟化软件和虚拟机&#xff0c;硬件虚拟化就需要启用。大多数情况下&#xff0c;不需要虚拟化技术的操作系统可以正…

window screen (获取屏幕信息)

document.write("屏幕宽度"screen.width);document.write("屏幕高度"screen.height);//&#xff08;整个电脑的屏幕的高&#xff09;上面和下面不是有效区的也被包括了 document.write("可用高度"screen.availHeight)//除了上面的任务栏 其他的全…

360°环视(全景影像)系统发展趋势

360环视系统&#xff0c;系统同时采集车辆四周的影像&#xff0c;经过图像处理单元一系列的智能算法处理&#xff0c;最终形成一幅车辆四周的全景俯视图显示在屏幕上&#xff0c;直观地呈现出车辆所处的位置和周边情况。系统大大地拓展了驾驶员对周围和环境的感知能力&#xff…