阅读 678

一文说通 YUV 和 RGB

色彩空间 Color Space

色彩空间色彩空间是对色彩的组织方式。借助色彩空间和针对物理设备的测试,可以得到色彩的固定模拟和数字表示。色彩空间可以只通过任意挑选一些颜色来定义,比如像彩通系统就只是把一组特定的颜色作为样本,然后给每个颜色定义名字和代码;也可以是基于严谨的数学定义,比如 Adobe RGBsRGB

色彩模型

RGBspace.jpg

RBG 是一种色彩模型(其实也可以叫做颜色编码方法),通过一组数字来描述颜色。它是一个加色模型,本身并不能表示绝对的色彩空间。 但是通过和标准色彩空间的描述 Adobe RGBsRGB 的组合,就可以确定到一个像素点的颜色。通过这个过程,图像和文档中的色彩,就可以确定下来。(因此和不同的色彩空间的描述来组合,在显示器上就能看到不同的效果)。

YUVspace.jpg

YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。

YUV通常用于彩色图像/视频处理的彩色空间。它编码彩色图像/视频,同时考虑到人眼的属性,这些属性允许在不感知失真的情况下减少色度组件的带宽。使用YUV色彩空间有助于图像/视频压缩。它最初用于模拟电视广播。颜色空间YUV、YIQ、YCbCr和YPbPr都属于YUV家族。Y'UV, YUV, YCbCr,YPbPr等專有名詞都可以稱為YUV,彼此有重疊。「Y」表示明亮度(Luminance、Luma),「U」和「V」則是色度、濃度(Chrominance、Chroma)。


为什么会有 YUV

Y'UV的发明是由于彩色电视与黑白电视的过渡时期。 黑白视讯只有Y(Luma,Luminance)视讯,也就是灰阶值。而彩色电视规格的定制是根据 YUV/YIQ 来处理彩色电视信号。把 UV 看做表示彩度。剩下 Y 讯号就和黑白电视的电视讯号相同,这样可以解决兼容问题。同时Y'UV最大的优点在于只需占用极少的频宽。

从历史的演变而言,其中YUV和Y'UV通常用于编码电视的类比讯号,而YCbCr则是用来描述数位的影像讯号,适合影片与图片压缩以及传输,例如MPEG,JPEG。


YUV 采样

YUV 4:4:4采样,每一个Y对应一组UV分量,一个YUV占8+8+8 = 24bits 3个字节。

YUV 4:2:2采样,每两个Y共用一组UV分量,一个YUV占8+4+4 = 16bits 2个字节。

YUV 4:2:0采样,每四个Y共用一组UV分量,一个YUV占8+2+2 = 12bits 1.5个字节。

2048812-91284ca9ffa2eae6.png.jpeg

YUV 格式

YUV格式分为两个格式: 紧缩格式(packed format):将Y,U,V值存储成Macro Pixels阵列,和RGB的存放方式类似。 平面格式(planar format):将Y,U,V的三个片断分别放置在不同的矩阵中。

展开讲讲就是:对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交叉存储的。

YUV420类型

Screen Shot 2021-04-16 at 6.18.10 PM.png

1.YUV420p和YUV420sp区别

因为YUV420比较常用, 在这里就重点介绍YUV420。YUV420分为两种:YUV420p和YUV420sp。 我们先看一张脑图,对这些类型大致有个印象即可。

YUV420P

2048812-642a69d2ad1004cb.png

YUV420SP

2048812-0bc7e7b5c86556ba.png

2.YUV420p和YUV420sp具体分类和详情

  • YUV420p:又叫planer平面模式,Y ,U,V分别再不同平面,也就是有三个平面。

    I420:又叫YU12,安卓的模式。存储顺序是先存Y,再存U,最后存V。YYYYUUUVVV

Screen Shot 2021-04-16 at 6.42.58 PM.png

YV12:存储顺序是先存Y,再存V,最后存U。YYYVVVUUU
复制代码

Screen Shot 2021-04-16 at 6.43.08 PM.png

  • UV420sp:又叫bi-planer或two-planer双平面,Y一个平面,UV在同一个平面交叉存储。

    NV12:IOS只有这一种模式。存储顺序是先存Y,再UV交替存储。YYYYUVUVUV

Screen Shot 2021-04-16 at 6.43.16 PM.png

NV21:安卓的模式。存储顺序是先存Y,再存U,再VU交替存储。YYYYVUVUVU
复制代码

Screen Shot 2021-04-16 at 6.43.23 PM.png

RGB 和 YUV 之间的转化

HDTV(BT.601)的RGB和YUV之间的转换。

image

HDTV(BT.709)的RGB和YUV之间的转换。

YIQ是NTSC彩色电视使用的彩色空间

YDbDr,是SÉCAM中使用的颜色空间

YCbCr是YUV色彩空间的缩放和偏移版本。Y的8位范围从16位到235。Cb和Cr的范围为16-240。YCbCr用于JPEG压缩。

如果RGB数据的范围为0-255(黑白),就像PC中常见的那样,则应使用以下方程来保持正确的黑白水平:

标准制定机构--国际电信联盟无线电通信部门(ITU-R)

ITU-R 原 CCIR,在 1982 年制订了 BT.601 标准(也叫做 Rec.601)。

该标准确认的颜色编码系统被称为 YCbCr 4:2:2,用于将隔行数位视讯模拟信号号进行数位化编码。


接着,在 1990 年 BT.709 获得 CCIR 批准。

Rec. 709定义了R’G’B'编码和Y’CBCR编码,每个颜色通道中每个样本有8位或10位。

该规范了高清电视的图像编码和信号特性。

最新版本是2015年发布的BT.709-6。


2012年8月发布了,Rec.2020 的第一版。该标准定义了具有标准动态范围(SDR)和广色域(WCG)的超高清电视(UHDTV)的各个方面。


2016 年 7 月发布了 Rec.2100。通过建议使用感知量化器(PQ)或混合对数伽马(HLG)传输函数来引入高动态范围电视(HDR-TV

参考资料

zh.wikipedia.org/wiki/YUV#Y'…

zh.wikipedia.org/wiki/BT.601

www.vocal.com/video/rgb-a…

www.jianshu.com/p/e67f79f10…

blog.csdn.net/byhook/arti…

文章分类
代码人生
文章标签