以下文章来源于疯狂的FPGA,作者CrazyBingo。文章仅用于学术分享。

正式开始前,我们有必要介 绍一下色彩模型。色彩模型有很多种类,比如RGB三原色模型、CMYK四原色模型、YUV/YCbCr颜色模型等,由于我们本章要进行RGB转YCbCr算法的实现,因此这里我们重点介绍RGB和YCbCr色彩模型。1.1.RGB三原色模型

为了研究RGB三原色模型,我们需要从光线的底层物理组成开始分析。光也属于电磁波,有着同样的特性,这里给出了电磁波光谱图,如下图所示:

图. 电磁波光谱图

在电磁波波段中,400nm~700nm范围内为可见光波段,即人类肉眼可见的光。大自然的色彩均是由可见光组成的:雨后见彩虹,或者三棱镜色散后呈现的“红橙黄绿青蓝紫”,便是自然光(白光)分解的结果。分解后的光频率与波长如下表所示:

注:由于青色与蓝色、绿色有一定程度的交叉,笔者参考了很多资料,均没有给出明确的界限,因此这里暂不给出具体参数。

通过不同样色、不同深浅的组合,能够再现大自然五彩缤纷。而我们人眼能观察到色彩,是因为照射到物体上的电磁波(光线)反射,有人眼感应后所形成的结果。人眼能分辨出“红橙黄绿青蓝紫”,并不是因为人眼具有这7种感光细胞,而是通过另外一种组合——“RGB三原色模型”。

所谓三原色模型,是认为人眼里有三种感光细胞,分别对红色、绿色和蓝色最敏感。人眼之所以看到各种颜色的光,主要是这三种细胞感觉综合的结果,而红、绿、蓝三色被称为三原色。虽然在历史上,出于不同的原因,到底将哪三种颜色作为三原色,有过争论,现在根据不同目的也有不同的选择。但是,最广为人知的,依然是红 绿蓝(RGB)三色。人眼存在着三种颜色的感光细胞,成为锥状感光细胞。

人眼在光线充足的环境中,能见到五颜六色,而在在光线比较暗的情况下,只能观察到物理的敏感程度,却不能感受到五颜六色的斑斓。因此,相关研究表明,人眼还存在着另外一种可见光细胞——柱状细胞,对光线强度的感应。这四种感光细胞对波长的敏感程度如下所示:

这里RGB三种感光细胞都可覆盖可见光范围,但是每一种细胞最敏感的的波长不同。分别能感应RGB的细胞,被称为红视锥细胞、绿视锥细胞、蓝视锥细胞。而每一种细胞,并非刚刚好对准响应颜色的波长中心值,这一点主要取决于人眼,而非电磁波。人眼所看到的的彩色图像,是RGB以不同强度混合进入眼睛,综合出来的结果。由这三种细胞受到不同强度的反应结果,组合出的颜色,成为“三颜刺激”。

计算机中,使用最广泛的就是 RGB 三原色模型了。计算机使用离散的数字信号来描述数据,RGB 模型也不例外。对于RGB三原色的不同组合,能实现自然界真彩的斑斓。而针对同一强度的RGB三原色,可以组成2 3 =8种颜色,如下图所示:

饱和度均为100%的RGB三原色组合模式与组合后的结果如下表所示:

序号

R

G

B

Result

备注

1

1

0

0

RED

2

0

1

0

GREEN

绿

3

0

0

1

BLUE

4

1

1

1

WHITE

5

0

0

0

BLACK

6

1

1

0

YELLOW

7

1

0

1

CYAN

8

1

1

1

ROYAL

饱和度均为100%的RGB三原色能组合成8种颜色,那么当RGB饱和度在0~100%(色彩深度)变化,就能细分组合出更多的颜色。计算机处理的BMP图片,为24Bit的位图,即每一通道的颜色可以细分为2 8 =256级别(RGB888),即每一通道的色彩分辨率能达到了256级,总共能综合出的颜色种类计算如下:

1.2.YCbCr色域介绍

YCbCr是在世界数字组织视频标准研制过程中,作为ITU - R BT.601 建议的一部分,其实是YUV经过缩放和偏移的翻版。YCbCr由Y(Luminance)、Cb(Chrominance-Blue)和Cr(Chrominance-Red)组成,其中Y表示颜色的明亮度和浓度,而Cb和Cr则分别表示颜色的蓝色浓度偏移量和红色浓度偏移量。

医学研究证明,人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到图像质量的变化。如果只有Y信号分量,而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。我们通常把YUV和YCbCr概念混在一起,但其实这两者还是有挺大的区别,主要区分介绍如下:

1)首先,YUV是一种模拟信号,其色彩模型源于RGB模型,即亮度与色度分离,适合图像算法的处理,常应用于在模拟广播电视中,其中Y∈ [0,1] U,V∈[-0.5,0.5] 。

2)其次,YCbCr是一种数字信号,其色彩模型源于YUV模型,它是YUV压缩和偏移的版本(所谓偏移就是从[-0.5,0.5] 偏移到[0,1 ],因此计算时候会加128),在数字视频领域应用广泛,是计算机中应用最多的格式,包括JPEG,MPEG,H.264/5, AVS等都采用YCbCr格式,我们通常广义的讲的YUV,严格的讲应该就是YCbCr。

YCbCr格式可以继续细分,有2种格式:tv range与full range,主要区别如下:

1)tv range:

Y∈[16,235],Cb∈[16-240] ,Cr∈[16-240] ,主要是广播电视采用的数字标准;

2)full range:

Y、Cb、Cr∈[0-255] ,主要是PC端采用的标准,所以也称pc range。

关于为何tv range要量化到16-235,主要是由于YUV最终在模拟域传输,因此为了防止数模转换时引起过冲现象,于是将数字域限定在16-235。至于为什么选择16/235,可自行了解Gibbs Phenomenon吉布斯现象,这里不再继续展开。

所以RGB转YCbCr,得明确转tv range还是pc range;反之也可以通过像素值范围,去判断是tv range,还是pc range,甚至还得明确是什么格式范围,否则会导致偏色。如下图所示,为BT.601标准中YUV的UV坐标模型(U越大越蓝,V越大越红):

1)针对标准SDTV(标准分辨率电视),采用ITU-R BT.601数据格式,其中YCbCr为tv range,所以YCbCr也有一定的区间范围,因此给出RGB与YCbCr的相互转换公式如下:

2)针对标准HDTV(高清晰度电视),采用ITU-R BT.709数据格式,其参数略有不同,这里给出RGB与YCbCr的相互转换公式如下:

3)最后,针对full range或者pc range的YCbCr格式,这里YCbCr均为0-255的取值,其RGB与YCbCr的转换公式,如下:

因此在具体转换前,务必搞清楚当前的制式,否则很容易引起偏色甚至异常现象产生。另外,图像传感器可以配置输出RGB/YCbCr,对应的手册也一般也会给出转换公式,如下所示,为OV7725传感器手册中,RGB与YCbCr的转换关系。与前面介绍的full range下的RGB转YCbCr公式,还是有一些略微的区别。

RGB转YUV----RGB色域与YUV色域的介绍相关推荐

  1. YUV RGB 相互转换矩阵

    YUV RGB 相互转换矩阵 不同色域下的转换矩阵 "BT2020 625 D65" RGB2XYZ Matrix: XYZ2RGB Matrix: RGB2YUV Matrix: ...

  2. 转:YUV RGB 常见视频格式解析

    转: http://www.cnblogs.com/qinjunni/archive/2012/02/23/2364446.html YUV RGB 常见视频格式解析 I420是YUV格式的一种,而Y ...

  3. YUV / RGB 格式及快速转换算法

    1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确 ...

  4. 修改了一个YUV/RGB播放器

    最近在学习过程中查看YUV/RGB像素数据的时候,发现找不到一个合适的播放器.主流的YUV播放器大多只支持YUV格式播放,却不支持RGB格式数据播放.而我正好需要查看RGB像素数据.在Sourcefo ...

  5. 最简单的视音频播放示例2:GDI播放YUV, RGB

    ===================================================== 最简单的视音频播放示例系列文章列表: 最简单的视音频播放示例1:总述 最简单的视音频播放示例 ...

  6. YCbCr(YUV)与RGB转换公式以及常用颜色的yuv值

    YCbCr(YUV)与RGB转换公式以及常用颜色的yuv值 0 前言 一. 公式:基于BT.601-6 二.常用颜色值 0 前言 :找了很多转换公式,这次打算梳理一下,我只采纳了YUV标称的以及RGB ...

  7. YUV RGB格式分析,以及对应码率(带宽)计算

    如果排查的思路对你有帮助,请记住 消雨匆匆 . 码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的. 忽然前些天和之前的同事聚会,同事聊了一下他面试遇 ...

  8. yuv rgb 互转 公式 及算法

    1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用的过程,所以在不同的应用领域中为了更好更准确的 ...

  9. 数字图像处理 颜色空间RGB、HSI、CMYK、YUV的相互转换

    原理介绍: 颜色空间也称彩色模型(又称彩色空间或彩色系统)它的用途是在某些标准下用通常可接受的方式对彩色加以说明. 本质上,彩色模型是坐标系统和子空间的阐述.位于系统的每种颜色都有单个点表示.现在使用 ...

最新文章

  1. Caffe代码导读(4):数据集准备
  2. 【IPFS + 区块链 系列】 入门篇 - IPFS环境配置
  3. python写小说阅读器_用python实现自己的小说阅读器!
  4. Python 实现邮件发送功能(进阶)
  5. JS 正则(RegExp)
  6. 贝叶斯球(Bayes ball)
  7. 微信怎么at所有人_变速箱报废、发动机故障、车门下沉,全新马自达3到底怎么了?...
  8. 路由器最高速度/性能测试 - Windows 安装 IPerf3 及 使用方法
  9. 青花瓷运用-下载历史版本App
  10. php 图片木马,php图片木马怎么运行
  11. 优化设计-混合惩罚函数法-MATLAB编程
  12. mysql rm-rf_rm-rf误操作的恢复过程
  13. html简繁体转换,在线繁体字转换工具
  14. Python金融行业必备工具
  15. springboot整合rocketmq:一个消费者组怎么订阅多个topic
  16. python修改散点图中点的颜色_更改matplotlib中散点图点的颜色
  17. jenkins构建android并发布到蒲公英平台
  18. 图元和片元_顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)...
  19. ThinkPHP简介
  20. 年收入80亿、三年扩张四倍:1700人的Playrix已成休闲游戏新巨头

热门文章

  1. matlab 没有normcdf,Matlab 中标准 正态分布的密度函数是 normcdf(x,0,1) 。
  2. 公众号文章采集:原理与方法
  3. 超AI与AI对决:朗读纪晓岚千古绝对
  4. 三子棋游戏 2020-12-29
  5. Android - 抑制lint的Android XML的警告:tools:ignore
  6. 睢县职教中心计算机专业18年高考 成绩,夏邑县高级中学2018年高考成绩十大亮点...
  7. HTML.parser和正则解析,HTMLParser 的实现和使用
  8. Ansys Zemax | 如何使用 Zernike 凹陷表面对全反射系统进行建模
  9. 基于SSM的兼职论坛系统的设计与实现
  10. Cadence Allegro老是调用浏览器弹窗update