色彩空间色彩空间是对色彩的组织方式。借助色彩空间和针对物理设备的测试,可以得到色彩的固定模拟和数字表示。色彩空间可以只通过任意挑选一些颜色来定义,比如像彩通系统就只是把一组特定的颜色作为样本,然后给每个颜色定义名字和代码;也可以是基于严谨的数学定义,比如 Adobe RGB
、sRGB
。
RGB 是一种色彩模型
(其实也可以叫做颜色编码方法),通过一组数字来描述颜色。它是一个加色模型,本身并不能表示绝对的色彩空间。 但是通过和标准色彩空间的描述 Adobe RGB
和 sRGB
的组合,就可以确定到一个像素点的颜色。通过这个过程,图像和文档中的色彩,就可以确定下来。(因此和不同的色彩空间的描述来组合,在显示器上就能看到不同的效果)。
YUV是被欧洲电视系统所采用的一种颜色编码方法
(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。
YUV通常用于彩色图像/视频处理的彩色空间。它编码彩色图像/视频,同时考虑到人眼的属性,这些属性允许在不感知失真的情况下减少色度组件的带宽。使用YUV色彩空间有助于图像/视频压缩。它最初用于模拟电视广播。颜色空间YUV、YIQ、YCbCr和YPbPr都属于YUV家族。Y’UV, YUV, YCbCr,YPbPr等專有名词都可以称为YUV,彼此有重叠。「Y」表示明亮度(Luminance、Luma),「U」和「V」则是色度、浓度(Chrominance、Chroma)。
Y’UV的发明是由于彩色电视与黑白电视的过渡时期。 黑白视讯只有Y(Luma,Luminance)视讯,也就是灰阶值。而彩色电视规格的定制是根据 YUV/YIQ 来处理彩色电视信号。把 UV 看做表示彩度。剩下 Y 讯号就和黑白电视的电视讯号相同,这样可以解决兼容问题。同时Y’UV最大的优点在于只需占用极少的频宽。
从历史的演变而言,其中YUV和Y’UV通常用于编码电视的类比讯号,而YCbCr则是用来描述数位的影像讯号,适合影片与图片压缩以及传输,例如MPEG,JPEG。
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个字节。
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比较常用, 在这里就重点介绍YUV420。YUV420分为两种:YUV420p和YUV420sp。 我们先看一张脑图,对这些类型大致有个印象即可。
YUV420p:又叫planer平面模式,Y ,U,V分别再不同平面,也就是有三个平面。
I420:又叫YU12,安卓的模式。存储顺序是先存Y,再存U,最后存V。YYYYUUUVVV
YV12:存储顺序是先存Y,再存V,最后存U。YYYVVVUUU
UV420sp:又叫bi-planer或two-planer双平面,Y一个平面,UV在同一个平面交叉存储。
NV12:IOS只有这一种模式。存储顺序是先存Y,再UV交替存储。YYYYUVUVUV
NV21:安卓的模式。存储顺序是先存Y,再存U,再VU交替存储。YYYYVUVUVU
HDTV(BT.601)的RGB和YUV之间的转换。
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 原 CCIR,在 1982 年制订了 BT.601 标准(也叫做 Rec.601)。
该标准确认的颜色编码系统被称为 YCbCr 4:2:2,用于将隔行数位视讯模拟信号号进行数位化编码。
FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发 面试题、学习资料、教学视频和学习路线图有需要的可以自行添加学习交流群或者资料获取