数字视频简介

基本术语


颜色编码方法

一张图片可以被想象成2D的矩阵。如果我们考虑颜色,我们可以顺着这个思路一张图片想象成3D矩阵,其中另外一个D用于存储颜色数据。

如果我们使用原色(红,黄,蓝三色)代表这些颜色,我们可以定义三个平面:第一个代表红色,第二个代表绿色,第三个代表蓝色。
在这里插入图片描述
我们将这个矩阵中的每一个点成为像素,一个像素表示给定颜色的强度,通常用数字值。举个例子,一个红色的像素(R:0 , G:0 , B:255)。

编码彩色图像的其他方式
许多其他可能的模型可用于表示构成图像的颜色。例如,我们可以使用索引调色板,我们只需要一个字节来表示每个像素,而不是使用RGB模型时所需的3个像素。在这样的模型中,我们可以使用2D矩阵而不是3D矩阵来表示我们的颜色,这将节省内存但产生更少的颜色选项。

在这里插入图片描述
例如,请查看下面的图片。第一张脸是全彩的。其他是红色,绿色和蓝色的平面(显示为灰色调)。
在这里插入图片描述
我们可以看到,红色将是对最终颜色贡献更多(第二面中最亮的部分)的颜色,而蓝色颜色的贡献大多只能在马里奥的眼睛(最后一张脸)和他的衣服的一部分中看到,看看所有飞机如何为马里奥的胡子贡献更少(最黑暗的部分)。

深度(bit depth)

并且每种颜色强度需要一定量的位,这个量称为位深度。假设我们每种颜色(平面)花费8位(接受0到255之间的值),因此我们的颜色深度为24位(8位* 3平面R / G / B),我们也可以推断出我们可以使用2到24种不同颜色的力量。

了解如何将图像从世界中捕获到比特中,这真是太棒了

分辨率

图像的另一个属性是分辨率,即一维矩阵中的像素数。它通常表示为宽度×高度,例如,下面的4×4图像。
在这里插入图片描述

宽高比

我们在处理图像或视频时可以看到的另一个属性是宽高比,它简单地描述了图像或像素的宽度和高度之间的比例关系。

当人们说这部电影或图片是16:9时,他们通常指的是显示宽高比(DAR),但我们也可以使用不同形状的单个像素,我们称之为像素宽高比(PAR)。
在这里插入图片描述
在这里插入图片描述

DVD是DAR 4:3
虽然DVD的真实分辨率为704x480,但仍保持4:3的宽高比,因为它的PAR为10:11(704x10 / 480x11)

帧率

最后,我们可以将一段时间内连续的n帧定义为视频,n表示帧率或则每秒钟的帧数(fps)。
在这里插入图片描述

码率

每秒钟需要显示的视频数据的大小我们成之为码率

bit rate = width * height * bit depth * frames per second

举个例子,一个视频的帧率是30fps,每个像素的深度为24,分辨率为480x240;那么根据上面的公式计算得出我们每秒需要82,944,000 bits或则82.944 Mbps 这么大的网络带宽或则本地存储空间!当然前提是我们不进行任何压缩的情况下。

码率控制方法(VBR/CBR/ABR)

  • 当码率几乎恒定的时候我们称为恒定码率(CBR)
  • 当码率是变化的时候我们称之为动态码率(VBR)

该图显示了受约束的VBR,其在帧为黑色时不会花费太多比特。
在这里插入图片描述

隔行/逐行扫描

隔行扫描

在早期,工程师想出了一种技术,可以在不消耗额外带宽的情况下将视频显示的帧速率加倍。这种技术称为隔行扫描视频 ; 它基本上在1“帧”中发送一半屏幕而在下一个“帧”中发送另一半。

逐行扫描

今天屏幕渲染主要使用逐行扫描技术。渐进式是一种显示,存储或传输运动图像的方式,其中每个帧的所有线都是按顺序绘制的。
在这里插入图片描述

查看视频信息

我们可以使用mediainfo或则ffmpeg来查看视频的信息,
在这里插入图片描述
此处还有很多信息上面没有介绍到,后面会介绍到!

去冗余

我们了解到,使用不要所的视频是不可行的!一个时常一小时,分辨率是720p,帧率是30帧的视频,需要278GB的存储空间!由于仅使用 DEFLATE等无损数据压缩算法(用于PKZIP,Gzip和PNG),因此不会充分降低所需带宽,我们需要找到压缩视频的其他方法。

存储空间计算:1280x720x24x30x3600(宽度,高度,每像素位数,fps和时间,以秒为单位)

为了做到这一点,我们需要研究一下我们的眼睛是如何工作的,相对于颜色我们对亮度更加敏感,视频往往是一段时间内多张非常相似的有极小变化的图片的连续,每一帧中也包含很多相似或则一样的颜色。这就为我们提供了两个视频压缩编码的方向:帧间编码和帧内编码

颜色 亮度和我们的眼睛

其实我们的眼睛对亮度更加的敏感why?,可以亲自测试下,看看下面的这张照片。
在这里插入图片描述
如果您不能看出上图左侧的方块A和方块B的颜色是相同的,那么恭喜你被自己的大脑给骗了,这是因为相对于颜色,我们的大脑更多的关注亮或则暗度。右侧的图片中我们增加了一个颜色连接器,这样我们就能非常容易的看出这是俩两个颜色相同的块。如果您还对此有怀疑,可以用纸条或则手指遮住中间的颜色连接器,您会发现,颜色又不一样了!

眼睛如何工作的一个简单介绍

The eye is a complex organ, it is composed of many parts but we are mostly interested in the cones and rods cells. The eye contains about 120 million rod cells and 6 million cone cells.

To oversimplify, let’s try to put colors and brightness in the eye’s parts function. The rod cells are mostly responsible for brightness while the cone cells are responsible for color, there are three types of cones, each with different pigment, namely: S-cones (Blue), M-cones (Green) and L-cones (Red).

Since we have many more rod cells (brightness) than cone cells (color), one can infer that we are more capable of distinguishing dark and light than colors.
在这里插入图片描述

Contrast sensitivity functions

Researchers of experimental psychology and many other fields have developed many theories on human vision. And one of them is called Contrast sensitivity functions. They are related to spatio and temporal of the light and their value presents at given init light, how much change is required before an observer reported there was a change. Notice the plural of the word “function”, this is for the reason that we can measure Contrast sensitivity functions with not only black-white but also colors. The result of these experiments shows that in most cases our eyes are more sensitive to brightness than color.

一旦我们知道我们对亮度(图像中的亮度)更敏感,我们就可以尝试利用它。

颜色模型

在文章的开始我们就已经了解过了关于RGB颜色模型如何对图片进行着色,
当然还有其他的颜色模式!事实上还有一个模型是将亮度和色度分开,成之为YCbCr*。*代表这个模型还能演变出更多的模型。
该颜色模型使用Y表示亮度,使用Cb(chrome blue)和Cr(chrome red)表示两个颜色通道。YCbCr和YUV模式可以相互转化,使用此模型,我们可以创建全彩色图像,如下所示
在这里插入图片描述

YCbCr 和 RGB转换

有人可能会质疑,没有绿色我们怎么可能创建出所有的颜色?
我们通过将RGB转到YCbCr来回答这个问题,我们将使用ITU-R*组织建议的BT.601标准的系数。
第一步是计算亮度,我们将使用ITU建议的常量计算

Y = 0.299R + 0.587G + 0.114B

一旦我们得到亮度值,我们就能解析出两个色度通道的值

Cb = 0.564(B - Y)
Cr = 0.713(R - Y)

当然我们能根据公式将YCbCr退回成RGB,甚至得到RGB的B色

R = Y + 1.402Cr
B = Y + 1.772Cb
G = Y - 0.344Cb - 0.714Cr

在数字视频领域组织和标准是很常见的,他们通常是标准的制定者,例如,什么是4K?我们应该用什么样的帧率?分辨率呢?颜色模式呢?

通常,显示器(显示器,电视,屏幕等)仅使用RGB模型,以不同的方式组织,请参阅以下放大的部分:
在这里插入图片描述

Chroma subsampling(二次抽样

由于图像表示为亮度和色度分量,我们可以利用人类视觉系统对亮度比色度更敏感的特点去有选择的删除信息。Chroma subsampling就是这种色度分辨率低于亮度分辨率进行编码的技术。
在这里插入图片描述
那么问题来了,我们应该降低多少色度分辨率呢?事实证明,已经有一些模式描述了如何处理分辨率和合并 (final color = Y + Cb + Cr).

实践:检查YCbCr直方图

您可以使用ffmpeg检查YCbCr直方图。此场景具有更高的蓝色贡献,直方图显示。

ffmpeg -i /files/v/small_bunny_1080p_30fps.mp4 -vf "split=2[a][b],[b]histogram,format=yuv420p[hh],[a][hh]overlay" /files/v/small_bunny_yuv_histogram.mp4

在这里插入图片描述

帧类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值