RGB YUV的来历及相互转换

YUV和RGB的相互转换实验 1、彩色空间转换基本原理 1)彩色空间转换公式: 为了实现格式转换,我们首先要明确待转换格式和目标格式的特点和相互转换关系,这是编程实现转换的核心。对于RGB转YUV的过程,我们要首先拿到RGB文件的数据,再通过上图的YUV计算公式对其做运算,得到YUV数据,从而实现转换。而对于YUV转RGB则要首先获得YUV数据,用第二组RGB公式计算得到RGB数据。在本实验中,转换公式如下。... 阅读详情

在视频等相关的应用中, YUV 是一个经常出现的格式。本文主要以图解的资料的形式详细描述 YUV 和 RGB 格式的来由,相互关系以及转换方式,并对 C 语言实现的 YUV 转为 RGB 程序进行介绍。

         人类眼睛的色觉,具有特殊的特性,早在上世纪初, Young ( 1809 )和 Helmholtz ( 1824 )就提出了视觉的三原色学说,即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时,以一定的比例使三种视锥细胞分别产生不同程度的兴奋,这样的信息传至中枢,就产生某一种颜色的感觉。

       70年代以来,由于实验技术的进步,关于视网膜中有三种对不同波长光线特别敏感的视锥细胞的假说,已经被许多出色的实验所证实 。 例如:①有人用不超过单个视锥直径的细小单色光束,逐个检查并绘制在体(最初实验是在金鱼和蝾螈等动物进行,以后是人)视锥细胞的光谱吸收曲线 ,发现所有绘制出来的曲线不外三种类型,分别代表了三类光谱吸收特性不同的视锥细胞,一类的吸收峰值在 420nm处,一类在 534nm处,一类在 564nm处,差不多正好相当于蓝、绿、红三色光的波长。与上述视觉三原色学说的假设相符。②用微电极记录单个视锥细胞感受器电位的方法,也得到了类似的结果,即不同单色光所引起的不同视锥细胞的超极化型感受器电位的大小也不同,峰值出现的情况符合于三原色学说。


    于是,在彩色显示器 还没有发明的时候,人类已经懂得使用三原色光调配出所有颜色的光。并不是说三原色混合后产生了新的频率的光,而是给人眼睛的感觉是这样。

 

         

          
         
在显示器发明之后,从黑白显示器发展到彩色显示器,人们开始使用发出不同颜色的光的荧光粉(
CRT ,等离子体显示器),或者不同颜色的滤色片( LCD ),或者不同颜色的半导体发光器件( OLED 和 LED 大型全彩显示牌)来形成色彩,无一例外的选择了 Red,Green,Blue 这 3 种颜色的发光体作为基本的发光单元。通过控制他们发光强度,组合出了人眼睛能够感受到的大多数的自然色彩。

         计算机显示彩色图像的时候也不例外,最终显示的时候,要控制一个像素中 Red,Green,Blue 的值,来确定这个像素的颜色。计算机中无法模拟连续的存储从最暗到最亮的量值,而只能以数字的方式表示。于是,结合人眼睛的敏感程度,使用 3 个字节( 3*8 位)来分别表示一个像素里面的 Red,Green 和 Blue 的发光强度数值,这就是常见的 RGB 格式。我们可以打开画图板,在自定义颜色工具框中,输入 r,g,b 值,得到不同的颜色。

 

        


         但是对于视频捕获和编解码等应用来讲,这样的表示方式数据量太大了。需要想办法在不太影响感觉的情况下,对原始数据的表示方法进行更改,减少数据量。

          无论中间处理过程怎样,最终都是为了展示给人观看,这样的更改,也是从人眼睛的特性出发,和发明 RGB 三原色表示方法的出发点是一样的。

         于是我们使用 Y,Cb,Cr 模型来表示颜色。 Iain 的书中写道: The human visual system (HVS) is less sensitive to colour than to luminance (brightness). 人类视觉系统(其实就是人的眼睛)对亮度的感觉比对颜色更加敏感。

         在 RGB 色彩空间中,三个颜色的重要程度相同,所以需要使用相同的分辨率进行存储,最多使用 RGB565 这样的形式减少量化的精度,但是 3 个颜色需要按照相同的分辨率进行存储,数据量还是很大的。所以,利用人眼睛对亮度比对颜色更加敏感,将图像的亮度信息和颜色信息分离,并使用不同的分辨率进行存储,这样可以在对主观感觉影响很小的前提下,更加有效的存储图像数据。

        YCbCr 色彩空间和它的变形(有时被称为 YUV )是最常用的有效的表示彩色图像的方法。 Y 是图像的亮度( luminance/luma )分量,使用以下公式计算,为 R,G,B 分量的加权平均值:

        Y = kr R + kgG + kbB

        其中 k 是权重因数。

        上面的公式计算出了亮度信息,还有颜色信息,使用色差( color difference/chrominance 或 chroma )来表示,其中每个色差分量为 R,G,B 值和亮度 Y 的差值:

   Cb = B - Y

   Cr = R - Y

Cg = G - Y

其中, Cb+Cr+Cg 是一个常数(其实是一个关于 Y 的表达式),所以,只需要其中两个数值结合 Y 值就能够计算出原来的 RGB 值。所以,我们仅保存亮度和蓝色、红色的色差值,这就是 (Y,Cb,Cr) 。

相比 RGB 色彩空间, YCbCr 色彩空间有一个显著的优点。 Y 的存储可以采用和原来画面一样的分辨率,但是 Cb,Cr 的存储可以使用更低的分辨率。这样可以占用更少的数据量,并且在图像质量上没有明显的下降。所以,将色彩信息以低于量度信息的分辨率来保存是一个简单有效的图像压缩方法。

在 COLOUR SPACES .17 ITU-R recommendation BT.601 中,建议在计算 Y 时,权重选择为 kr=0.299,kg=0.587,kb=0.114 。于是常用的转换公式如下:

Y = 0.299R + 0.587G + 0.114B

Cb = 0.564(B - Y )

Cr = 0.713(R - Y )

R = Y + 1.402Cr

G = Y - 0.344Cb - 0.714Cr

B = Y + 1.772Cb

有了这个公式,我们就能够将一幅 RGB 画面转换成为 YUV 画面了,反过来也可以。下面将画面数据究竟是以什么形式存储起来的。

在 RGB24 格式中,对于宽度为 w, 高度为 h 的画面,需要 w*h*3 个字节来存储其每个像素的 rgb 信息,画面的像素数据是连续排列的。按照 r(0,0),g(0,0),b(0,0);r(0,1),g(0,1),b(0,1);…;r(w-1,0),g(w-1,0),b(w-1,0);…;r(w-1,h-1),g(w-1,h-1),b(w-1,h-1) 这样的顺序存放起来。

在 YUV 格式中,以 YUV420 格式为例。宽度为 w 高度为 h 的画面,其亮度 Y 数据需要 w*h 个字节来表示(每个像素点一个亮度)。而 Cb 和 Cr 数据则是画面中 4 个像素共享一个 Cb,Cr 值。这样 Cb 用 w*h/4 个字节, Cr 用 w*h/4 个字节。

YUV 文件中,把多个帧的画面连续存放。就是 YUV YUV YUV….. 这样的不断连续的形式,而其中每个 YUV ,就是一幅画面。

在这单个 YUV 中,前 w*h 个字节是 Y 数据,接着的 w*h/4 个字节是 Cb 数据,再接着的 w*h/4 个字节为 Cr 数据。

在由这样降低了分辨率的数据还原出 RGB 数据的时候,就要依据像素的位置找到它对应的 Y,Cb,Cr 值,其中 Y 值最好找到,像素位置为 x,y 的话, Y 数据中第 y*width+x 个数值就是它的 Y 值。 Cb 和 Cr 由于是每 2x2 像素的画面块拥有一个,这样 Cb 和 Cr 数据相当于两个分辨率为 w/2 * h/2 的画面,那么原来画面中的位置为 x,y 的像素,在这样的低分辨率画面中的位置是 x/2,y/2 ,属于它的 Cb,Cr 值就在这个地方: (y/2)*(width/2)+(x/2) 。

为了直观起见,再下面的图中,分别将 Y 画面 (Cb,Cr=0) 和 Cb,Cr 画面 (Y=128) 显示出来,可见 Cb,Cr 画面的分辨率是 Y 画面的 1/4 。但是合成一个画面之后,我们的眼睛丝毫感觉不到 4 个像素是共用一个 Cb,Cr 的。

 



        Y 画面

 


        Cb,Cr 画面

将 Cb,Cr 画面放大观察,里面颜色相同的块都是 2x2 大小的。

附件为 Windows Mobile 上使用公式进行 YUV 到 RGB 转换的程序。其中需要注意的是 Cb,Cr 在计算过程中是会出现负数的,但是从 -128 到 127 这些数值都用一个字节表示,读取的时候就映射 0 到 255 这个区间,成为了无符号的值,所以要减去 128 ,才能参与公式计算。这样的运算有浮点运算,效率是比较低的,所以要提高效率的话,一般在实用程序中使用整数计算或者查表法来代替。还有,运算后的 r,g,b 可能会超过 0-255 的区间,作一个判断进行调整就可以了。

 

来自: http://hi.baidu.com/ykdsea/blog/item/c0245aa1c86cab8e471064c3.html

量化策略分享之首板低开 这个量化策略的核心是选择在低位、首次涨停后次日低开的股票,开盘时买入,上午有盈利就卖出,没有就拿到尾盘在卖出;策略优点在于选择的股票在低位,风险较低,并且刚启动首板,有大资金介入,第二天能快速跑路。 阅读详情

相关推荐

MatterPort3D 数据集下载

【代码】MatterPort3D 数据集下载。

qq_44106838的博客 6783

彩色空间转化——RGB与YUV的转换

一、原理分析 由现代电视原理知识可知亮度和色差计算公式为: Y=0.2990R+0.5870G+0.1140B R-Y=0.7010R-0.5870G-0.1140B B-Y=-0.2990R-0.5870G+0.8860B 为使色差信号的动态范围控制在-0.5~+0.5之间,要对色差信号进行归一化处理,引入压缩系数后可以得到U、V的计算公式: U=-0.1684R-0.3316G+0.5B V=0.5R-0.4187G-0.0813B 此时得到的U、V范围在-128~127之间,为了避免出现负数,

weixin_52188595的博客 1565

RGB,YUV的来历及其相互转换

 在视频等相关的应用中,YUV是一个经常出现的格式。本文主要以图解的资料的形式详细描述YUV和RGB格式的来由,相互关系以及转换方式,并对C语言实现的YUV转为RGB程序进行介绍。         人类眼睛的色觉,具有特殊的特性,早在上世纪初,Young(1809)和Helmholtz(1824)就提出了视觉的三原色学说,即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当

flycofei的专栏 1887

西门子S7-1200与FUNUC机器人MODBUS TCP通信

PLC与机器人通讯

Illusssion的博客 1万+

片上眼图(Eye-opening monitor)

当它们值不同的时候error counter +1,通过统计RX到的码元个数、error counter,可以获得offset sampler上下左右不停的调整位置时的一个误码率(BER),通过这个误码率去描绘出眼图。如上图所示,eye-scan RX端 offset sampler独立且并行的和使用CDR sample的采样电路一起跑,offset-sampler可以任意调整水平(time)和垂直(voltage)方向的偏移(如下图所示),在一个UI内产生一个全新的sample点。

沈土豪的书屋 4418

YUV 与RGB之间的变换

颜色空间是一个三维坐标系统,每一种颜色由一个点表示。在 RGB 颜色空间中,红,绿,蓝是基本元素。RGB 格式是显示器通常使用的格式。在 YUV 空间中,每一个颜色有一个亮度信号 Y,和两个色度信号 U 和 V。亮度信号是强度的感觉,它和色度信号断开,这样的话强度就可以在不影响颜色的情况下改变。YUV 格式通常用于 PAL制,即欧洲的电视传输标准,而且缺省情况下是图像和视频压缩的标准。大多数的

gooogleman#foxmail.com 3340

TDDFT计算软件Octopus学习笔记(二):基态计算(Si)

本文以硅为例,来进行基态计算。

陈啸的博客 7307

YUV颜色编码解析 ---- Good

come from :https://www.jianshu.com/p/a91502c00fb0 YUV YUV是一种颜色空间,基于YUV的颜色编码是流媒体的常用编码方式。Y表示流明,U、V表示色度、浓度,这种表达方式起初是为了彩色电视与黑白电视之间的信号兼容。 对于图像每一点,Y确定其亮度,UV确认其彩度。 Y'CbCr也称为YUV,是YUV的压缩版本,不同之处在于Y'CbCr用于数字...

zmjames2000 Just record 510

平衡小车动力学建模

两轮自平衡小车由车体和双轮两部分组成,可以看成一个移动的倒立摆,分别对车轮和车体进行力学分析,建立动力学模型,最后,通过对两者的分析给出系统的状态空间表达式。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjiPEUVJ-1679470559950)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230322110521545.png)]

qq_23096319的博客 9056

SAP 行业扫盲系列之一:SAP 从业者的分类

本文简单介绍了 SAP 从业者的分类,限于笔者狭隘的视角,可能存在遗漏或者不恰当的地方,希望大家在评论区指出。 那些在知乎咨询上向我提问关于进入 SAP 行业建议的朋友们,也请大家提问时注明自己想具体从事 SAP 行业哪一类的工作,这样才能得到更让你们满意的回复。感谢阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1589

RGB/YUV的来历及其相互转换

在由这样降低了分辨率的数据还原出RGB数据的时候,就要依据像素的位置找到它对应的Y,Cb,Cr值,其中Y值最好找到,像素位置为x,y的话,Y数据中第y*width+x个数值就是它的Y值。Cb和Cr由于是每2x2像素的画面块拥有一个,这样Cb和Cr数据相当于两个分辨率为w/2 * h/2的画面,那么原来画面中的位置为x,y的像素,在这样的低分辨率画面中的位置是x/2,y/2,属于它的Cb,Cr值就在这个地方:(y/2)*(width/2)+(x/2)。

weixin_46283037的博客 545

小程序跳转链接实战:https://wxaurl.cn/、weixin://dl/business/ 跳转与明文 URL Scheme 生成指南

本文聚焦小程序跳转链接开发核心技术,深入解析 https://wxaurl.cn/*TICKET* 与 weixin://dl/business/?t= *TICKET* 两种链接的生成方法。详细阐述生成前的准备工作、服务端接口调用步骤及注意事项,同时剖析 iOS 与 Android 系统在链接适配方面的差异。此外,针对明文 URL Scheme 获取,从平台设置、拼接规则、使用限制等方面展开讲解,并结合实际应用案例提出优化建议,帮助开发者快速掌握小程序跳转链接生成与明文URL Scheme获取的关键技术。

邓邓子的博客 2万+

RGB,YUV 的来历及其相互转换

在视频等相关的应用中,YUV是一个经常出现的格式。本文主要以图解的资料的形式详细描述YUV和RGB格式的来由,相互关系以及转换方式,并对C语言实现的YUV转为RGB程序进行介绍。     人类眼睛的色觉,具有特殊的特性,早在上世纪初,Young(1809)和Helmholtz(1824)就提出了视觉的三原色学说,即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光

1485

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: linux下安装java1.5的源
下一篇: Android 系统核心或驱动的开发之Android repo 魔法
lb015331
博客等级 码龄19年 22粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值