视频开发中所涉及到的内容众多,而且这一行业对于技术的积累要求颇高,典型的厚积薄发的领域。本人才疏学浅,连皮毛都算不上,这里就只能给大家介绍下视频开发领域中所应该理解的基础知识。掌握这些基础知识后,至少能知道为什么要这么做,往后根据自身的业务需求,去具体解决怎么做的问题。

图片是什么?

在说视频之前,需要说明下什么是图片?因为每一帧的图片是一个更基础的单位。图片大体上分为两类,点阵图矢量图点阵图精确地描述了每一个像素点是怎么排列起来组合成图片的,当我们放大点阵图的时候,一个显示器单元只能显示少数像素点,低于人眼的视觉精度时,就会产生模糊的情况。而矢量图是通过数学计算完成的,每一个点都是计算而得来,即使在拉伸放大的情况下,还是能够通过数学公式正确显示,不会模糊。

像素点是怎么表达的?

前面提及了像素点,那么一个像素点又是如何表达出人眼的视觉感受了?这需要我们回到初中物理课上去,我们所感受到的视觉其实是人眼对于不同波长光的反应。

可见光范围
可见光范围

当一束光进入眼睛时,首先由视网膜进行处理。视网膜上有 3 种视锥细胞它们各自对可见光不同波段有不同的敏感度,分别对短波长、中波长、长波长最敏感,不同的光线条件给予 3 种视锥细胞不同刺激强度(没错这就 RGB 色彩空间的设计来源)。视锥细胞的刺激信息传达到视神经,视神经有蓝-黄、红-绿两个色彩通道,和一个传达亮度的非色彩通道。色彩通道中黄、蓝互相对立,红、绿互相对立,这被称为拮抗作用,最终一个色彩以蓝-黄、红-绿、明暗的程度的形式被传送到大脑(这就是 Lab 色彩空间的设计来源)。

在有了前面这些背景知识后,现在的问题是如何将人眼的视觉感受与编码联系起来,解决方案就是 色彩空间色彩模型

色彩模型:
色彩模型是描述使用一组值(通常使用三个、四个值或者颜色成分)表示颜色方法的抽象数学模型。用什么样的方式来表达人眼的视觉感受,例如最常见的RGB,有一定美术基础的同学,都知道三原色,通过对 Red、Green、Blue 三种颜色进行不同程度的混合能够得到更多的颜色。这就是 RGB 色彩模型。

就算定义好了色彩模型,那么如果在用色彩模型里面来表达颜色,这就涉及到色彩空间了。

色彩空间:
所以RGB就是这种通过对三种颜色进行混合搭配,构成的色彩空间。在色彩模型和一个特定的参照色彩空间之间加入一个特定的映射函数就在参照色彩空间中出现了一个明确的”footprint”。这个”footprint”称为色域,并且与色彩模型一起定义为一个新的色彩空间。

计算机编程里面,每位用8个bit来表示一种颜色,三种颜色混合起来,可以有 2 ^ 24 这么多种颜色,也就成为24位真彩色。但设备不同,并不是所有的颜色都能表达出来,每种色彩空间,都可以定义自身的映射函数。说起来可能有点不太清楚,看看下面的图,你就有感觉了。

色彩空间
色彩空间

常见的色彩模型

现在主流的色彩模型为,RGBHSL(HSB)YUV等等,下面篇幅受限,对于每种色彩模型,只做简单介绍。

RGB ->
是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

HSL ->
HSL同样使用了3个分量来描述色彩,与RGB使用的三色光不同,HSL色彩的表述方式是:H(hue)色相,S(saturation)饱和度,以及L(lightness)亮度。HSL的H(hue)分量,代表的是人眼所能感知的颜色范围,这些颜色分布在一个平面的色相环上,取值范围是0°到360°的圆心角,每个角度可以代表一种颜色。HSL的S(saturation)分量,指的是色彩的饱和度,它用0%至100%的值描述了相同色相、明度下色彩纯度的变化。HSL的L(lightness)分量,指的是色彩的明度,作用是控制色彩的明暗变化。它同样使用了0%至100%的取值范围。数值越小,色彩越暗,越接近于黑色;

H
H
S
S
L
L

关于 HSL 的更多信息,可以看这篇文章。色生心中:人性化的HSL模型 – 腾讯CDC

YUV ->
YUV 最开始的目的是兼容老旧的黑白电视系统。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。U和V一般是红蓝偏移量。

YUV
YUV

文档信息