文章目录

  • 色彩空间与色彩模型
    • 色彩空间
    • 色彩模型
    • 不同色彩空间的比较
  • 1.RGB(采集与显示)
  • 2. YUV
    • YCbCr的两种常用格式
      • 1)ITU-R BT.601 conversion
      • 2)JPEG conversion
    • YUV相比RGB优缺点
    • YUV的常见采样格式
      • YUV444:无压缩,YUV三个信道的采样率相同,三个分量信息完整(通常为8bit)。每个Y独享一对UV分量。每个像素3字节。
      • YUV422:2:1的水平取样,垂直完全采样。每两个Y共用一组UV分量。每个像素2字节。
      • YUV411:4:1的水平取样,垂直完全采样。每四个Y共用一组UV分量。每个像素 8+(8/4)+(8/4)=12bits,1.5个字节。
      • YUV420:2:1的水平取样,垂直2:1采样。每四个Y共用一组UV分量。每个像素12bit,1.5个字节,采样方式不一样了。
      • YUV不同采样格式图示
      • YUV420与RGB888数据所占内存长度比较
      • 什么是4:4:4、4:2:2、4:2:0?
    • YUV存储格式
      • 紧缩格式(packed formats)
      • 平面格式(planar formats)
      • YUV420中,一些特殊的存储格式
        • YUV420p:planer模式,Y、U、V分别位于不同平面
        • YUV420sp,bi-planer或者two-planer双平面,Y在一个平面,UV在同一个平面交叉存储
    • OpenCV 中,RGB与YUV的互相转换
      • RGB与YUV444互转
      • RGB转YUV420p的YU12
      • RGB转YUV420p的YV12
      • YUV420p转RGB
      • YUV420sp转RGB

色彩空间与色彩模型

色彩空间

色彩空间(Color Space)[1]:is a specific organization of colors. In combination with physical device profiling, it allows for reproducible representations of color, in both analog and digital representations. A color space may be arbitrary, with particular colors assigned to a set of physical color swatches and corresponding assigned color names or numbers such as with the Pantone collection, or structured mathematically as with the NCS System, Adobe RGB and sRGB.

色彩空间是颜色的特定组织。 结合物理设备配置文件,它允许以模拟和数字表示的可再现颜色表示。 颜色空间可以是任意的,将特定颜色分配给一组物理色板和相应的分配颜色名称或数字,例如使用 Pantone(国际标准色卡)集合,或者使用 NCS 系统、Adobe RGB 和 sRGB 进行数学结构。

色彩模型

色彩模型(Color Model)[1]:is an abstract mathematical model describing the way colors can be represented as tuples of numbers (e.g. triples in RGB or quadruples in CMYK); however, a color model with no associated mapping function to an absolute color space is a more or less arbitrary color system with no connection to any globally understood system of color interpretation. Adding a specific mapping function between a color model and a reference color space establishes within the reference color space a definite “footprint”, known as a gamut, and for a given color model this defines a color space.

色彩模型是一种抽象的数学模型,描述了颜色可以表示为数字元组的方式(例如 RGB 中的三元组或 CMYK 中的四元组); 然而,没有与绝对颜色空间相关的映射函数的颜色模型或多或少是一个任意的颜色系统,与任何全球理解的颜色解释系统无关。 在颜色模型和参考颜色空间之间添加特定映射函数会在参考颜色空间内建立明确的“足迹”,称为色域,并且对于给定的颜色模型,这定义了颜色空间。

(非常不形象。。。)

不同色彩空间的比较

定义色彩空间时,通常使用 CIELAB(国际色差测算公式)或者 CIEXYZ 色彩空间作为参考标准。这两个色彩空间在设计时便要求包含普通人眼可见的所有颜色。

由于“色彩空间”有着固定的色彩模型和映射函数组合,非正式场合下,这一词汇也被用来指代色彩模型。这样的用法严格意义上是错误的。

1.RGB(采集与显示)

RGB色彩空间中的一种颜色是由红、绿、蓝光构成。由R、G、B三个分量组成。RGB颜色分量是跟设备相关的,不论是采集还是显示。在摄像头采集中,每个像素的颜色分量不仅取决于场景的颜色和光照,还取决于测量红、绿蓝分量的滤波器的光谱相应。在屏幕显示中,实际显示出来的颜色取决于显示器中红、绿、蓝光源的光谱。(所以,根据所使用的波长不同,可以有许多不同的RGB色彩空间。)

标准的RGB是24bit的,即每个分量8bit。考虑到带宽限制,也有16bit的RGB,R和B用5bit表示,G用6bit表示(因为人眼对绿色更敏感)。从16bit转到24bitRGB,不是添加0,而是添加2位(G)或3位(R、B)最高有效位。

为了克服RGB 的设备依赖性,人们又定义了一种不依赖上设备的sRGB,添加了光强与颜色分量数值之间的分线性γ映射。从RGB转换到sRGB,就是在色彩向量上乘以一个设备相关的红、绿、蓝光谱特性的3x3矩阵。这个变换由标定决定。

常见的RGB格式有RGB888,RGB565,RGB555,RGB24,RGB32(每个分量8比特,剩余8位空着),ARGB32(每个分量8比特,Alpha通道值8bit)等。

RGB的存储格式通常为BGRBGRBGR的顺序。(就是说存储的时候是BGRBGRBGR,像一个平面;我们以前用一些图像处理库比如opencv,读取数据给编程者看的时候,就是RGB各一个矩阵,类似一个三维矩阵)

Bitmap就是在RGB像素数据上加上数据头形成的文件格式。

2. YUV

YUV is a color encoding system typically used as part of a color image pipeline. It encodes a color image or video taking human perception into account, allowing reduced bandwidth for chrominance components, thereby typically enabling transmission errors or compression artifacts to be more efficiently masked by the human perception than using a “direct” RGB-representation.[2]

YUV 是一种色彩编码系统,通常用作彩色图像管道的一部分。 它在考虑人类感知的情况下对彩色图像或视频进行编码,从而减少色度分量的带宽,从而通常使传输错误或压缩伪影能够更有效地被人类感知掩盖,而不是使用“直接”RGB 表示。

Y′UV was invented when engineers wanted color television in a black-and-white infrastructure. They needed a signal transmission method that was compatible with black-and-white (B&W) TV while being able to add color. The luma component already existed as the black and white signal; they added the UV signal to this as a solution.

当工程师想要黑白基础下的彩色电视时,发明了 Y’UV。 他们需要一种与黑白 (B&W) 电视兼容的信号传输方法,同时能够添加颜色。 亮度分量已经作为黑白信号存在; 他们为此添加了UV(色度、浓度)信号作为解决方案。

YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL,Phase Alternation Line 相变线)。(YIQ用于NTSC彩色电视制式,YUV用于PAL制和SECAM彩色电视制式,而YCrCb用于计算机用的显示器。)

Y代表亮度(Luma,Luminance),UV代表色度(Chroma,Chrominance)。

YUV完全由RGB推导而来,亮度分量Y是RGB分量的组合,颜色分量由差分B-Y,R-Y(不用Green提供)提供。

二者的转化公式如下:

ITU-R BT.601定义了如下变量:

归一化之后的RGB(linear RGB, not gamma corrected RGB or sRGB)转换到YUV可以表示为:

此时Y、U、V的范围分别是[0, 1], [−Umax, Umax],[−Vmax, Vmax]。

YIQ将(U,V)旋转了33度,优点是减少了电视广播需要的带宽(因为与I分量相比人类对Q分量比较不敏感),缺点是需要9个乘法而不是上式中的5个。

严格来说,YUV是一种模拟表示,相应的数字表示为YCbCr。

YCrCb颜色空是由YUV颜色空间派生的一种颜色空间。YCbCr是在世界数字组织视频标准研制过程中作为ITU-R BT.601建议的一部分,其实是YUV经过缩放和偏移的翻版。YCrCb中的Y与YUV中的Y含义一致,Cb、Cr同样都指色彩,只是在表示方法上不同。在YUV家族中,YCbCr是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。

YCbCr的两种常用格式

1)ITU-R BT.601 conversion


缩放到具有上下动态裕量的8bit,平移后可以用无符号数表示。

2)JPEG conversion


使用完全的8bit输出表示每一个分量。

YUV相比RGB优缺点

相比RGB,YUV或者YCbCr的优点是减少通道之间的相关性。可以方便的对色彩进行阈值处理;简化了彩色图像的增强,例如对比度增强只需要在图像的Y分量上执行;可以对亮度和色彩进行不同策略的噪声去除等。

缺点是转化是RGB坐标系的旋转,需要浮点或者定点乘法来执行;缩放系数的选择必须保证每个RGB组合具有一个有效的YCbCr表示,可是逆变换是非真的,有些YCbCr组合落在RGB的有效范围之外,如果需要计算逆变换,那么意味着YCbCr需要更多位表示。

YUV的常见采样格式

YUV444:无压缩,YUV三个信道的采样率相同,三个分量信息完整(通常为8bit)。每个Y独享一对UV分量。每个像素3字节。

原始像素:[Y0 U0 V0][ Y1 U1 V1][ Y2 U2 V2]

码流:Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3

YUV422:2:1的水平取样,垂直完全采样。每两个Y共用一组UV分量。每个像素2字节。

(2_个 + 2_个) * 8_bit / 2_yuv = 16_bit

原始像素:[Y0 U0 V0][ Y1 U1 V1][ Y2 U2 V2]

码流:Y0 U0 Y1 V1 Y2 U2 Y3 V3

得到的像素:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]

YUV411:4:1的水平取样,垂直完全采样。每四个Y共用一组UV分量。每个像素 8+(8/4)+(8/4)=12bits,1.5个字节。

(4_个 + 2_个) * 8_bit / 4_yuv = 12_bit

原始像素:[Y0 U0 V0][ Y1 U1 V1][ Y2 U2 V2]

码流:Y0 U0 Y1 Y2 V2 Y3

得到的像素:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]

YUV420:2:1的水平取样,垂直2:1采样。每四个Y共用一组UV分量。每个像素12bit,1.5个字节,采样方式不一样了。

(4_个 + 2_个) * 8_bit / 4_yuv = 12_bit

原始像素:
[Y0 U0 V0][ Y1 U1 V1][ Y2 U2 V2] [Y3 U3 V3]

[Y5 U5 V5] [Y6 U6 V6] [Y7 U7 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]

YUV不同采样格式图示

下图中,以黑点表示采样该像素点的Y分量,以空心圆圈表示采样该像素点的UV分量。

YUV420与RGB888数据所占内存长度比较

YUV420比较常用。

U = Y / 4 V = Y / 4

所以YUV420 数据在内存中的长度是 width * height * 3 / 2(width * height * 12_bit / 8_bit = width * height * 3 / 2 字节,因为每个YUV420像素点占12字节,所以照这么说的话,标准RGB888数据在内存中的长度为width * height * 3

什么是4:4:4、4:2:2、4:2:0?

在最近十年中,视频工程师发现人眼对色度的敏感程度要低于对亮度的敏感程度。在生理学中,有一条规律,那就是人类视网膜上的视网膜杆细胞要多于视网膜锥细胞,说得通俗一些,视网膜杆细胞的作用就是识别亮度,而视网膜锥细胞的作用就是识别色度。所以,你的眼睛对于亮和暗的分辨要比对颜色的分辨精细一些。正是因为这个,在我们的视频存储中,没有必要存储全部颜色信号。既然眼睛看不见,那为什么要浪费存储空间(或者说是金钱)来存储它们呢?

像Beta或VHS之类的消费用录像带就得益于将录像带上的更多带宽留给黑—白信号(被称作“亮度”),将稍少的带宽留给彩色信号(被称作“色度”)。

在MPEG2(也就是DVD使用的压缩格式)当中,Y、Cb、Cr信号是分开储存的(这就是为什么分量视频传输需要三条电缆)。其中Y信号是黑白信号,是以全分辨率存储的。但是,由于人眼对于彩色信息的敏感度较低,色度信号并不是用全分辨率存储的。

色度信号分辨率最高的格式是4:4:4,也就是说,每4点Y采样,就有相对应的4点Cb和4点Cr。换句话说,在这种格式中,色度信号的分辨率和亮度信号的分辨率是相同的。这种格式主要应用在视频处理设备内部,避免画面质量在处理过程中降低。当图像被存储到Master Tape,比如D1或者D5的时候,颜色信号通常被削减为4:2:2

其次就是4:2:2,就是说,每4点Y采样,就有2点Cb和2点Cr。在这种格式中,色度信号的扫描线数量和亮度信号一样多,但是每条扫描线上的色度采样点数却只有亮度信号的一半。当4:2:2信号被解码的时候,“缺失”的色度采样,通常由一定的内插补点算法通过它两侧的色度信息运算补充。每个象素都有与之对应的亮度采样,同时一半的色度采样被丢弃,所以我们看到,色度采样信号每隔一个采样点才有一个。当这张画面显示的时候,缺少的色度信息会由两侧的颜色通过内插补点的方式运算得到。就像上面提到的那样,人眼对色度的敏感程度不如亮度,大多数人并不能分辨出4:2:2和4:4:4颜色构成的画面之间的不同。

色度信号分辨率最低的格式,也就是DVD所使用的格式,就是4:2:0了。事实上4:2:0是一个混乱的称呼,按照字面上理解,4:2:0应该是每4点Y采样,就有2点Cb和0点Cr,但事实上完全不是这样。事实上,4:2:0的意思是,色度采样在每条横向扫描线上只有亮度采样的一半,扫描线的条数上,也只有亮度的一半!换句话说,无论是横向还是纵向,色度信号的分辨率都只有亮度信号的一半。举个例子,如果整张画面的尺寸是720480,那么亮度信号是720480,色度信号只有360*240。在4:2:0中,“缺失”的色度采样不单单要由左右相邻的采样通过内插补点计算补充,整行的色度采样也要通过它上下两行的色度采样通过内插补点运算获得。这样做的原因是为了最经济有效地利用DVD的存储空间(目的。同时网络传输用这种也能降低宽带压力吧?)。诚然,4:4:4的效果很棒,但是如果要用4:4:4存储一部电影,我们的DVD盘的直径至少要有两英尺(六十多厘米)!(?不是YUV420每个像素占存储空间只是YUV444两倍吗?怎么需要60多厘米光盘了?)

YUV存储格式

紧缩格式(packed formats)

将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel),和RGB的存放方式类似,在这种格式下每个像素点的YUV数据混合放在一个矩阵中。

平面格式(planar formats)

使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。其中Y为width*height,而U、V合占Y的一半。

YUV420中,一些特殊的存储格式

YUV420p:planer模式,Y、U、V分别位于不同平面

按U、V存储顺序不同,可以分为

YV12:YYYYVVVUUU(那个12是啥意思?)

YU12:YYYYUUUVVV,又叫I420(i420)。

YUV420p的YU12存储格式如下:

YUV420sp,bi-planer或者two-planer双平面,Y在一个平面,UV在同一个平面交叉存储

NV12:YYYYUVUVUV

NV21:YYYYVUVUVU,安卓相机标准图片格式(我们hikflow_demo中用的是NV21哎!

YUV420sp的NV12存储格式如下:

OpenCV 中,RGB与YUV的互相转换

使用cvtColor函数,在imgproc模块的types_c.h中查看转换代码:

RGB与YUV444互转

RGB转YUV420p的YU12

RGB转YUV420p的YV12

YUV420p转RGB

YUV420sp转RGB

OpenCV没有RGB直接转YUV420sp的函数。

https://en.wikipedia.org/wiki/Color_space
https://en.wikipedia.org/wiki/YUV
https://en.wikipedia.org/wiki/YCbCr

参考文章:RGB与YUV转换以及存储格式

RGB与YUV转换以及存储格式(YIQ)(信号扫描线)(内插补点算法)(紧缩格式(packed formats))(平面格式(planar formats))相关推荐

  1. 【性能优化】优化笔记之一:图像RGB与YUV转换优化

    本文主要介绍如何优化您自己的CODE,实现软件的加速.我们一个图象模式识别的项目,需要将RGB格式的彩色图像先转换成黑白图像.图像转换的公式如下: Y = 0.299 * R + 0.587 * G ...

  2. RGB和YUV视频存储格式

    RGB和YUV视频存储格式 视频数据,图像数据在存储中的存储格式主要有RGB和YUV.RGB是多媒体数据进行数据存储采用的主流格式:YUV格式所需存储空间一般是RGB格式存储空间的一半,所以YUV格式 ...

  3. 一文读懂rawRGB、RGB和YUV数据格式与转换

    rawRGB 图像采集的过程为:光照在成像物体被反射 -> 镜头汇聚 -> Sensor光电转换-> ADC转换为rawRGB 因为sensor上每个像素只采集特定颜色的光的强度,因 ...

  4. Metal之探究理解视频渲染RGB与YUV颜色编码

    一.颜色编码 ① RGB 颜色编码 RGB 三个字母分别代表了 红.绿.蓝,这三种颜色作为三个基底颜色,将它们以不同的比例相加,可以产生多种多样的颜色. RGB 图像中,每个像素点都有红.绿.蓝三个基 ...

  5. 走进音视频的世界——RGB与YUV格式

    在图像的世界里,一般使用RGB作为存储格式.而在视频的世界里,一般使用YUV作为压缩存储格式.有时候面试官会问:为什么视频使用YUV来压缩存储,而不用RGB?YUV与RGB有什么区别,两者如何转换的? ...

  6. RGB与YUV颜色空间

    计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(Red).G(Green).B(Blue)相加混色的原理:通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红.绿.蓝磷光材料发光而产生色彩. ...

  7. 像素格式RGB与YUV

    1.RGB像素格式 RGB彩色模式是一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,这个标准几乎包括了人类视力所能感知的所有颜色,是运 ...

  8. FFmpeg入门详解之121:颜色空间转换RGB和YUV的原理与实战

    5.颜色空间转换RGB和YUV的原理与实战 三种颜色空间模型:RGB.YUV.HSV 一.概述 颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间. 但被描述 ...

  9. 实验二 RGB到YUV格式的转换

    前言 将BMP文件转换成YUV文件 RGB存储结构 本算法使用的RGB文件格式为像素形式的RGB24文件.一个像素用24个bit来表示,3个字节,R,G,B分量分别用8个bit来表示,取值范围为0-2 ...

最新文章

  1. jar 包又冲突了?如何快速确定与哪个 jar 包冲突?
  2. NetCore + SignalR 实现日志消息推送
  3. mysql交叉编译 cmake_CMake交叉编译配置
  4. 信息学奥赛一本通(1066:满足条件的数累加)
  5. 机器学习技法2-Dual Support Vector Machine
  6. java 20段常用代码,你绝对用的到(二)
  7. [转载]基于TFS实践敏捷-工作项跟踪
  8. PC-启动慢的解决好方法!
  9. 伟创力被华为索赔数亿后发公开信:深感遗憾,仍希望能合作
  10. varnish02 代理多台后端服务器
  11. element表格多列排序_Python,Numpy,Pandas…数据科学家必备排序技巧
  12. 阿里云云计算 50 云监控的使用
  13. 根据excel生成mysql数据库,根据excel生成数据库脚本
  14. ALK/NH2/COOH/NHS/N3/hydrazide/maleimide/Tetrazine/DBCO/寡聚物等基团修饰BODIPY630/650氟硼荧
  15. win7计算机文件移动硬盘,Win7系统下给移动硬盘分区方法是什么
  16. 安卓视频播放器(TV)
  17. ISCC2022-MISC-降维打击
  18. dedecms织梦后台登录一直提示验证码错误
  19. 厦门大学2022年计算机考研复试流程
  20. 夕阳西下,天空燃烧着一片橘红色的晚霞

热门文章

  1. React.memo
  2. Uninstall ManyCam with WindowsUninstaller.Org Removal Tips
  3. 国内外IP线路测试网址收藏
  4. php通过某个字段查询另外一个字段,Sql 查询结果 根据某个字段值 变更另外一个字段值 case when...
  5. CentOS8使用gmssl搭建demoCA及配置OCSP服务
  6. Failed to recognize predicate 'xxx' Failed rule 'identifie
  7. python批量巡检服务器_python3监控批量服务器网络通畅的工具
  8. 2021国内RPA融资年终盘点:15家厂商融资总额破34亿,估值近230亿
  9. 大数据可视化展示工具:Grafana简介
  10. 局域网语音对讲系统_智慧医疗信息化系统建设(七):医院专业智能化