一种结合视频稳定的视频编码方法与流程

文档序号:11524687阅读:200来源:国知局
一种结合视频稳定的视频编码方法与流程

本发明涉及一种视频编码方法,特别涉及一种结合视频稳定的视频编码方法,属于视频处理领域。



背景技术:

视频编码技术是一种视频压缩技术,主要通过去除视频中存在的空间冗余和时间冗余,达到压缩视频的目的。现在较为通用的编解码标准有国际电联的h.264标准、h.265标准、动态图像专家组的mpeg标准和微软的wmv标准等等。其中h.264的使用最为普遍。在h.264视频编码标准中,视频的每一帧都被划分为特定(以像素为单位)大小(16x16、16x8、8x16,8x8,8x4,4x8和4x4)的宏块。每个宏块通过帧内或者帧间的方式进行编码。无论是帧内编码还是帧间编码都需要有之前编码过的视频帧作为参考帧。对于帧内编码,作为参考的宏块是当前帧中已经编码的宏块通过重建得到的宏块。而对于帧间的编码,则需要一到两帧已经编码过的重建帧作为参考帧,由运动矢量指向参考帧中与当前要编码的宏块匹配代价最小(一般为内容最为接近)的宏块。将帧间编码或者帧内编码方式得到的预测值与当前宏块做差可以得到当前宏块对应的残差。将这个残差进行量化和熵编码操作即可得到最终的视频比特流,传输到网络抽象层(networkabstractionlayer,nal)进行网络传输或者存储。

在整个编码过程中,帧间编码是最为重要的部分,帧间编码的过程主要分为运动估计和运动补偿两个部分。运动估计过程的目的是在参考帧中搜索与当前要编码的宏块匹配代价最小的宏块(参考宏块),一般使用运动矢量来指向参考宏块,整个运动估计过程就是搜索这个运动矢量的过程。一般首先设置一个初始的运动矢量(由本帧中相邻的已编码宏块进行中值预测得到),根据该初始运动矢量得到搜索起点,然后使用三步法、六边形搜索算法和非对称十字多六边形网格搜索算法等进行搜索,每搜索一个点就计算以这个点为中心的宏块与当前宏块的匹配代价,最终得到使代价最小的运动矢量。为了得到最小的匹配代价,h.264编码标准中支持树形搜索策略,即首先对大小为16x16的宏块进行运动估计过程,然后将其分割为两个16x8的宏块同样按上述过程进行运动估计,每个宏块都要进行搜索得到一个运动矢量。如果两个16x8宏块运动估计后的匹配代价之和小于16x16宏块的匹配代价,那么就采用16x8的宏块分割策略,同样,可以将16x16大小的宏块分割为8x16或8x8大小的宏块,其中8x8大小的宏块又可以分割为8x4、4x8和4x4大小的宏块。运动补偿过程则是将参考宏块与当前宏块的内容(像素点)做差,以便于下一步的量化等过程。

手机、无人机、行车记录仪等移动终端的摄像机在拍摄视频时,容易受到外部不稳定运动环境的干扰,拍摄的视频往往存在画面抖动。这种抖动一方面降低了视频的观感体验,另一方面在对视频进行压缩编码时,增大了位置临近的视频帧之间的内容差异,使得在运动估计过程中,搜索到最佳匹配宏块的过程变得更加困难,从而增加了视频编码计算的复杂度和编码码率。而移动终端摄像机在使用时受电池、网络等因素影响,需要尽可能降低编码计算量以节省电力,并减少码率以节省存储成本和传输带宽。

对于抖动视频的编码问题,国内外的学者已经做了大量的基础研究。对抖动视频的编码常用的处理方法分为两种:使用硬件辅助编码的方法和结合视频稳定的方法。硬件辅助编码的方案利用低耗能传感器(加速度计和磁力计等)记录的信息计算得出每一帧对应的全局运动矢量,通过将这些运动矢量与块预测算法相结合,缩小运动估计时的搜索窗口,进而减少了整个运动估计过程的计算量,同时视频质量也得到了提高。但是此方案的实现极大地依赖于所使用的传感器,对于未配备传感器的设备则无法进行编码。结合视频稳定的视频编码方案以复用视频稳定中产生的运动矢量为主要手段,这种方案主要使用基于块匹配的视频稳定技术,通过将视频稳定过程中产生的运动矢量复用于视频编码中的运动估计过程中,达到对抖动视频进行编码的目的,同时降低了视频的码率。这类方法虽然将视频编码与视频稳像结合起来,但是现有方法都是通过对本帧中相邻的已编码宏块进行中值预测得到宏块对应的运动矢量,没有复用视频稳定过程中产生的变换矩阵信息,使得产生的运动矢量的准确度较低,降低了视频编码中运动估计过程的效率;而且为了保证每一个宏块都至少有一个相对应的运动矢量,因此对每个宏块都需要至少进行一次运动搜索的过程。在这种情况下,完整的联合系统的总计算量相对于正常的编码器并没有减少。事实上,由于视频稳像和视频编码中的最佳运动矢量不一定相同,因此联合系统的总计算量会有轻微的上升。



技术实现要素:

本发明的目的是针对移动环境下带有抖动或者晃动的视频数据,提出一种结合视频稳定信息的视频编码方法,在提高视频质量的同时降低编码的计算复杂度和码率。

本发明的具体实现步骤如下:

一种结合视频稳定的视频编码方法,该方法包括以下步骤:

步骤一、提取视频稳定信息

使用视频稳定方法对原始的抖动视频进行稳定处理,得到一系列稳定的视频帧、特征点轨迹、每个原始帧运动路径和每个原始帧与稳定帧对应的变换矩阵;将第t帧的原始帧运动路径定义为

pt=f0f1…ft,f0=i

其中t代表视频帧的索引数,t≥1时ft代表第t-1帧和第t帧这两个相邻原始视频帧之间的变换矩阵,f0是单位矩阵;

将原始帧与稳定帧之间的变换矩阵定义为其中t代表视频帧的索引数;

步骤二、计算稳定视频帧之间的变换矩阵

根据步骤一提取的变换矩阵计算得出任意两个稳定视频帧之间的变换矩阵,表示如下:

其中t和t-m代表视频帧索引数,tt·(t-m)代表第t帧原始帧与第t-m帧原始帧之间的变换矩阵,计算方法如下:

步骤三、计算每一稳定帧中每个宏块对应的运动矢量

根据步骤一得出的特征点轨迹,本步骤分为两种情况:第一种情况是特征点落在要求取运动矢量的宏块即当前宏块中,此时需要将参考帧上对应的特征点与当前宏块上的特征点做差来得到运动矢量,用mv(mvx,mvy)表示,计算方法如下:

其中t是当前宏块中特征点的索引数,(curxt,curyt)和(refxt,refyt)分别表示当前宏块上的特征点坐标和参考帧上对应特征点坐标,n表示当前宏块中特征点的数目;

第二种情况是当前宏块中没有特征点,此时需要使用步骤二求取的变换矩阵计算运动矢量,计算方法如下:

其中(xcurr,ycurr)和(xref,yref)分别代表当前宏块的几何中心坐标和在参考帧上的对应坐标;求解(xref,yref)的方法如下:

其中r和c分别代表当前帧和参考帧的索引数;

步骤四、将步骤三得到的运动矢量作为初始运动矢量,将初始运动矢量与当前宏块中心的坐标相加作为运动估计过程中搜索的起点,对每个宏块进行搜索,得到每个宏块的最佳运动矢量;

步骤五、按照树形搜索策略,将每个宏块分割为尺寸更小的子宏块,针对每个子宏块重复执行步骤三和步骤四,得到每个子宏块的最佳运动矢量;

优选的,初始宏块大小设置为16x16,并只计算16x8、8x16和8x8三种类型的子宏块,以提高编码速度。

优选的,将步骤三得到的最佳运动矢量与初始运动矢量之间的差值记为dmv,在子宏块搜索过程中,直接将搜索起点与dmv相加得到最终的运动矢量。

步骤六、比较不同宏块分割方式的匹配代价,选取匹配代价最小的宏块分割方式,针对这种宏块分割方式中每个宏块所对应的最佳运动矢量,进行运动补偿、量化和熵编码,得到最终的稳定视频压缩码流。

有益效果:

(1)相比于使用传感器进行硬件辅助的抖动视频编码方案,本发明在编码的计算量和视频质量方面可以达到与之相近的优化程度,而且对于视频的稳定处理更能增强观看者的主观体验,同时由于本发明不涉及硬件部分,因此适用性更加广泛。

(2)已经存在的对抖动视频的编码方案大部分是通过都是通过对本帧中相邻的已编码宏块进行中值预测得到宏块对应的运动矢量。本发明则通过复用视频稳定过程中产生的变换矩阵信息得到运动矢量,这里的变换矩阵可以准确地预测视频帧的运动路径,相比于现有的不使用矩阵信息计算运动矢量的方案,本发明可以通过较少的计算量得到更加准确的运动矢量;而且本发明根据统计规律,在计算子宏块运动矢量时不再执行搜索,直接复用初始宏块的dmv值,在保证视频编码质量的同时极大地提高了编码速度。

附图说明

图1是本发明根据视频稳定信息进行视频编码的流程图。

图2是采用本发明的编码系统的整体结构图。

具体实施方式

下面结合附图对本发明方法的实施方式做详细说明。

本实施方式具体实现了一种结合高效视频稳定信息的视频编码方法,附图1为本视频编码方法的流程图,附图2为本实施方式对应的编码系统的整体结构图。本实施方式具体实现步骤如下:

步骤一、提取稳定信息

使用视频稳定方法对原始的抖动视频进行稳定处理。可以使用现有技术中多种方法对原始的抖动视频进行稳定处理,如低通滤波稳像方法、传感器辅助稳像方法等,通过这些稳定处理方法可以得到一系列稳定的视频帧、特征点轨迹、每个原始帧运动路径和每个原始帧与稳定帧对应的变换矩阵。在本实施方式中我们选用基于测地优化的视频稳定方案(zhangl,chenxq,kongxy,etal.geodesicvideostabilizationintransformationspace.[j].ieeetransactionsonimageprocessingapublicationoftheieeesignalprocessingsociety,2017.),即为附图2中用虚线框表示的视频稳像部分。将第t帧的原始帧运动路径定义为

pt=f0f1…ft,f0=i

其中t代表视频帧的索引数,t≥1时ft代表第t-1帧和第t帧这两个相邻原始视频帧之间的变换矩阵,f0是单位矩阵;

将原始帧与稳定帧之间的变换矩阵定义为其中t代表视频帧的索引数;

稳定帧的存储集合与变换矩阵的数据流方向见附图2。

步骤二、计算相邻稳定帧之间的变换矩阵

根据步骤一提取的变换矩阵计算得出任意两个稳定视频帧之间的变换矩阵(见附图2虚线框中的“变换矩阵”)。变换矩阵表示如下:

其中t和t-m代表视频帧索引数,tt·(t-m)代表第t帧原始帧与第t-m帧原始帧之间的变换矩阵,求解方程如下:

由于在视频稳定方案中,视频被分为若干段进行处理,因此这里的矩阵都是针对同属一个段的视频帧而言的。为方便处理,暂时将段长定义为30,即一段包含30个视频帧。

步骤三、计算宏块对应的运动矢量

根据步骤一得出的特征点轨迹,本步骤分为两种情况。第一种情况是特征点落在要求取运动矢量的宏块(当前宏块)中,此时需要将参考帧宏块上对应的特征点与当前宏块上的特征点做差,求解方程如下:

其中t是当前宏块中特征点的索引数,(curxt,curyt)和(refxt,refyt)分别代表当前宏块上的特征点坐标和参考帧上对应特征点的坐标。

特征点轨迹贯穿一整段视频,所以上述两点坐标可以直接由步骤一记录的轨迹得出。

第二种情况是当前宏块中没有特征点,此时需要使用步骤二求取的变换矩阵计算运动矢量,求解方程如下:

(xcurr,ycurr)和(xref,yref)分别代表当前宏块的几何中心坐标和在参考帧上的对应坐标。求解(xref,yref)的方程如下:

其中r和c分别代表当前帧和参考帧的索引数。

可以使用宏块上的任意一点代表整个宏块,这里我们选用几何中心。变换矩阵已经在步骤二中计算得出。

步骤四、使用运动矢量优化运动估计

将步骤三得到的运动矢量作为初始运动矢量,得到运动估计过程中搜索的起点,在16×16大小宏块的搜索中,按照正常顺序搜索,搜索完成后,计算最佳运动矢量与初始运动矢量之间的差值,将此差值记为dmv。

步骤五、将宏块分割为16×8、8×16、8x8大小的子宏块,对每个子宏块重复进行步骤三和步骤四的运动矢量搜索过程,得到每个子宏块对应的dmv值。在本发明中,由于要适用实时无线传输等环境,因此只采用16x16、16x8、8x16和8x8四种类型的宏块以提高编码速度。

对不同宏块分割方式获得的dmv值进行统计,发现16×16大小宏块的dmv与子宏块的dmv相同的频率在80%以上,因此本发明提出了以下优化策略:

在子宏块(16×8、8×16和8×8等大小)搜索过程中,同样将根据步骤三得到的运动矢量作为搜索起点,然后直接将其与dmv相加得到最终的运动矢量。该优选方案在保证编码质量的同时,可以大幅提高编码速度。

步骤五、视频编码的剩余过程

将步骤四中几种分块方式所得到的匹配代价进行比较,选取代价最小的一种分块方式作为最佳的分块方式,并且将这种分块方式中的宏块所对应的运动矢量进行如附图2所示的运动补偿、量化和熵编码过程,最终写入编码好的视频比特流中。

经过对数百个视频的实验验证,本发明相比于原始的视频编码器,在视频编码质量、码率与计算复杂度三个方面都有着明显的优化。首先,在视频质量上,以峰值信噪比(psnr)作为评价标准,本发明相对于原始编码器平均有0.21db的提升,其中最高可达2.1db。其次,在码率方面,本发明编码视频所输出的比特流的码率比原始编码器减少了约19.8%。在计算量方面,由于运动估计的计算量占视频编码过程总计算量的70-80%,因此使用运动估计部分的计算量作为评测标准,实验显示,本发明在运动估计过程中的计算量比原始编码器减少了约26.73%。

为了说明本发明的内容及实施方法,本说明书给出了一个具体实施例。在实施例中引入细节的目的不是限制权利要求书的范围,而是帮助理解本发明所述方法。本领域的技术人员应理解:在不脱离本发明及其所附权利要求的精神和范围内,对最佳实施例步骤的各种修改、变化或替换都是可能的。因此,本发明不应局限于最佳实施例及附图所公开的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1