一、前言

在前面几篇文章中,咱们完结了音频相关根底常识的学习,从今日开端,咱们要暂别音频,持续学习视频相关根底内容。

虽然声响在咱们日常的日子、作业、娱乐进程中,发挥着不行代替的作用,但人们常说,百闻不如一见、耳听为虚眼见为实。咱们关于世界的知道、关于交流和互动的需求从未满足于 “声响” 这一个途径,在如今这个 “看脸” 的年代,咱们许多时分还追求 “看见”、“面对面”,而这便是视频存在的意义

相关于纯音频,音视频能传递更直观、更丰厚的信息,许多时分,视频的参加赋予了音频血肉,也给予了咱们更多的挑选。一切根据纯音频的场景,都能够经过参加视频元素而演变出新的玩法,比方音频语聊晋级为视频通话、电台直播转变为秀场直播、语音课堂晋级为视频课堂等等。当然,视频元素也并不局限于 “摄像头”,屏幕收集、版权影视资源都能够作为视频数据源,满足了游戏直播、一同看电影等场景。

已然 “视频” 有这么多价值,作为一个音视频运用开发者,咱们天然要来好好地了解一下它。

二、视频的实质 —— 图画

在前几回和声响打交道的进程中,咱们了解到声响的实质是物体振荡发生的波,咱们关于声响的感知,其实是经过耳膜感知了声波的振荡,所以关于声响的学习是从声波的收集以及数字化开端的。现在,咱们开端和视频打交道,天然要从视频的实质、以及咱们对视频的感知方法聊起。

那么,视频是如何发生的呢?

咱们必定有接触过 “翻页连环画”,这种连环画的每一页都是静态的图片,常态下平平无奇,但假如咱们快速地拨动翻页,让每一页图片快速、连接地进行展现,本来 “静态” 的图片,在视觉上居然变成了 “动态” 的画面(如下图)。

视频产生的本质及色彩空间:RGB 和 YUV

这儿 “静态图片” 之所以会转变为 “动态画面” ,是根据人眼的 “视觉暂留 “特性:咱们观看物体时,物体首先成像于视网膜、并由视神经传入大脑,大脑才感知到物体的像。而当物体从视野中移去时,视神经对物体的形象不会立即消失,会延续几百毫秒。当旧图画消失、新图画替换呈现的频率满足快时,前后图画在视觉上就发生了 “连接”,形成了 “动态画面”。而 “动态画面” 也便是咱们所说的 “视频”。

从 “翻页连环画” 的现象看,视频的实质其实是一帧帧接连展现的图画。而咱们对视频内容的感知方法,便是通过眼睛捕获到一帧帧图画上的 “颜色” 。无论是最简单的是非默剧,仍是最丰厚的炫彩影视,都需求由颜色组成血肉和骨骼。

所以,咱们关于视频常识的学习,还需求从知道 “颜色” 开端。

三、图画的血肉和骨骼 —— 颜色

咱们都知道,眼睛之所以能看到物体,是因为接收了物体反射的光波。而颜色,则是大脑对光的一种 “感觉”。相较于声响的 “只可言传,不行意会”,颜色关于咱们来说,是 “只可眼观,不行言传” 的。为了便利对颜色进行统一描绘,也为了让数字电路能识别、处理颜色数据,咱们需求运用数字化的手段对颜色进行界说

说到颜色的界说方法,最为咱们所熟知的是 “光的三原色模型” 。光进入人眼后,视觉细胞会发生多个信号,其中有三种单色光信号:红(Red)、绿(Green)、蓝(Blue) ,这三种单色光按不同比例组合,形成了不同的颜色,咱们也称其为RGB 模型。参阅 RGB 模型,咱们选定了三种颜色重量,再对每种单色重量进行量化,也就完结了对颜色的数字化处理。

这种处理方法所运用的 “颜色模型” 的概念,很容易和 “多维空间、多维坐标系” 联络起来。比方 RGB 模型的三个重量,能够分别视为三维空间的 X、Y、Z 坐标,确认了详细的 RGB 重量值,相当于确认了一个(X,Y,Z)坐标点,每个不同的点即代表不同的颜色。假如咱们计算出每个重量的取值规模(坐标规模),那么该规模内的一切重量的取值组合,就确认了一个颜色空间(Color Space),该空间中包括了该颜色模型可表明的一切颜色。

视频产生的本质及色彩空间:RGB 和 YUV

关于人眼来说,能识别的颜色数量有限,统筹考虑技能瓶颈,实际运用中需求展现、能够展现的颜色也是有限的,咱们往往不需求一个颜色模型的一切颜色,不同场景下一般只需求选用某个颜色 “子空间”,作为其规范的颜色空间(也称为 “色域”) 。而不同软硬件平台,只需约定好支持相同的颜色空间,只运用该颜色空间内的颜色,就能完结兼容互通,否则,它们对同一种颜色的展现就可能会呈现差异。

在不同范畴拟定的众多颜色空间中,有一个比较特别的空间:CIE 颜色空间,它包括了人眼所能感知的一切颜色。CIE 颜色空间常常被当作规范的参阅系,用于不同颜色空间之间的比较。假如咱们将 CIE 颜色空间中的一切颜色,经过数学模型映射到一个二维平面中,将得到一个如下的色域马蹄图,关闭区域即为 CIE 颜色空间所能表明的一切颜色。

视频产生的本质及色彩空间:RGB 和 YUV

CIE 颜色空间:人眼的可视颜色规模

当然,除了根据光的三原色的 RGB 模型,颜色模型 / 颜色空间还有许多种,常见的比方 YUV、CMYK、HSV、HSI 等等。而在 RTC 运用中,首要运用的是 RGB 和 YUV ,咱们后边会要点了解这两种颜色空间。

而在了解详细的颜色空间之前,咱们还有一个疑问需求解答:颜色,是如何组成图画的呢?

虽然视频的实质是图画,但图画并非不行分割,它仍然有更小的组成单位 – “像素”(Pixel)。关于图画和像素的联络,咱们能够先观察如下两张图片:

视频产生的本质及色彩空间:RGB 和 YUV

在上面的图片中,左图为正常尺度的图片全貌,右图为扩大必定倍数之后的局部截图(企鹅的头部)。

咱们能够看到,本来细腻的图片,在扩大之后呈现了一个个小方块,这些或颜色各异、或颜色相近的小方块按必定规矩排列组合,终究呈现了 “企鹅” 的形象。这儿的小方块,便是所谓的 “像素”。

一个像素,是图画的一个最根本单元,是构成图画的一个色点,咱们也能够称其为像素点。每个像素点上记载了某种颜色空间的每个重量值(比方 R、G、B),不同的重量值组合决议了这个像素点所表明的颜色,多个表明特定颜色的像素点,按某种规矩排列组合,就形成了完好的图画。能够说,“像素们” 承当了图片颜色构成的重任。

好了,关于像素、以及像素与图画颜色的构成联络,咱们就先了解到这,后边咱们还会和它们有进一步接触。现在,让咱们回到颜色空间的话题上,来详细了解一下,RTC 运用中最常运用的颜色空间:RGB 和 YUV 。

1、 RGB

首先,咱们来知道一下 RGB 颜色空间。

咱们前面已开始了解,RGB 颜色模型根据光的三原色原理建立,其三个重量为:红(Red)、绿(Green)、蓝(Blue)。在 RGB 模型下,图画的每一个像素点都会存储 R、G、B 三个重量(如下图),每个重量取不同的数值( 0 ~ 255 ),该像素点就能归纳呈现出不同的颜色。根据此,假如按(R,G,B)的方法记载,那么(255,0,0)、(0,255,0)、(0,0,255)分别表明的便是最朴实的 红、绿、蓝 。而比较特别的,若 RGB 三个重量值均为 0,归纳得到黑色;反之,若三个重量取最大值 255,归纳得到白色。

视频产生的本质及色彩空间:RGB 和 YUV

RGB 可表明的颜色数量可达 1677 万,这远远超过了人眼的感知规模(约 1000 万种),正因如此,RGB 被广泛运用于各种显现范畴。而不同范畴、不同运用场景,根据其所需的颜色规模,又建立了根据 RGB 模型的、不同的颜色子空间,最常见的有 sRGB 和 Adobe RGB。

  • sRGB 和 Adobe RGB

sRGB 颜色空间由 Microsoft 在 1997 年主导拟定,被广泛运用于显现器、数码相机、扫描仪、投影仪等设备。咱们选购显现器时,必定有在产品特性介绍中看到过比方 “99% sRGB、100% sRGB” 之类的指标,其意义即为该显现器对 sRGB 颜色空间的掩盖程度,数值越高,意味着该显现设备所支持的颜色越丰厚。而 Adobe RGB 比 sRGB 晚问世一年,由 Adobe 在 1998 年提出,它在 sRGB 的根底上增加了 CMYK 颜色空间(一种专用于印刷业的颜色空间,模型重量为青(Cyan),洋红(Magenta),黄(Yellow),黑(Black)),Adobe RGB 跟随着 Adobe 设计软件全家桶被广泛运用于平面设计行业。

  • sRGB 和 Adobe RGB 的对比

关于 sRGB 和 Adobe RGB 的比较,咱们能够凭仗CIE 颜色空间马蹄图作为参阅。

如下图,咱们将 CIE、sRGB 和 Adobe RGB 的颜色规模换算到同一个平面上。最外围的颜色区域为 CIE 颜色空间,三角形部分为 sRGB 和 Adobe RGB。能够看到,sRGB 和 Adobe RGB 的颜色规模均小余 CIE,可是 Adobe RGB 的掩盖规模比 sRGB 更广,尤其是在绿色区域掩盖得更多(sRGB 大约能掩盖 35% 的 CIE,Adobe RGB 则为 50%),这使得 Adobe RGB 在摄像、图画处理、保真方面更游刃有余。

视频产生的本质及色彩空间:RGB 和 YUV

sRGB 和 Adobe RGB 的比较

不过,即便 Adobe RGB 相较 sRGB 更出色,在运用规模上依旧是 sRGB 更广。作为 “长辈”,抱着 Windows 的大腿,sRGB 凭仗 Windows 雄厚的用户根底得到了广泛的普及。如今,互联网上绝大多数内容,比方视频网站的影视剧、比方这篇文章中的图片,根本都是以 100% sRGB 的颜色规范进行显现的。一张 Adobe RGB 规范的图片假如放在网页上观看,其颜色可能会变淡(相关于原始颜色),这是因为 Adobe RGB 图片的颜色超过了网页的显色规范,部分颜色信息呈现了丢失。但即便如此,关于大部分用户来说,日常场景运用 sRGB 已然满足,当需求更广的色域以到达更优质的颜色作用时(比方专业平面设计 / 拍摄场景),才有必要考虑 Adobe RGB。

从 RGB 两种子颜色空间的运用场景看,不得不承认 RGB 和咱们的日常日子已是休戚相关。可是,即便在收集、显现等用途上 RGB “一家独大”,当聚集到视频处理范畴时,它却有些发挥不开手脚。

RGB 在表明颜色时有一个特点,那便是其三个通道重量是相关的,缺一不行。也即每个像素点有必要同时存储 R、G、B 三个重量值才能正确表明颜色,这导致它不便于做编码压缩,假如用于存储或传输,会占用很多的空间和带宽(关于空间和带宽的重要性,咱们在 音频必知必会 – 音频编解码中已有过评论)。空间和带宽问题,在一帧图画上或许能够牵强忍受,但在视频资源上,就非常严峻了(时长 1s 的视频资源,一般包括数十帧的图画,空间和带宽占用将呈数十倍增加)。

因此,咱们还需求其他的颜色空间,来代替 RGB 用于视频处理范畴,而这便是接下来要和咱们介绍的,YUV 颜色空间。

2、YUV

已然 RGB 三个重量的相关性,限制了其在视频范畴的运用,作为其上位挑选的 YUV 天然不能重蹈覆辙。YUV 颜色空间也有三个重量 Y、U、V,但和 RGB 不同的是,其三个重量并非都参与颜色的表明。

YUV 的三个重量中, Y 重量用于表明明亮度(Luminance),决议一个像素是明、或暗(能够理解为是黑、或白)以及其明暗的程度。咱们仅记载明暗不同的 Y 重量,就能表明出图画的整体概括( 如下图中的 【Y】)。而 U、V 重量表明色度(Chrominance),用于界说颜色和饱和度( 如下图中的 【U】【V】)。一个记载了 Y 重量的像素,再添加上 U、V 重量,图画概括中就填充了 “是非、明暗” 之外的其他颜色。

视频产生的本质及色彩空间:RGB 和 YUV

YUV 和 其三个重量

不难发现,即使没有 U、V 重量,仅凭 Y 重量咱们也能 “识别” 出一幅图画的根本内容,只不过此刻呈现的是一张是非图画。而 U、V 重量为这些根本内容赋予了颜色,是非图画演变为了五颜六色图画。这听起来是否有些似曾相识呢?这其实也是是非电视和五颜六色电视之间的联络。

YUV 是在是非、五颜六色电视的过渡时期应运而生的,它这种既能够完好记载五颜六色信号,又能经过仅记载 Y 通道信号来表明是非画面的特性,很好地解决了是非电视与五颜六色电视的兼容互通问题。并且,因为人眼关于亮度(Y)相较于色度(U、V)更高、更灵敏,咱们关于不同明亮度的识别才能,远远超过对不同色度的识别才能。这意味着,咱们能够在保存 Y 重量信息的情况下,尽可能地削减 U、V 两个重量的采样,以完结最大极限地削减数据量,同时还能保证人眼视觉失真度最小,这关于视频数据的存储和传输是有极大裨益的。这也是为什么,YUV 相较于 RGB 更适合于视频处理范畴。

3、YUV 和 RGB 的转化

在了解了 RGB 和 YUV 的根底常识和运用场景后,你可能会有一些疑惑。已然在图画收集、显现方面,咱们首要运用 RGB,可是在图画存储、处理、传输方面,咱们又要挑选 YUV。而在一个完好的运用场景中,视频的收集、存储、处理、 传输、显现等环节,却是彼此相关、缺一不行的,这儿是否会存在抵触呢?

是的,这儿确实存在两种颜色空间的运用抵触,咱们解决抵触的方法是 “颜色空间转化”。

RGB 与 YUV 的彼此转化,存在于视频处理链路的各个必要环节。

视频收集设备一般输出的是 RGB 数据,咱们需求将其转化为 YUV 数据再进行后续的处理、编码和传输;同样的,显现设备经过传输、解码环节获取到 YUV 数据后,也需求将其转化为 RGB 数据,再进行消费展现。

关于这两种颜色空间转化的细节,咱们暂不需求深究,但需求了解到:颜色空间转化是一个根据 “规范” 来履行的进程,只要在明确规范的根底上,才能经过必定的数学运算完结二者的彼此转化。而 “规范” 有许多种,比方 BT.601、BT.709 等等,不同的规范会有不同的转化公式,有爱好的同学能够去查阅相关的材料做进一步了解。

关于 YUV 和 RGB ,除了要了解它们的根本原理,咱们还需求重视它们的 “采样方法” 和 “存储格局”。“采样方法” 和 “存储格局” 相关的内容,非常重要却也比较复杂,咱们将在下一篇文章中,再详细地和咱们探讨。

四、总结

本篇文章咱们要点叙述图画与颜色根底常识的榜首部分,在今日的学习进程中,咱们能够了解到视频、图画、像素和颜色之间的联络,也开始知道了两种重要的颜色空间:RGB 和 YUV,以及它们的根本原理、差异和联络。

接下来,咱们仍是经过一个思想导图,收拾一下一切的内容:

视频产生的本质及色彩空间:RGB 和 YUV

视频产生的本质及色彩空间:RGB 和 YUV

当然,以上的内容还只是开胃小菜,在下一篇文章中,咱们会持续和 RGB、YUV 打交道,看看它们身上还有哪些 “未解之谜”。期待和咱们的下一次见面。