zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SQL Server中的执行引擎入门
    SQL Server复制入门(一)复制简介
    Django 代码片断收集(持续更新)
    今天思路有点乱,随便记一点关于 xmlrpc 的
    PIL 学习笔记(1)
    Django newforms
    在 Django 的 View 中利用 function decorator 可实现一定程度的代码重用
    今天在 Linux 上顺利编译 PIL 1.1.6 成功
    用 PIL 写了个简单的缩略图生成程序
    [转贴] 中药内外合治急慢性鼻窦炎
  • 原文地址:https://www.cnblogs.com/agllero/p/4468321.html
Copyright © 2011-2022 走看看