RGB/YUV/YCbCr--关于显示,颜色你需要了解的一些事

本文来自:我爱研发网(52RD.com) - R&D大本营 详细出处:http://www.52rd.com/Blog/Detail_RD.Blog_SHRDFresh_64107.html

工作中常听说RGB/YUV/YCbCr 这样一些名词,概念上似乎很混淆?这里是一个简介,部分内容来自wiki,理解不对的地方欢迎指正。

A:首先两个基本概念:

Color model和Color Space.

1. Color Model: 为了表达人眼观察到的颜色,人们从数学模型上定义了一系列不同的color model,我们常见的有RGB,CMYK,YUV,YPbPr/YCbCr。

2. Color Space:为了把这样的Color Model数学模型投射到相应的数学表达,根据对于颜色数据的不同处理方式,存储格式等等,产生了不同的Color Space。

本文主要介绍Color Model。Color Space常常涉及到许多具体的数学操作。两者在概念上有时候也会混淆一谈,倒也无所谓,基本上只有行业内人士才需要严格区分概念。

详细可以参考wiki: http://en.wikipedia.org/wiki/Color_space

B: 常用的Color Model简介:

http://en.wikipedia.org/wiki/Color_models

RGB在计算机显示中广泛采用(比如LCD,LED),其原色(Primary color)为RGB,是一种加性color model。意思是它是用哪几种光源来投射合成颜色的。几种光源(在纯黑背景上)被混合在一起。也有采用RGBA格式(GPU里面), Alpha代表透明度。
CMYK在印刷工业中广泛使用,其原色(Primary color)为 cyan, magenta, yellow, key (black)。是一种减性color model。意思是它是用几种墨水混合来表达被(白色背景)反射出来的颜色,以合成人眼需要识别的颜色。
YIQ在 NTSC 电视系统里面广泛使用。Y为亮度信息,IQ为色度信息。
YUV在PAL电视系统,以及很多Video 捕捉系统里面使用。Y为亮度信息,UV为色差(Chroma)信息。U/V分别等于blue–luminance/red–luminance。
注:Y’UV vs YUV

(1)Y表示辉度信息(luminance)—或者说是亮度的感知信息

(2)Y’ 表示亮度(Luma)信息—或者说是电子化的亮度信息(和显示系统的硬件信号,比如电压直接相关),

(3)因为人眼对于亮度的感知与实际的显示亮度不是成正比关系的,并不是说亮度增加一倍,人眼感知的亮度就会增加一倍,二者之间有非线性的关系。这个装换就是Gamma矫正。http://en.wikipedia.org/wiki/Gamma_compression

YPbPr/YCbCr: 是YUV坐标归一化后的一种color model,视频系统里面广泛采用。YPbPr是YCbCr的模拟版本,二者实际上是一回事,只是用于模拟和数字格式而已。

C:各种颜色模式之间的恩恩怨怨:

YIQ和YUV之间的关系: YIQ color space 相对YUV color space旋转 33°。
YUV与YPbPr/YCbCr:历史上,YUV被用于电视系统PAL (NTSC里面使用YIQ,是YUV color space的变种,见上文 )的颜色信号的模拟编码;YPbPr/YCbCr 则被用于视频和静态图像处理系统中的颜色编码(例如MPEG/JPEG)。如今,随着两种系统在网络时代的融合,YUV常常被混用于描述被YCbCr编码之后的文件格式 (比如,从ISP输出的数据格式)。
在DVD时代,很多DVD厂商拿YPbPr来表达“逐行扫描”,YCbCr来表达“隔行扫描”,这里无论YPbPr还是YCbCr都是和CRT的扫描方式有关,都是模拟信号--其实和Color model完全不是一码事。属于偷换概念。

D:实际应用举例

现在移动终端中常用到的Camera Sensor,Spec.一般会指明支持哪些Color format.常常看到类似RGB,或者RGB888,YUV,或者YUV422,YUV420之类的输出格式表示:

RGB888:指的是输出信号用RGB格式,RGB的颜色深度均为8(即一个Pixel的颜色需要3X8=24bit来表示)。传统上有人称为RGB接口,并口,PPI口(输出简单,就是8或者16或者24根信号线)等等。不过MIPI口也是可以支持的。

RGB 格式的缺点是三种颜色的权重是类似的,因此信息很难压缩也不适合在带宽受限系统中传输—但是很适合pixel-by-pixel的画图板式操作,所以在显示系统里面被大量使用—比如Mobile display。对于

YUV422: 比较传统的YUV格式是YUV444,表示每个YUV分量均由4bit来表示。不过,犹豫人眼对于亮度信息(Y)的敏感度大于对于色度信息(UV)的敏感度,因此为了减少信息带宽,在对于视觉要求不高的应用中,部分色度信息可以被减少—称为色度抽样(Chroma subsampling),这样就有了YUV422,甚至是YUV420。

http://en.wikipedia.org/wiki/Chroma_subsampling

RAW data:

RAW data在影像学上只是一种概念,没有统一的标准,其基本思想是把原始的图像数据用尽可能靠近sensor感光输出的信号储存起来供后续处理。相对比较通用的RAW格式为DNG (Adobe). 对于移动设备中常用的CMOS sensor,多数不提供RAW data的输出(这一般是单反的feature)。一般会用Bayer格式,这个名字来自Bayer 滤镜,指的是一束光线投射到sensor上并产生相应的输出信号的透镜。输出的格式通是RGBG,GRGB or RGGB.之所以有两个G分量,一方面最小的感光面用矩形在几何上比较好安排(因此有4个感光分量),另一方面人眼对于绿色的敏感度更高一些。

http://en.wikipedia.org/wiki/Bayer_filter

http://en.wikipedia.org/wiki/Raw_image_format

本文来自:我爱研发网(52RD.com) - R&D大本营
详细出处:http://www.52rd.com/Blog/Detail_RD.Blog_SHRDFresh_64107.html

时间: 2024-09-27 07:33:07

RGB/YUV/YCbCr--关于显示,颜色你需要了解的一些事的相关文章

RGB, YUV及相关标准

最近在一次排查问题的过程中发现色彩空间及色彩空间转换也有很多技术细节,而理清这些细节能帮助我们更准确的定位视频方面的问题. 1. 色彩空间 色彩空间一词源于英文的“Color Space”,色彩学中,人们建立了多种色彩模型,以一维.二维.三维甚至四维空间坐标来表示某一色彩,这种用坐标系统来定义的色彩范围即色彩空间. 例如计算机监视器上显示颜色的时候,通常使用 RGB(红色.绿色.蓝色)色彩空间定义,红色.绿色.蓝色被当作 X.Y 和 Z坐标轴.另外一个生成同样颜色的方法是使用色相(X 轴).饱和

Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别

Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别 1.1. 色彩的三要素 -- 色相.明度.纯度1 1.2. YUV三个字母中,其中"Y"表示明亮度(Lumina nce或Luma),也就是灰阶值:而"U"和"V"表示的则是色度(Chrominance或Chroma)2 1.3. HSB 和 HSV 是是一样的,只是叫法不同,HSL 则还有一些细微的区别:2 2. RGB 是对机器很友好的色彩模式,但

最简单的视音频播放示例4:OpenGL播放RGB/YUV

本文记录OpenGL播放视频的技术.OpenGL是一个和Direct3D同一层面的技术.相比于Direct3D,OpenGL具有跨平台的优势.尽管在游戏领域,DirectX的影响力已渐渐超越OpenGL并被大多数PC游戏开发商所采用,但在专业高端绘图领域,OpenGL因为色彩准确,仍然是不能被取代的主角. OpenGL简介 从网上搜集了一些有关OpenGL简介方面的知识,在这里列出来.开放图形库(英语:Open Graphics Library,缩写为OpenGL)是个定义了一个跨编程语言.跨平

RGB 与 (RGB转 YCbCr再转为 RGB)的图像

RGB 与 (RGB转 YCbCr再转为 RGB)的图像   不可逆,可以从 矩阵的逆运算看出来. 附上 matlab 代码: clc,clear; Source=imread('1.jpg');%读入原始RGB图像 figure(1); subplot(1,2,1); imshow(Source):title('original image');%显示图像 [r c d]=size(Source);%计算图像大小 %------计算红色分量并显示分解图------% R(:,:,1)=Sour

Qt圆角功能和状态组合按钮,可以显示颜色或者图片

使用两个按钮和一个Label封装了一个功能和状态圆角组合按钮,Label用来显示颜色或者图片. 实现的效果如下: 显示图片: 显示红色: 其中颜色或者图片是通过函数设置进去的. 两个按钮:前一个是状态按钮,可以Check,表示使用此项功能:后一个按钮是功能按钮,可以Check,表示跳转到此功能对应的选项.两个按钮都有信号,可以通过信号进行连接你需要的槽函数. 具体实现代码: #include <QPushButton> #include <QLabel> class QStateF

lcd中像素深度bpp和像素格式(比如RGB,YUV)的关系

像素深度(bits per pixel,简称bpp) 一个像素的颜色在计算机中由多少个字节数据来描述.计算机中用二进制位来表示一个像素的数据,用来表示一个像素的数据位越多,则这个像素的颜色值更加丰富.分的更细,颜色深度就更深. 一般来说像素深度有这么几种:1位.8位.16位.24位.32位. 像素格式(pixel format)像素色彩按分量的大小和排列.这种格式以每个像素所使用的总位数以及用于存储像素色彩的红.绿.蓝和 alpha 分量的位数指定. 比如RGB565, RGB24, RGB32

最简单的视音频播放演示样例7:SDL2播放RGB/YUV

===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频播放演示样例2:GDI播放YUV, RGB 最简单的视音频播放演示样例3:Direct3D播放YUV,RGB(通过Surface) 最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture) 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV 最简单的视音频播放演示样例

RGB的三维模型与渐变色-颜色系列之一

一.前言 以下与颜色相关的日志记录了俺学习颜色的有关容,限于编写时的水平,难免存在缺点与错误,希望得到朋友.同行和前辈的指教,非常感谢.1.  RGB的三维模型与渐变色-颜色系列之一2.  <颜色代码自调器>的构成及其操作-颜色系列之二3.  H型各颜色代码渐变的调色规律-颜色系列之三4. 教你如何分析颜色代码的颜色-颜色系列之四5. GIF综述及彩信格式-颜色系列之五6.  颜色代码-色卡-带中文名颜色代码汇总-颜色系列之六 7.  十六进制速记的html颜色代码-已命名颜色 二.问题的提出

ubuntu之修改ls显示颜色

Linux 系统中 ls 文件夹的痛苦我就不说了,为了不伤眼睛,一般 ssh 终端背景都用的黑色,文件夹又是你妈的深蓝色,每次看文件夹都要探头仔细去看.这下彻底解决这个问题. 因为ubuntu下的/etc/目录里没有DIR_COLORS, 所以费了点劲儿. 1. 利用dircolors命令,查看我们的系统当前的文件名称显示颜色的值,然后利用管道重定向到用户目录下的任意一个文件(这里我们创建了一个.dircolors文件) 命令1: cd ~ 命令2: dircolors -p > .dircol