第四章 视频编码原理与技术

4.4.1概述

  1. 视频概念
  2. 视频编码分类
  3. 视频编码的依据

1、视频概念       

  活动图像信号,也称为数字序列图像或连续帧图像,指由多幅尺寸相同的静止图像组成的图像序列。例如数字化后的电视或视频信号。其中每幅静止图像称为一个帧。

        活动图像与静止图像相比,可以认为多了一个时间轴,成为三维信号,因此活动图像也被称为三维图像

视频图像编码的必要性:由于电视信号数字化后的码率太高,必须先对数据进行压缩编码,然后再进行存储和传输。视频图像编码的目的:就是要在人眼不能察觉、有失真条件下,尽可能采用比较简单有效的编码方法,降低码率,便于能够在给定的通信信道上实时传输视频信号。

视频图像编码的要求:

  • 实时性:图像传输系统必须能实时地对活动电视图像进行编码传输。
  • 高效性:必须能使数字视频信号以一定目标码率传输。如视频信号8bit/像素,数码率高达216Mbit/s。

2、视频编码分类 

帧内编码:也称为空间压缩。利用每幅(单帧)图像内部的相关性进行帧内压缩编码。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息。帧内一般采用有损压缩算法。压缩后的视频数据仍可以以帧为单位进行编辑。帧内压缩一般达不到很高的压缩比。

帧间编码也称为时间压缩。利用时间轴上相邻帧之间的相关性(前后两帧信息变化很小)进行帧间压缩编码帧间压缩一般是无损的

混合编码:为不同的编码方法组合在一起相结合的编码方法。例如变换编码和帧间预测编码相结合。

3、视频编码的依据

(1)图像信号中存在大量冗余度可供压缩

  • 图像信号中的冗余度存在于图像的结构和统计中。就图像信号结构而言,其帧内和帧间存在很强的相关性,这种相关性就是结构冗余
  • 在同一幅图像中规则的物体和规则的背景都具有很强的相关性,称之为空间冗余
  • 相邻帧的时间间隔很短(1/25~1/30s),在景物运动不很剧烈场合,相邻帧间相关性很强,称之为时间冗余
  • 信号中这些大量的冗余度可以压缩,在解码后又可以把这些冗余不失真的恢复。

(2)根据内容的重要程度压缩 

  • 任何一幅图像,画面的主体或者人们感兴趣的仅仅是其中的中心部分,如人的脸,特别是人的眼睛,这些部分要求准确、细致地出来,而对其每一个像素进行精确的采样、传输、转换。而对画面的背景空间,人眼不十分敏感,则可以进行粗略的描述出来,对数据进行大量的压缩。
  • 可以根据帧的内容,对不同区域(主体和非主体区域)采用不一样的数据传输进行处理,这样可减少传送的数据量,让图像得到压缩(空间压缩)。统计表明,电视信号在相邻像素间,相邻行间存在很强的相关性,即它们之间存在很大的冗余,这也可以让图像得到压缩(结构压缩)。

 背景区:指摄像机不动而摄取人物后面的背景。

        一般背景区是静止的,若外界条件不变,则这两帧背景区绝大部分数据相同,意味着两帧背景区之间帧间相关性很强。

运动物体区:若将物体运动近似看作简单平移,则第k帧与第k-1帧的运动区的数据也基本相同。

        简单平移看作只有x方向位移量D_{x},则可采用某种位移估值方法对位移量进行“运动补偿”。

暴露区:指在运动后所暴露出的原来曾被物体遮盖住区域。

        若有存储器将这暴露区的数据暂时存储,则再次经遮盖后再暴露出来的数据与原先存储数据相同,这为一帧间相关性。

这三类区域的帧间相关性是帧间压缩编码的重要依据。

注意:如果将整个画面从一类景物切换为另一类景物时,则谈不上帧间相关性利用。因为整个画面内容数据全部改变了。

(3)利用人的视觉心理特征压缩

         人眼的图像的细节分辨率、运动分辨率、对比度分辨率等的要求都有一定限度,而这三者的分辨能力是相互制约的,即人眼对图像的某种分辨率要求很高时,对其他分辨率的要求就低,因此图像信号在空间、时间、幅度等几方面进行数字化的精细程度,只要达到上述分辨率的限制即可,超过没有必要。

        人眼的视觉特性是图像压缩编码的另一个重要根据。人眼的视觉系统对于图像的注意是非均匀和非线性的,图像的编码和解码处理尽管引入了噪声使图像发生了变化,但这些变化如果不一定被视觉所查觉,称之为视觉冗余。视觉冗余是可以被压缩的。

 (4)从频域分析,图像可压缩

         在PAL制电视图像信号的频带宽度6MHZ,但信号的主体只集中了3MHZ以下的中低频段,其高频段往往只是为了表示画面中突变的轮廓和为数不多的图像纹理细节及景物的快速运动。

        统计说明,图像信号在大部分时间并不是含有如此高频率分量的信息。所以,从频域的角度来说,图像信号的数据是可以压缩。

4.2.1运动估计与运动补偿

  1. 视频编码的关键问题
  2. 运动估计
  3. 运动补偿
  4. 运动补偿帧间预测编码

1、视频编码的关键问题 

对于序列图像中大量存在的静止或缓变区域,如何把运动区域和静止或缓变区域分割开来?对于静止区域如何压缩编码?对于运动区域如何压缩编码?

(1)如何把运动区域和静止或缓变区域分割?

 (2)如何对于静止或缓变区域压缩编码?

帧(场)重复工作模式:

  • 通常用在可视电话等传输码率很低应用场合。
  • 在序列图像传输中进行抽帧,使少传一些帧。
  • 在接收端可以采用对前帧重复读出方式补满。

(3)如何对运动区域进行压缩编码? 

采用运动估计与运动补偿预测方法:

  •  相邻画面高度相似,其中差别变化是由于物体运动或摄像机运动所引起的。
  • 画面中物体或像素的运动是可以估计的。
  • 因此,可以从前面的画面预测当前画面,编码器只对预测误差进行编码。
  • 不能进行预测的画面或区域使用JPEG进行编码(利用画面内部相关性)。

 2、运动估计

定义:

  • 将活动图像分为若干个块,检测出当前帧中每个块在前一帧(参考帧)图像中的对应位置,从而可以估计出这个块的位移,用运动矢量表示。这个过程叫做运动估计。运动估计主要用来估计运动矢量。
  • 运动估计通常以宏块为单位进行,计算被压缩图像与参考图像在对应位置处的宏块间的位置偏移。
  • 该位置偏移是以运动矢量描述,代表水平和垂直两个方向的位移。

 3、运动补偿

 定义

  •  就是根据求出的运动矢量,找到当前帧的像素(或像素块)是从前一帧的哪个位置移动过来的,从而得到当前帧像素(或像素块)的预测值。
  • 由于用当前帧在前一帧图像中对应部分来对当前帧进行预测,而相邻两帧中对应的运动部分图像信息会有所不同,所以一般会产生补偿残差。
  • 运动估计及补偿的基本原理:利用帧间运动估计得到待编码图像块的一个(或多个)参考块,然后用这个参考块进行运动补偿,将补偿后残差进行DCT变换和可变长编码。

4、运动补偿帧间预测编码 

定义

对于运动的物体,如果能估计出物体在相邻帧内的相对位移,那么用上一帧中物体的对应区域对当前帧物体进行预测,编码传输预测误差部分,就可压缩这部分区域的码率。这种考虑了运动物体对应区域的位移或运动的预测方式称为运动补偿帧间预测编码。

 运动补偿帧间预测编码技术的组成:

  •  物体的划分:划分静止区域和运动区域。这里假设运动物体仅作平移。
  • 运动估计:对每一个运动物体进行位移估计。
  • 运动补偿:由位移估值建立同一运动物体在不同帧空间位置对应关系,建立预测关系。
  • 补偿后的预测信息编码:对运动物体的补偿后的位移帧差信号,以及运动矢量等进行编码传输。

4.4.2块匹配运动估计

  1. 基本思想
    1. 块与运动矢量的关系
    2. 子块大小的选择
  2.  提高搜索效率的主要技术
    1. 初始搜索点的选择
    2. 匹配准则
    3. 运动搜索策略

 1、基本思想

  • 将视频序列的每一帧都划分为许多大小相同、互不重叠的子块(并做假设:子块内所有像素具有运动一致性,并且只做平移运动,不包含旋转、伸缩)
  • 对每个子块到参考帧某一给定特定搜索范围(匹配窗)内根据一定的匹配准则找出与当前块最相似的块,即预测块(匹配块)
  • 预测块与当前块的相对位移即为运动矢量(Motion Vector,MV),预测块和当前块之间的差值称为残差图像

        视频压缩的时候,只需保存运动矢量和残差数据就可以完全恢复出当前块;预测越准确,残差中的数值越小,编码后所占用的比特数越少;

        利用运动矢量在参考帧上进行运动补偿,补偿残差经DCT变换、量化、编码后与运动矢量共同编码传送。

 子块大小的选择:

  • 必须足够大,太小会发生匹配到有相同像素值但与场景无关的块;块小也会增加运算量,同时增加所需传输的运动矢量信息;
  • 必须足够小,若一个块里存在不同的运动矢量,匹配块不能提供准确有效估计。

2、提高搜索效率的主要技术 

  • 运动估计算法研究的目标——提高预测精度,加快估计速度,降低编码比特率;
  • 提高算法效率采用的方法:
    • 初始搜索点的选择
    • 匹配准则
    • 运动搜索策略

(1)初始搜索点的选择 

运动估计算法研究的目标——直接选择参考帧对应的(0,0)位置。该方法简单,但是易陷入局部最优点(初始步长太大,原点不是最优点,有可能使快速搜索跳出原点周围可能性较大的区域而去搜索远距离的点,导致搜索方向不确定,可能陷入局部最优)。

改进:利用相关性预测初始搜索点,减少搜索次数。

  • 基于SAD(sum of difference)值的起点预测方法——求出当前块与相邻块间的SAD值,选取SAD最小的块的运动矢量作为预测值。预测精度高,计算量大;
  • 基于相邻运动矢量相等的起点预测方法,保证精度基础上利用运动矢量相关性大大减少计算量。

(2)匹配准则

不同的准则函数也就是不同的统计量里面所涉及的运算如上表所示。

 (3)运动搜索策略

  • 即如何进行搜索,以保证运动估计的准确性和搜索速度;
  • 存在计算复杂度和搜索精度的矛盾,往往采取折中。
  • 搜索方法有:全搜索、三步搜索、交叉搜索、分层运动估计算法等。

 4.3.1快速块匹配算法

  1. 分层的和多分辨率的快速块匹配方法
  2. 固定搜索模式的快速块匹配方法
  3. 降低匹配准则复杂度的快速块匹配方法
  4. 基于时空相关性和视觉特性的快速块匹配方法

(1)分层的和多分辨率的快速块匹配方法

        用低分辨率块的运动矢量预测较高分辨率块的运动矢量,或者用同一分辨率下大尺寸块的运动矢量预测其内部子块的运动矢量,并在后续搜索中做进一步修正。

缺点:构造多层/多分辨率图像有较大的计算复杂度,且内存需求较大。

 (2)固定搜索模式的快速块匹配方法

  • 该方法假设匹配误差随着离全局误差最小点的距离增加而单调增加;
  • 一般从原点开始,采用固定的搜索模板和搜索策略得到最佳匹配块;
  • 著名的算法有:三步法、梯度下降法、四步法、菱形法、六边形法等。

 (3)降低匹配准则复杂度的快速块匹配方法

        不会减少搜索点数,而是着眼于匹配准则计算复杂度的降低,因而常常用于全搜索法的快速实现;
例如:像素子采样法 

像素子采样法:

        通常的匹配准则是把块里所有的象素点进行计算和比较,事实上一个块里相邻象素的差别很小,使得它们之间也存在冗余;

        子采样运动估计算法就利用了这一事实,只取其中的一部分象素进行计算(比如,可以把这个块中隔行或者隔列进行采样),可大大减少计算量,但同时降低了准确性。

(4)基于时空相关性和视觉特性的快速块匹配方法

        针对固定模式法的不足,近几年来,人们针对序列图像的时空相关性和人眼视觉特性,提出了许多改进算法,主要可分类下面几类:

        预测搜索起点、在终止条件上提出改进算法、改进搜索模版、宏块运动类型判别。

        <1>预测搜索起点

 <2>改变终止条件

         由于一般序列中背景块占有相当的比例,对背景块的快速检测对搜索算法的性能提高很大,一般使用终止判别方法;门限值的选择至关重要:

  • 设为固定值
  • 根据邻块SDA值自适应确定(自适应方法一般取邻块SDA的加权和,权重的设计又是一个研究点)

<3>改进搜索模块

         在序列图像中,大多数的运动矢量都位于水平或垂直方向,因此有设计了扁平搜索模板(非对称搜索模板);

         在新的算法中,针对运动特别剧烈的宏块,设计了另两种超大模版:大十字模板、多层次六边形模版。

 <4>宏块运动类别判断 

总结

        这节主要是四种类型的快速块匹配方法,以及在每种类型中如何进行思考和改进,来提高块匹配方法的速度和准确度。

4.3.2 全搜索法和三部搜索法

        在经典运动估计算法中有一大类就是固定搜索模式的搜索算法,经典运动估计算法中有多种,全搜索法、三步搜索法、新三步搜索法、四步搜索法、基于块的梯度下降搜索法、菱形搜索法、六边形搜索法等等。

1、全搜索法

2、三步搜索法 

 绿色像素点,所标注的是第一步搜索过程中所设定的9个待匹配位置,这9个待匹配位置相应有9个宏块,这9个宏块和待编码块进行求它的匹配测度,第一步算得9个匹配测度,在这9个匹配测度中最小的那个值,认为是第一步的最优值。

从中心位置到粉色点的矢量就是运动矢量。

3、新三步搜索法(New Three Step Search,NTSS)

视频序列,运动矢量的分布在中心位置上的概率最大,即运动矢量具有中心偏移特性。

 4.3.3四步搜索法和菱形搜索法

 1、四步搜索法

基于现实中序列图像一个特征,即运动矢量都是中心分布的,从而在5×5搜索窗上构造了9个检测点的搜索模板;

  • 首先用5×5搜索窗
  • 每一步将搜索窗的中心移向最小块误差点处
  • 后两步搜索窗大小依赖于最小块误差点的位置
  • 计算复杂度低,搜索幅度较平滑,不会出现方向上误导

若这次的最匹配点不在窗口边上也不再角上而是在窗口的中心,则缩小搜索窗口为3*3,如果是在边上或四个角上,需要重复上述的步骤。

窗口缩小到3*3后,计算出相邻检测点的最小匹配误差,从而找到最匹配点的位置,即对应最佳运动矢量。

 2、菱形搜索法(DS)

搜索窗口太小易陷入局部最优,搜索窗口太大易产生错误的搜索路径;

统计表明,视频图像进行运动估计最优点通常在零矢量周围;基于上述事实,采用两种模板:9个检测点的大菱形模板和5个检测点的小菱形模板;先用大模板计算当最小块误差点出现在中心处时,换为小模板,此时5个点中最小块误差点即为最优匹配点。

 菱形搜索法性能分析:

  1. 选用了大小两种形状的搜索模版,先用大模板搜索,步长大搜索范围广,进行粗定位,避免搜索窗口太小时,陷入局部最优;粗定位后,再用小模板准确定位,保证匹配精度;
  2. 搜索时各步之间相关性强,模板移动只需要在几个新的检测点处进行匹配计算,提高了搜索速度。

 固定模式搜索法的缺点:

  1.  没有利用图像本身的相关信息,不能根据物体运动的剧烈程度自适应的改变搜索起点和搜索半径;
  2. 以菱形法为例,对背景图像,也要经历从大模板到小模板的转换过程,至少需要13个搜索点,搜索速度还有待改进;
  3. 对于运动剧烈的图像,从原点开始搜索时,要经过多次搜索才能找到匹配点,搜索点过多,且容易陷入局部最优点。

4.4.1高效视频编码中的编码结构

编码结构的作用

编码结构就是规定图像在编码的时候的编码顺序以及编码类型(对应着编码技术)的,编码类型定了之后相对应的就使用那些具体的编码技术对当前图像进行编码。

全帧内编码结构:在编码时将视频中的所有帧都用帧内预测技术进行编码。视频中所有帧的编码帧类型都是I帧,帧内帧(当前图像中的块在做预测的时候它的最优匹配块只能够在与当前块处于同一个图像里面的其他块来寻找)

在编码视频的时候,会将内容相近相邻的几幅图像组成一起,我们称之为图像组(GOP)

在一个GOP中会将不同的图像分配到不同的时间层。编号1234这四幅图像,认为处在第一个GOP,这四副图像又会近一步分配到不同的时间层上,编号为4的图像处在时间1层,编号为2的处在时间2层,编号为13的两幅图像处在时间3层。

图中箭头表示参考帧的方向,之所以叫帧间帧,也就是说当前图像在编码的时候,处在当前的图像里边的块,它在寻找最优匹配块的时候除了可以在本图像内的块找之外,它还可以在其他图像里边找。

使用帧间预测技术可以有效的消除视频中的时域冗余,因为它利用了图像之间的相关性。

使用低时延编码结构,图像的编码顺序和它的显示顺序是一致的,不存在编码时延的一个问题。

 随机接入编码结构的一个缺点:在编码的时候图像的编码顺序和它的实际显示顺序是有差别的,会带来一个比较大的编码时延,不适用于对实时性要求高的场景。

4.5.1高效视频编码中的量化参数选择技术

 

 然后通过结论进行函数化简,再使用数学方法求解函数。

猜你喜欢

转载自blog.csdn.net/m0_46303430/article/details/125999522
今日推荐