RGB和YUV之比较【转】
转自:http://blog.csdn.net/qfnu08zzr/article/details/6763159
版权声明:本文为博主原创文章,未经博主允许不得转载。
RGB 原理
RGB 是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和(两盏灯的亮度嘛!),越混合亮度越高,即加法混合。
有色光可被无色光冲淡并变亮。如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。知道它的混合原理后,在软件中设定颜色就容易理解了。
红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。
红、绿、蓝三个颜色通道每种色各分为 255 阶亮度,在 0 时 “ 灯 ” 最弱 —— 是关掉的,而在 255 时 “ 灯 ” 最亮。当三色数值相同时为无色彩的灰度色,而三色都为 255 时为最亮的白色,都为 0 时为黑色。
RGB 颜色称为加成色,因为您通过将 R 、 G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。 加成色用于照明光、电视和计算机显示器。 例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。 这些颜色若发生重叠,则产生青、洋红和黄。
对一种颜色进行编码的方法统称为 “ 颜色空间 ” 或 “ 色域 ” 。用最简单的话说,世界上任何一种颜色的 “ 颜色空间 ” 都可定义成一个固定的数字或变量。 RGB (红、绿、蓝)只是众多颜色空间的一种。采用这种编码方法,每种颜色都可用三个变量来表示 - 红色绿色以及蓝色的强度。记录及显示彩色图像时, R GB 是最常见的一种方案。但是,它缺乏与早期黑白显示系统的良好兼容性。因此,件多电子电器厂商普遍采用的做法是,将 RGB 转换成 YUV 颜色空同,以维持兼容,再根据需要换回 RGB 格式,以便在电脑显示器上显示彩色图形。
RGB24 是指 R , G , B 三个分量各占 8 位
RGB32 是指 R , G , B , A 四个分量各占 8 位
在 Windows 桌面属性外观中编辑颜色时,有 YUV 和 RGB 两种编辑 方法。
YUV 主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与 RGB 视频信号传输相比,它最大的优点在于只需占用极少的频宽( RGB 要求三个独立的视频信号同时传输)。其中 “Y” 表示明亮度( Luminance 或 Luma ),也就是灰阶值;而 “U” 和 “V” 表示的则是色度( Chrominance 或 Chroma ),作用是描述影像色彩及饱和度,用于指定像素的颜色。 “ 亮度 ” 是透过 RGB 输入信号来建立的,方法是将 RGB 信号的特定部分叠加到一起。 “ 色度 ” 则定义了颜色的两个方面 ─ 色调与饱和度,分别用 Cr 和 CB 来表示。其中, Cr 反映了 GB 输入信号红色部分与 RGB 信号亮度值之间的差异。而 CB 反映的是 RGB 输入信号蓝色部分与 RGB 信号亮度值之同的差异。
采用 YUV 色彩空间的重要性是它的亮度信号 Y 和色度信号 U 、 V 是分离的。如果只有 Y 信号分量而没有 U 、 V 分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用 YUV 空间正是为了用亮度信号 Y 解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。
YUV 与 RGB 相互转换的公式如下( RGB 取值范围均为 0-255 )︰
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
在 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 等。
主要的采样格式有 YCbCr 4:2:0 、 YCbCr 4:2:2 、 YCbCr 4:1:1 和 YCbCr 4:4:4 。其中 YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值 ( 也就是 Y 值 ) ,每 2x2 个点保存一个 Cr 和 Cb 值 , 图像在肉眼中的感觉不会起太大的变化。所以, 原来用 RGB(R , G , B 都是 8bit unsigned) 模型, 1 个点需要 8x3=24 bits (如下图第一个图),(全采样后, YUV 仍各占 8bit )。按 4:1:1 采样后,而现在平均仅需要 8+(8/4)+(8/4)=12bits ( 4 个点, 8*4 ( Y ) +8(U)+8(V)=48bits ) , 平均每个点占 12bits( 如下图第二个图 ) 。这样就把图像的数据压缩了一半。
上边仅给出了理论上的示例,在实际数据存储中是有可能是不同的,下面给出几种具体的存储形式:
( 1 ) YUV 4:4:4
YUV 三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常 8 比特),经过 8 比特量化之后,未经压缩的每个像素占用 3 个字节。
下面的四个像素为 : [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的码流为 : Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
( 2 ) YUV 4:2:2
每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是 4:4:4 的一半。对非压缩的 8 比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用 4 字节内存。
下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 V3
映射出像素点为: [Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]
( 3 ) YUV 4:1:1
4:1:1 的色度抽样,是在水平方向上对色度进行 4:1 抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的 8 比特量化的视频来说,每个由 4 个水平方向相邻的像素组成的宏像素需要占用 6 字节内存。
下面的四个像素为 : [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的码流为 : Y0 U0 Y1 Y2 V2 Y3
映射出像素点为: [Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]
( 4 ) YUV4:2:0
4:2:0 并不意味着只有 Y , Cb 而没有 Cr 分量。它指得是对每行扫描线来说,只有一种色度分量以 2:1 的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是 4:2:0 的话,下一行就是 4:0:2 ,再下一行是 4:2:0... 以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是 2:1 ,所以可以说色度的抽样率是 4:1 。对非压缩的 8 比特量化的视频来说,每个由 2x2 个 2 行 2 列相邻的像素组成的宏像素需要占用 6 字节内存。
下面八个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
[Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8]
存放的码流为: Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8
映射出的像素点为: [Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]
[Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]
RGB和YUV之比较【转】的更多相关文章
- 多媒体编程基础之RGB和YUV
一.概念 1.什么是RGB? 对一种颜色进行编码的方法统称为“颜色空间”或“色域”.用最简单的话说,世界上任何一种颜色的“颜色空间”都可定义成一个固定的数字或变量.RGB(红.绿.蓝)只是众多颜色空间 ...
- 认识RGB和YUV
多年来,对于大部分人来说,对图形信号的认识不外有三种:射频信号,复合视频信号,S视频信号.射频信号是由复合视频信号调到高频上,普通电视机的天线输入信号用于射频信号,复合视频信号的输入出是用RGA端子. ...
- 关于RGB转换YUV的探讨与实现
最近在Android手机上使用相机识别条形码工作取得了比较理想的进展,自动识别功能基本完成,然而在手动识别指定条形码图片时遇到困难,由于Zxing开源Jar包识别图片的颜色编码式为YUV,而普通的图片 ...
- 【性能优化】优化笔记之一:图像RGB与YUV转换优化
本文主要介绍如何优化您自己的CODE,实现软件的加速.我们一个图象模式识别的项目,需要将RGB格式的彩色图像先转换成黑白图像.图像转换的公式如下: Y = 0.299 * R + 0.587 * G ...
- Android 音视频编解码——RGB与YUV格式转换
一.RGB模型与YUV模型 1.RGB模型 我们知道物理三基色分别是红(Red).绿(Green).蓝(Blue).现代的显示器技术就是通过组合不同强度的红绿蓝三原色,来达成几乎任何一种可见光的颜色. ...
- LCD LED OLED区别 以及RGB、YUV和HSV颜色空间模型
led 液晶本身不发光,而是有背光作为灯源,白色是由红绿蓝三色组成,黑色是,液晶挡住了led灯光穿过显示器. lcd比led更薄. oled:显示黑色时,灯是灭的,所以显示黑色更深,效果更好. 这就不 ...
- 音视频编解码——RGB与YUV格式转换
一.RGB模型与YUV模型 1.RGB模型 我们知道物理三基色分别是红(Red).绿(Green).蓝(Blue).现代的显示器技术就是通过组合不同强度的红绿蓝三原色,来达成几乎任何一种可见光的颜色. ...
- 视音频数据处理入门:RGB、YUV像素数据处理
===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...
- [转载] 视音频数据处理入门:RGB、YUV像素数据处理
===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...
- 视音频数据处理入门:RGB、YUV像素数据处理【转】
转自:http://blog.csdn.net/leixiaohua1020/article/details/50534150 ==================================== ...
随机推荐
- 【数学 BSGS】bzoj2242: [SDOI2011]计算器
数论的板子集合…… Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最 ...
- Golang 谷歌搜索api 实现搜索引擎(前端 bootstrap + jquery)
Golang 谷歌搜索api 实现搜索引擎(前端 bootstrap + jquery) 体验 冒号搜索 1. 获取谷歌搜索api 谷歌搜索api教程 2. 后台调用 程序入口 main.go // ...
- Docker系列一:Docker的介绍和安装
Docker介绍 Docker是指容器化技术,用于支持创建和实验Linux Container.借助Docker,你可以将容器当做重量轻.模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对 ...
- OC8051项目启动
- COMP9021--6.6
1. 在print结尾处添加end='' print默认在字符串结尾处添加换行符,添加end=''后表示这个语句并没有结束,结尾不换行 2. 为了减少重复代码以及便于修改,我们可以编写函数 1) 函数 ...
- Python入门基础--字符编码与文件处理
字符编码 文本编辑器存取文件的原理 #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失 #2.要想永久保存,需要点击保存按钮:编辑器把内 ...
- Java-basic-7-面向对象
继承 在Java中,每个子类只能有一个父类,但可以继承多个接口. 子类继承父类,类定义的时候用extends. 继承接口,用implements. 重写 声明为final的方法不能被重写. 声明为st ...
- poj 3616 奶牛产奶问题 dp算法
题意:奶牛产奶,农夫有m个时间段可以挤奶,在工作时间 f t 内产奶量为m,每次挤完奶后,奶牛需要休息R.问:怎么安排使得产奶量最大? 思路:区间dp dp[i]表示第i个时段 对农夫工作的结束时间 ...
- 二叉苹果树——树形Dp(由根到左右子树的转移)
题意:给出一个二叉树,每条边上有一定的边权,并且剪掉一些树枝,求留下 Q 条树枝的最大边权和. ( 节点数 n ≤100,留下的枝条树 Q ≤ n ,所有边权和 ∑w[i] ≤30000 ) 细节:对 ...
- Linux数据库忘记密码-修改方法
一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"E ...