首页 > 其他分享 >计算机图像编码入门篇(下)

计算机图像编码入门篇(下)

时间:2023-10-24 12:22:05浏览次数:34  
标签:采样 存储 U8 U0 YUV 入门篇 分量 图像编码 计算机

前言

本文旨在为初学者提供有关计算机图像编码的基础知识,以帮助他们初步理解计算机中图像编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。

文中部分内容参考ChatGPT,在此感谢ppword的支持。

四、YUV色彩空间

1、YUV和YCbC的关系

YUV是编译true-color颜色空间的种类,Y表示明亮度,U和V则是色度、浓度。
YCbCr的Y与YUV中的Y含义一致,Cb和Cr与UV同样都指色彩,Cb指蓝色色度,Cr指红色色度。

YUV, YCbCr所指涉的范围,常有混淆或重叠的情况。从历史的演变来说,其中YUV通常用来编码电视的模拟信号,而YCbCr则是用来描述数字的影像信号,适合影片与图片压缩以及传输,例如MPEG、JPEG。因此一般俗称的YUV大多是指YCbCr。

2、YUV有什么特别

2.1、与RGB的数据组成对比

  • RGB数据由R、G、B三个分量组成。

  • YUV数据由Y、U、V三个分量组成,现在通常说的YUV指的是YCbCr。

    • Y:表示亮度,占8bit(1字节)
    • Cb(U):蓝色色度分量,占8bit(1字节)
    • Cr(V):红色色度分量,占8bit(1字节)

这么一看,感觉两者除了把RBG换成YUV之外,别的也没什么区别啊。那我们就拿一张图来做一下对比。

2.2、与RGB的图像分解对比

先看原图:

原图

再来看一下它所对应的RGB的数据图:
RGB

再来看一下它所对应的YUV的数据图:
YUV

根据上面的图片,不难看出:

  • RGB的每个分量,是对当前颜色的一个亮度值
  • Y分量对呈现出清晰的图像有着很大的贡献
  • Cb、Cr分量的内容不太容易识别清楚
  • YUV将亮度信息(Y)与色度信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的

2.3、视网膜的秘密

人眼的视网膜上,分布着两种感光细胞:视杆细胞和视锥细胞。

  • 视杆细胞
    • 感知光线的强弱
    • 没有色彩识别功能
    • 负责夜间非彩色视觉
  • 视锥细胞
    • 感知颜色
    • 负责白天彩色视觉
    • 如果你的视锥细胞发育不正常,可能会导致你色弱

人眼中有上亿个感光细胞,其中视杆细胞占了95%,而视锥细胞仅占5%。因此,人眼对亮度的敏感程度要高于对色度的敏感程度,人眼对于亮度的分辨要比对颜色的分辨精细一些。

如果把图像的色度分量减少一些,人眼也丝毫感觉不到变化和差异

2.4、YUV的优点

YUV颜色空间(亮度、色差)在数字视频和图像处理中得到广泛使用,有以下好处:

  • 分离亮度和色差:YUV将图像的亮度信息(Y)与颜色信息(U和V)分开。这个分离使得在不影响图像质量的情况下,可以更有效地压缩颜色信息,减小数据量,这在视频传输和存储中非常重要。

  • 人眼对亮度敏感:人眼对亮度信息的感知更敏感,因此更高的亮度分辨率可以提高图像质量,而相对较低的色差分辨率通常不会明显影响视觉感知。

  • 减小带宽需求:在广播、视频传输和流媒体等应用中,通过对色差信息进行亚采样,可以显著减小传输所需的带宽。这可以在视频编码中实现更高的压缩比例,减小数据传输成本。

  • 适用于多种显示技术:YUV的颜色编码适用于多种显示技术,包括电视、监视器和数字相机。因为YUV更符合人眼感知方式,它在各种显示设备上都能提供更自然的颜色。

  • 图像处理和编辑:在图像处理和编辑中,YUV颜色空间提供了更灵活的颜色操作选项,特别是在色彩校正和颜色分离等方面。

总之,YUV颜色空间的分离亮度和色差信息以及对亮度信息的更高分辨率使其成为数字视频处理中的一种重要工具。它可以帮助减小数据量,降低传输成本,同时保持图像质量。在各种多媒体应用中,YUV都发挥着关键的作用,使图像和视频的处理和传输更加高效和有效。

既然有这么多优点,那这些优点又是怎么体现的呢?

3、色度二次采样

色度二次采样(Chrominance Subsampling)是数字图像和视频压缩中的一种技术,旨在减小颜色信息的数据量,以降低存储和传输成本,同时保持相对高质量的图像。这一技术主要涉及对色差信息的亚采样。色度二次采样通常应用于U和V色差通道。

在数字图像和视频处理中,"采样" 是指通过有限数量的数据点(或像素)来表示和近似连续信号或图像的过程。采样是模拟信号(连续信号)转换为数字信号(离散信号)的关键步骤。

3.1、原理

色度二次采样的原理如下:

  • 亮度(Y)通道:亮度通道通常以全分辨率进行采样,因为人眼对亮度信息的感知非常敏感。

  • 色差(U和V)通道:色差通道的分辨率可以低于亮度通道。说白了,就是按一定规则丢掉一部分的U和V,但是具体要怎么丢,这就是接下来要讨论的了。

3.2、采样格式

为节省带宽起见,大多数 YUV 格式平均使用的每像素位数都少于 24 位。主要的采样(subsample)格式有 YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1 和 YCbCr4:4:4。YUV 的表示法称为 A:B:C 表示法。

下面我们以表格来说明,表格中,每一格代表一个像素

原始数据

行列 1 2 3 4
1 Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
2 Y4 U4 V4 Y5 U5 V5 Y6 U6 V6 Y7 U7 V7
3 Y8 U8 V8 Y9 U9 V9 Y10 U10 V10 Y11 U11 V11
4 Y12 U12 V12 Y13 U13 V13 Y14 U14 V14 Y15 U15 V15

3.2.1、4:4:4采样

  • 每1个像素都有自己独立的1组CbCr分量
  • 1个像素占用24bit(3字节),跟RGB24的体积一样
  • 这种格式是没有进行色度二次采样的

采样后

行列 1 2 3 4
1 Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
2 Y4 U4 V4 Y5 U5 V5 Y6 U6 V6 Y7 U7 V7
3 Y8 U8 V8 Y9 U9 V9 Y10 U10 V10 Y11 U11 V11
4 Y12 U12 V12 Y13 U13 V13 Y14 U14 V14 Y15 U15 V15

3.2.2、4:2:2采样

  • 每采样过一个像素点,都会采样其 Y 分量,而 U、V 分量就会间隔一个采集一个。
  • 1个像素平均占用16bit(2字节)
    • 因为2个像素共占用32bit(4字节 = 2个Y分量 + 1个Cb分量 + 1个Cr分量)
  • 还原时,水平方向相邻的2个像素(1行2列)共用1组CbCr分量

采样后

行列 1 2 3 4
1 Y0 U0 - Y1 - V1 Y2 U2 - Y3 - V3
2 Y4 U4 - Y5 - V5 Y6 U6 - Y7 - V7
3 Y8 U8 - Y9 - V9 Y10 U10 - Y11 - V11
4 Y12 U12 - Y13 - V13 Y14 U14 - Y15 - V15

还原后

行列 1 2 3 4
1 Y0 U0 V1 Y1 U0 V1 Y2 U2 V3 Y3 U2 V3
2 Y4 U4 V5 Y5 U4 V5 Y6 U6 V7 Y7 U6 V7
3 Y8 U8 V9 Y9 U8 V9 Y10 U10 V11 Y11 U10 V11
4 Y12 U12 V13 Y13 U12 V13 Y14 U14 V15 Y15 U14 V15

3.2.3、4:2:0采样

  • 每采样过一个像素点,都会采样其 Y 分量,而 U、V 分量就会间隔一行按照 2 : 1 进行采样。
  • 1个像素平均占用12bit(1.5字节)
    • 因为4个像素共占用48bit(6字节 = 4个Y分量 + 1个Cb分量 + 1个Cr分量)
  • 还原时,相邻的4个像素(2行2列)共用1组CbCr分量

采样后

行列 1 2 3 4
1 Y0 U0 - Y1 - - Y2 U2 - Y3 - -
2 Y4 - V4 Y5 - - Y6 - V6 Y7 - -
3 Y8 U8 - Y9 - - Y10 U10 - Y11 - -
4 Y12 - V12 Y13 - - Y14 - V14 Y15 - -

还原后

行列 1 2 3 4
1 Y0 U0 V4 Y1 U0 V4 Y2 U2 V6 Y3 U2 V6
2 Y4 U0 V4 Y5 U0 V4 Y6 U2 V6 Y7 U2 V6
3 Y8 U8 V12 Y9 U8 V12 Y10 U10 V14 Y11 U10 V14
4 Y12 U8 V12 Y13 U8 V12 Y14 U10 V14 Y15 U10 V14

3.2.3、4:1:1采样

  • 每采样过一个像素点,都会采样其 Y 分量,而 U、V 分量就会间隔一行按照 2 : 1 进行采样。
  • 1个像素平均占用12bit(1.5字节)
    • 因为4个像素共占用48bit(6字节 = 4个Y分量 + 1个Cb分量 + 1个Cr分量)
  • 还原时,水平相连的4个像素(2行2列)共用1组CbCr分量

4:2:0和4:1:1的区别在于,前者在水平方向上不会同时出现U和V,只会出现其中一个分量,后者在竖直方向上不会同时出现U和V,只会出现其中一个分量。

采样后

行列 1 2 3 4
1 Y0 U0 - Y1 - - Y2 - V2 Y3 - -
2 Y4 U4 - Y5 - - Y6 - V6 Y7 - -
3 Y8 U8 - Y9 - - Y10 - V10 Y11 - -
4 Y12 U12 - Y13 - - Y14 - V14 Y15 - -

还原后

行列 1 2 3 4
1 Y0 U0 V2 Y1 U0 V2 Y2 U0 V2 Y3 U0 V2
2 Y4 U4 V6 Y5 U4 V6 Y6 U4 V6 Y7 U4 V6
3 Y8 U8 V10 Y9 U8 V10 Y10 U8 V10 Y11 U8 V10
4 Y12 U12 V14 Y13 U12 V14 Y14 U12 V14 Y15 U12 V14

4、YUV 存储方式

  • Planar(平面)
    • Y、U、V分量分开单独存储
    • 名称通常以字母p结尾
  • Semi-Planar(半平面)
    • Y分量单独存储,U、V分量交错存储
    • 名称通常以字母sp结尾
  • Packed(紧凑)
    • 或者叫Interleaved (交错)
    • Y、U、V分量交错存储

4.1、基于 YUV444 采样的存储格式

下面是4x4 像素的 YUV444 格式采样数据:

行列 1 2 3 4
1 Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
2 Y4 U4 V4 Y5 U5 V5 Y6 U6 V6 Y7 U7 V7
3 Y8 U8 V8 Y9 U9 V9 Y10 U10 V10 Y11 U11 V11
4 Y12 U12 V12 Y13 U13 V13 Y14 U14 V14 Y15 U15 V15

4.1.1、存储格式总览

4:4:4

4.1.2、I444

先存储所有的 Y 分量,再存储所有的 U 分量,再存储所有的 V 分量

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
U0  U1  U2  U3  U4  U5  U6  U7
U8  U9  U10 U11 U12 U13 U14 U15
V0  V1  V2  V3  V4  V5  V6  V7
V8  V9  V10 V11 V12 V13 V14 V15

4.1.3、YV24

先存储所有的 Y 分量,再存储所有的 V 分量,再存储所有的 U 分量

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
V0  V1  V2  V3  V4  V5  V6  V7
V8  V9  V10 V11 V12 V13 V14 V15
U0  U1  U2  U3  U4  U5  U6  U7
U8  U9  U10 U11 U12 U13 U14 U15

4.1.4、NV24

先存储所有的 Y 分量,再U和V交错存放

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
U0  V0  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

4.1.5、NV42

先存储所有的 Y 分量,再V和U交错存放

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
V0  U0  V1  U1  V2  U2  V3  U3
V4  U4  V5  U5  V6  U6  V7  U7
V8  U8  V9  U9  V10  U10  V11  U11
V12  U12  V13  U13  V14  U14  V15  U15

4.2、基于 YUV422 采样的存储格式

下面是4x4 像素的 YUV422 格式采样数据:

行列 1 2 3 4
1 Y0 U0 - Y1 - V1 Y2 U2 - Y3 - V3
2 Y4 U4 - Y5 - V5 Y6 U6 - Y7 - V7
3 Y8 U8 - Y9 - V9 Y10 U10 - Y11 - V11
4 Y12 U12 - Y13 - V13 Y14 U14 - Y15 - V15

4.2.1、存储格式总览

4:2:2

4.2.2、I422

先存储所有的 Y 分量,再存储所有的 U 分量,再存储所有的 V 分量。

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7  
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
U0  U2  U4  U6  U8  U10 U12 U14
V1  V3  V5  V7  V9  V11 V13 V15

4.2.3、YV16

先存储所有的 Y 分量,再存储所有的 V 分量,再存储所有的 U 分量。

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7  
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
V1  V3  V5  V7  V9  V11 V13 V15
U0  U2  U4  U6  U8  U10 U12 U14

4.2.4、NV16

先存储所有的 Y 分量,再U和V交错存放。

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7  
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
U0  V1  U2  V3  U4  V5  U6  V7 
U8  V9  U10 V11 U12 V13 U14 V15

4.2.5、NV61

先存储所有的 Y 分量,再V和U交错存放。

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7  
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
V1  U0  V3  U2  V5  U4  V7  U6 
V9  U8  V11 U10 V13 U12 V15 U14

4.2.6、UYVY

存储时(每个方括号里是2个像素)

[U0  Y0  V1  Y1 ] [U2  Y2  V3  Y3 ]
[U4  Y4  V5  Y5 ] [U6  Y6  V7  Y7 ]
[U8  Y8  V9  Y9 ] [U10 Y10 V11 Y11]
[U12 Y12 V13 Y13] [U14 Y14 V15 Y15]

4.2.7、YUYV

存储时(每个方括号里是2个像素)

[Y0  U0  Y1  V1 ] [Y2  U2  Y3  V3 ]
[Y4  U4  Y5  V5 ] [Y6  U6  Y7  V7 ]
[Y8  U8  Y9  V9 ] [Y10 U10 Y11 V11]
[Y12 U12 Y13 V13] [Y14 U14 Y15 V15]

4.2.8、YVYU

存储时(每个方括号里是2个像素)

[Y0  V1  Y1  U0 ] [Y2  V3  Y3  U2 ]
[Y4  V5  Y5  U4 ] [Y6  V7  Y7  V6 ]
[Y8  V9  Y9  U8 ] [Y10 V11 Y11 U10]
[Y12 V13 Y13 U12] [Y14 V15 Y15 U14]

4.3、基于 YUV420 采样的存储格式

下面是4x4 像素的 YUV420格式采样数据:

行列 1 2 3 4
1 Y0 U0 - Y1 - - Y2 U2 - Y3 - -
2 Y4 - V4 Y5 - - Y6 - V6 Y7 - -
3 Y8 U8 - Y9 - - Y10 U10 - Y11 - -
4 Y12 - V12 Y13 - - Y14 - V14 Y15 - -

4.3.1、存储格式总览

4:2:0

4.3.2、I420

I420 是先 Y 再 U 后 V

  • 大多数视频解码器以I420格式输出原始图片

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7  
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
U0  U2  U8  U10 V4  V6  V12 V14

4.3.3、YV12

YV12 是先 Y 再 V 后 U

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7  
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
V4  V6  V12 V14 U0  U2  U8  U10

4.3.4、NV12

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

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7  
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
U0  V4  U2  V6  U8  V12 U10 V14

4.3.5、NV21

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

存储时

Y0  Y1  Y2  Y3  Y4  Y5  Y6  Y7  
Y8  Y9  Y10 Y11 Y12 Y13 Y14 Y15
V4  U0  V6  U2  V12 U8  V14 U10

5、小结

这些格式实际上是用于视频编码和解码中的YUV色彩空间的不同组合。在视频处理中,YUV色彩空间被广泛使用。其中,I420是一种常见的YUV格式之一,在视频编码解码中经常出现。

在视频编码和解码过程中,使用I420格式可以有效地压缩图像数据,减小文件大小和传输带宽,并且在保持相对较高的图像质量的同时,保持较低的计算复杂度。

了解这些常见的YUV格式对于理解视频编码和解码以及图像处理技术是很重要的。在实际应用中,根据具体的需求和平台支持,选择适合的YUV格式进行处理和转换是很常见的操作。

标签:采样,存储,U8,U0,YUV,入门篇,分量,图像编码,计算机
From: https://www.cnblogs.com/ppword/p/17784527.html

相关文章

  • 入门篇-其之六-Java运算符(中)
    祝所有程序员,1024节日快乐!!!......
  • 【计算机视觉】计算机视觉与模式识别关于目标检测的学术速递[10.23]
    检测相关(5篇)【1】Deep-Learning-basedChangeDetectionwithSpaceborneHyperspectralPRISMAdata标题:基于深度学习的星载高光谱棱镜数据变化检测https://arxiv.org/abs/2310.13627变化检测(CD)方法已被应用于光学数据几十年,而使用高光谱数据与精细的光谱分辨率一直很少探索。......
  • Java基础 计算机的存储规则
    在计算机中,任意数据都是以二进制的形式来存储的8个比特为1个字节,字节是计算机最小的存储单元计算机在存储英文的时候,只需一个字节简体中文版Windows默认使用GBK字符集。GBK字符集完全兼容ASCII字符集 GBK编码:规则①:一个汉字用两个字节存储(英文字母占一个字节,二进制......
  • 计算机系统概述
    计算机硬件的基本组成早期冯诺伊曼机输入设备:将信息转换成机器能识别的形式运算器:存放数据和程序运算器:算数运算和逻辑运算输出设备:将结果转换成人们熟悉的形式控制器:指挥程序运行冯诺伊曼计算机的特点计算机由五大部件组成指令和数据以同等地位存于存储器,可按地址寻访......
  • 计算机科学系举办“火焰杯”软件测试开发选拔赛颁奖仪式
    2023年3月9日,南海楼124会议室举行了第三届“火焰杯”软件测试开发选拔赛颁奖仪式。出席此次仪式的有计算机科学系系主任龙锦益教授、指导老师孙玉霞副教授、测吧科技有限公司的总监王雪冬,以及获奖的学生。仪式伊始,龙锦益教授热烈欢迎了王雪冬总监的到来,并对获奖学生的出色......
  • 上古时期的计算机网络连接方式 —— 互联网信号传输网络——电力网络下的计算机网络
       ==============================================  电力猫,使用电线进行计算机网络信号传递的一种组网方式,是计算机网络最早使用的一种组网方式,也是最早被淘汰的一种网络连接方式。 在几十年前的时候,那个时候我们国家的基础设施假设比较落后,很难完全通过电话线、......
  • 测吧(北京)科技有限公司项目总监王雪冬一行访问计算机学院探讨合作
    3月15日,测吧(北京)科技有限公司(以下简称测吧)的项目总监王雪冬莅临计算机学院,就校企合作、学生就业、学生竞赛等一系列关键事项进行了深入研究和讨论,并向计算机学院颁发了优秀组织单位和杰出指导教师奖项。会议由黄曼绮主持,与会人员包括计算机学院院长田原、常务副院长彭光辉、学......
  • 计算机图形:输出图元
    目录图元概念坐标系统屏幕坐标OpenGL中指定2D坐标系统OpenGL画点函数OpenGL画线填充区图元多边形填充区多边形分类识别凹多边形分割凹多边形将凸多边形分割成三角形集多边形的内-外测试多边形表平面方程前向面与后向面OpenGL多边形填充区函数OpenGL顶点数组像素阵列图元位图图像字......
  • 作品著作权尤其是计算机软件著作权该如何注册、登记、认证呢?
    作品著作权尤其是计算机软件著作权该如何注册、登记、认证呢?计算机软件著作权该如何注册、登记、认证呢?优爱酷优爱酷,专注研究AI技术、专心探索软件奥秘、专业研发原创软件、专门原创知识分享330篇原创内容公众号 点击上方蓝字“优爱酷” 关注我们,订阅实用经......
  • 计算机图像编码入门篇(上)
    前言本文旨在为初学者提供有关计算机图像编码的基础知识,以帮助他们初步理解计算机中图像编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。文中部分内容参考ChatGPT,在此感谢ppword的支持。一、认识图片我们先来看一张图片:如果我们把它用ps打开,再放大后......