首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >音视频知识体系(基础篇3)----图像颜色空间

音视频知识体系(基础篇3)----图像颜色空间

原创
作者头像
jerrypxiao
发布2021-02-04 00:27:16
1.7K0
发布2021-02-04 00:27:16
举报

我们从视频的信号表示方法开始讲起,逐步深入到视频压缩编码的原理。我们主要从下面几个要点来讲解或者加深记忆。

  • (1)视频的信号表示
  • (2)RGB色彩空间
  • (3)YUV色彩空间
  • (4)如何存储
  • (5)两者如何转化

1. 视频的信号表示

我们知道视频是由图像组成。而图像,大家都知道,是由很多“带有颜色的点”组成的。这个点,就是“像素点”。

视频的组成
视频的组成

真实世界中的影像与早期的视频处理与传输系统所处理的都是模拟信号。然而为了能适应现代的计算机、网络传输与数字视频处理系统,模拟的视频信号必须转换成数字格式。这就牵出了“彩色分量数字化”的概念。

2. RGB色彩空间

懂绘画的童鞋一定知道,任何颜色,都可以通过红色(Red)、绿色(Green)、蓝色(Blue)按照一定比例调制出来。这三种颜色,被称为“三原色”。

RGB空间
RGB空间

屏幕上的不同颜色,都由这红色,绿色,蓝色三种基本色光按照不同的比例(权重)混合而成的。一组红色绿色蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达。因此这红色绿色蓝色又称为三原色光,用英文表示就是R(red)、G(green)、B(blue)。RGB的所谓“多少”就是指亮度,并使用整数来表示。在用8位表示时,RGB各有256级亮度,用数字量化表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。

使用这种方式表示彩色图像的方式为RGB颜色空间。RGB颜色空间常用于显示器系统。通过这种形式表示的图像,每个像素的每一个颜色分量用1个字节表示,则可以表示256×256×256种不同的颜色。在常见的图像格式中,如位图(bmp)格式以RGB形式保存数据。

RGB 颜色空间可以看作是三维直角颜色坐标系中的一个正立方体。如上右图所示。红绿蓝三色在立方体的三个顶点上;洋红、青、黄色在立方体的立方体的另外三个顶点;黑色在坐标原点;而白色在离原点最远的定点上。在连接黑色与白色的对角线上,是亮度等量的三基色混合而成的灰色,该线称为灰色线(引用)。

2. YUV色彩空间

YUV,是另外一种颜色编码方法[wiki]。

YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度浓度(Chrominance、Chroma),

Y′UV, YUV, YCbCr, YPbPr所指涉的范围,常有混淆或重叠的情况。从历史的演变来说,其中YUV和Y'UV通常用来编码电视的模拟信号,而YCbCr则是用来描述数字的影像信号,适合视频与图片压缩以及传输,例如MPEG、JPEG。 但在现今,YUV通常已经在电脑系统上广泛使用。

Y'代表明亮度(luma; brightness)而U与V存储色度(色讯; chrominance; color)部分; 亮度(luminance)记作Y,而Y'的prime符号记作伽玛校正。

对于 YUV 所表示的图像,Y 和 UV 分量是分离的。如果只有 Y 分量而没有 UV 分离,那么图像表示的就是黑白图像。彩色电视机采用的就是 YUV 图像,解决与和黑白电视机的兼容问题,使黑白电视机也能接受彩色电视信号

人眼对色度的敏感程度低于对亮度的敏感程度。主要原因是视网膜杆细胞多于视网膜锥细胞,其中视网膜杆细胞的作用就是识别亮度,视网膜锥细胞的作用就是识别色度。所以,眼睛对于亮度的分辨要比对颜色的分辨精细一些。

利用这个原理,可以把色度信息减少一点,人眼也无法查觉这一点。

所以,并不是每个像素点都需要包含了 Y、U、V 三个分量,根据不同的采样格式,可以每个 Y 分量都对应自己的 UV 分量,也可以几个 Y 分量共用 UV 分量。相比 RGB,能够节约不少存储空间。

在视频通信系统中(特别是视频编解码)的“YUV”图像就是YCbCr。在平常的工作交流中,所称的YUV也是YCbCr。以下用YUV指代YCbCr

3. YUV存储

YUV格式有两大类:Planar(平面格式), Packed(打包格式)。

  • Planar:先连续存储所有像素点的 Y,紧接着存储所有像素点的 U,随后是所有像素点的 V。相当于将 YUV 拆分成三个平面 (plane) 存储。
  • Packed:每个像素点的 Y, U, V 是连续交替存储的。

YUV 的存储格式与其采样方式密切相关。

主流的采样方式有 4 种:YUV(4:4:4), YUV(4:2:2), YUV(4:2:0), YUV(4:1:1)

  • YUV 4:4:4 采样:每一个 Y 对应一组 UV 分量(4 个 Y 采样就对应 4 个 Cb 和 4 个 Cr 采样)。平均一个像素占用 8+8+8 = 24 位。
  • YUV 4:2:2 采样:每两个 Y 共用一组 UV 分量(4 个 Y 采样就对应 2 个 Cb 和 2 个 Cr 采样)。平均一个像素占用 8+4+4 = 16 位。
  • YUV 4:2:0 采样:每四个 Y 共用一组 UV 分量(4 个 Y 采样就对应 2 个 Cb 或 2 个 Cr 采样)。平均一个像素占用 8+4+0 = 12 位。
  • YUV 4:1:1 采样:每四个 Y 共用一组 UV 分量(4 个 Y 采样就对应 1 个 Cb 和 1 个 Cr 采样)。平均一个像素占用 8+2+2 = 12 位。
存储示意图
存储示意图

在存储时YUV各占一个字节Byte,

4:4:4方式,那一个256X256分辨率的图片要占用256×256×3=196608Byte,

4:2:2方式要占用256×256×2=131072Byte,

4:2:0方式要占用256×256×2/3=43690.7Byte,

可以看到采用4:2:0方式存储空间整整减少了一半。

另外一种表示
另外一种表示

(参考)

YUV422 采样的格式 ( YCbYCr / YUYV ,CbYCrY / UYVY / I422 ,422P , 422SP )

打包格式 (Packed) :YCbYCr / YUYV ,CbYCrY / UYVY / I422

平面格式 (Planar) :422P , 422SP

UYVY422:

         UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样.

YUV422P:

         YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y'00、Y'01 而言,其U、V的值均为 U1、V1。

YUV422SP:

先存放所有的Y分量,然后交叉存储UV

YUV422P(参考

Y1

Y2

Y3

Y4

Y5

Y6

Y7

Y8

Y9

Y10

Y11

Y12

Y13

Y14

Y15

Y16

Y17

Y18

Y19

Y20

Y21

Y22

Y23

Y24

Y25

Y26

Y27

Y28

Y29

Y30

Y31

Y32

U1

U2

U3

U4

U5

U6

U7

U8

U9

U10

U11

U12

U13

U14

U15

U16

V1

V2

V3

V4

V5

V6

V7

V8

V9

V10

V11

V12

V13

V14

V15

V16

YUV422SP

Y1

Y2

Y3

Y4

Y5

Y6

Y7

Y8

Y9

Y10

Y11

Y12

Y13

Y14

Y15

Y16

Y17

Y18

Y19

Y20

Y21

Y22

Y23

Y24

Y25

Y26

Y27

Y28

Y29

Y30

Y31

Y32

U1

V1

U2

V2

U3

V3

U4

V4

U5

V5

U6

V6

U7

V7

U8

V8

U9

V9

U10

V10

U11

V11

U12

V12

U13

V13

U14

V14

U15

V15

U16

V16

YUV420 采样的格式( I420 / YU12 , YV12 , NV12 , NV21 )

分为:YUV420P ( I420 / YU12 , YV12 ),YUV420SP ( NV12 , NV21 )

YU12 是 I420 的别称,YV12 与之是 UV 顺序不同。

NV12 和 NV21 则是 UV 交织顺序不同。

  • YUV420p((Planar)平面)是先存储完U分量后再存储V分量,也就是说UV分量各自都是连续的,
  • YUV420sp((Semi-Planar)半平面)则交叉存储UV分量 因此一个YUV420图片的存储空间为:

  Y分量 = width * hight

  U分量 = Y / 4

  V分量 = Y / 4

  YUV420图像存储空间 = width * hight * 3 / 2

例如一张分辨率为8X4的YUV420图像,数据存储格式如下图:

YUV420sp格式:

YUV420sp
YUV420sp

YUV420p格式:

YUV420p
YUV420p

格式属于4:2:0类型,存储方式上面已经说过,就是先存储把全部的Y分量存完,再存U分量,最后存V分量,从网上找了一张很形象的图:

YU12
YU12

可以看到,第一行的Y1Y2和第二行的Y7Y8共同使用一组UV分量U1V1。

YV12

该格式与YU12基本一样,唯一的区别是先存储V分量再存储U分量,对应到上图把第五行和第六行位置互换一下就是了。

以上两种格式我们可以看到都是4:2:0的,因为都是planar方式存储,简称420p。

除了上面两种,还有两种4:2:0,NV12和NV21,这两种是比较特殊的存储格式,是planar和packed混合存储的,分别看下

NV12

该格式是先存储全部的Y分量,然后UV分量交叉存储,用图像表示下:(参考)

NV12
NV12

NV21

该格式与NV21的区别和上面YU12/YV12一样,唯一的区别只是UV分量交叉的顺序不同,NV12是U排前面,NV21是V排前面,用图像表示如下:

NV21
NV21

需要注意的是,

NV12是iOS中有的模式,它的存储顺序是先存Y分量,再YV进行交替存储。

NV21是Android中有的模式,它的存储顺序是先存Y分量,再VU交替存储。

4. YUV和RGB的转换

[参考]

RGB格式转为YUV格式

Y'= 0.299*R' + 0.587*G' + 0.114*B' U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y') V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')

YUV格式转为RGB格式

R' = Y' + 1.140*V' G' = Y' - 0.394*U' - 0.581*V' B' = Y' + 2.032*U'

RGB格式转为YCbCr格式

按ITU-R BT.709标准。

Y = 0.183R + 0.614G + 0.062B + 16 Cb = -0.101R - 0.339G + 0.439B + 128 Cr = 0.439R - 0.399G - 0.040B + 128

按JPEG的全范围取值格式

Y = 0.299R + 0.587G + 0.144B + 0

Cb = -0.169R - 0.331G + 0.500B + 128

Cr = 0.500R - 0.419G - 0.081B + 128

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 视频的信号表示
  • 2. RGB色彩空间
  • 2. YUV色彩空间
  • 3. YUV存储
    • YUV422 采样的格式 ( YCbYCr / YUYV ,CbYCrY / UYVY / I422 ,422P , 422SP )
      • UYVY422:
      • YUV422P:
      • YUV422P(参考)
      • YUV422SP
    • YUV420 采样的格式( I420 / YU12 , YV12 , NV12 , NV21 )
      • YV12
        • NV12
          • NV21
            • RGB格式转为YUV格式
            • YUV格式转为RGB格式
            • RGB格式转为YCbCr格式
        • 4. YUV和RGB的转换
        相关产品与服务
        图像处理
        图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档