一种历史候选列表更新方法与装置与流程

文档序号:20081324发布日期:2020-03-10 10:42阅读:236来源:国知局
一种历史候选列表更新方法与装置与流程

本申请涉及视频编解码技术领域,尤其涉及一种历史候选列表更新方法、装置以及相应的编码器和解码器



背景技术:

随着信息技术的发展,高清晰度电视,网络会议,iptv,3d电视等视频业务迅速发展,视频信号以其直观性和高效性等优势成为人们日常生活中获取信息最主要的方式。由于视频信号包含的数据量大,需要占用大量的传输带宽和存储空间。为了有效的传输和存储视频信号,需要对视频信号进行压缩编码,视频压缩技术越来越成为视频应用领域不可或缺的关键技术。



技术实现要素:

本申请实施例公开了一种历史候选列表更新方法,获取当前块的运动信息;判断当前块的深度信息、位置或当前块所在片中未用于更新历史候选列表的所有解码块的面积总和是否满足历史候选列表的更新条件;如果满足,则根据当前块的运动信息对历史候选列表进行更新。相比于现有技术,减少了历史候选列表的更新次数,提高了编码效率。

第一方面,本发明实施例提供一种历史候选列表更新方法,该方法包括:获取当前块的运动信息;获取当前块的深度信息;获取历史候选列表;若所述当前块的深度信息小于或等于预设阈值,则根据所述当前块的运动信息对所述历史候选列表进行更新。

第二方面,本发明实施例提供一种历史候选列表更新方法,该方法包括:获取当前块的运动信息;获取当前块的位置;获取历史候选列表;若所述当前块的预设位置位于预设像素的整数倍,则根据所述当前块的运动信息对所述历史候选列表进行更新;其中,所述当前块的预设位置包括当前块的左上顶点、上边界中点、中心点、或左边界中心点。

第三方面,本发明实施例提供一种历史候选列表更新方法,该方法包括:获取当前块的运动信息;获取当前块所在片中自上一次更新历史候选列表后未用于更新历史候选列表的所有解码块的面积总和;获取历史候选列表;若所述面积总和大于等于预设阈值,则根据所述当前块的运动信息对所述历史候选列表进行更新。

第四方面,本发明实施例提供一种历史候选列表更新装置,该装置包括:第一获取模块,用于获取当前块的运动信息;第二获取模块,用于获取当前块的深度信息;第三获取模块,用于获取历史候选列表;更新模块,用于若所述当前块的深度信息小于或等于预设阈值,则根据所述当前块的运动信息对所述历史候选列表进行更新。

第五方面,本发明实施例提供一种历史候选列表更新装置,该装置包括:第一获取模块,用于获取当前块的运动信息;第二获取模块,用于获取当前块的位置;第三获取模块,用于获取历史候选列表;更新模块,用于若所述当前块的预设位置位于预设像素的整数倍,则根据所述当前块的运动信息对所述历史候选列表进行更新;其中,所述当前块的预设位置包括当前块的左上顶点、上边界中点、中心点、或左边界中心点。

第六方面,本发明实施例提供一种历史候选列表更新装置,该装置包括:第一获取模块,用于获取当前块的运动信息;第二获取模块,用于获取当前块所在片中自上一次更新历史候选列表后未用于更新历史候选列表的所有解码块的面积总和;第三获取模块,用于获取历史候选列表;更新模块,用于若所述面积总和大于等于预设阈值,则根据所述当前块的运动信息对所述历史候选列表进行更新。

第七方面,本发明实施例提供一种历史候选列表更新编码器,用于实现上述任一方面的方法和装置。

第八方面,本发明实施例提供一种历史候选列表更新解码器,用于实现上述任一方面的方法和装置。

附图说明

图1是一种视频编码流程示意图;

图2是一种帧间预测示意图;

图3是一种视频解码流程示意图;

图4是一种运动信息候选位置示意图;

图5是一种构建融合运动信息候选列表的方法;

图6a是现有技术中一种更新历史候选列表的方法;

图6b是一种视频系统;

图7是本发明中一种更新历史候选列表方法示意图;

图8是本发明中一种更新历史候选列表方法示意图;

图9是本发明中一种更新历史候选列表方法示意图;

图10是本发明中一种更新历史列表装置示意图。

具体实施方式

下面结合本申请实施例中的附图对本申请实施例进行描述。

对于编码过程,如图1所示,该过程主要包括帧内预测(intraprediction)、帧间预测(interprediction)、变换(transform)、量化(quantization)、熵编码(entropyencode)、环内滤波(in-loopfiltering)(主要为去块滤波,de-blockingfiltering)等环节。将图像划分为编码块之后进行帧内预测或者帧间预测,并且在得到残差之后进行变换量化,最终进行熵编码并输出码流。此处编码块为由像素点组成的m*n大小的阵列(m可以等于n,也可以不等于n),并且已知各个像素点位置的像素值。

帧内预测是指利用当前图像内已重建区域内像素点的像素值对当前编码块内像素点的像素值进行预测。

帧间预测是在已重建的图像中,为当前图像中的当前编码块寻找匹配的参考块,将参考块中的像素点的像素值作为当前编码块中像素点的像素值的预测信息或者预测值(以下不再区分信息和值),此过程称为运动估计(motionestimation,me)(如图2所示),并传输当前编码块的运动信息。

需要说明的是,当前编码块的运动信息包括了预测方向的指示信息(通常为前向预测、后向预测或者双向预测),一个或两个指向参考块的运动矢量(motionvector,mv),以及参考块所在图像的指示信息(通常记为参考帧索引,referenceindex)。

前向预测是指当前编码块从前向参考图像集合中选择一个参考图像获取参考块。后向预测是指当前编码块从后向参考图像集合中选择一个参考图像获取参考块。双向预测是指从前向和后向参考图像集合中各选择一个参考图像获取参考块。当使用双向预测方法时,当前编码块会存在两个参考块,每个参考块各自需要运动矢量和参考帧索引进行指示,然后根据两个参考块内像素点的像素值确定当前块内像素点像素值的预测值。

运动估计过程需要为当前编码块在参考图像中尝试多个参考块,最终使用哪一个或者哪几个参考块用作预测则使用率失真优化(rate-distortionoptimization,rdo)或者其他方法确定。

利用帧内预测或者帧间预测得到预测信息之后,当前编码块内像素点的像素值减去对应的预测信息便得到残差信息,然后利用离散余弦变换(discretecosinetransformation,dct)等方法对残差信息进行变换,再使用量化熵编码得到码流。预测信号加上重建残差信号之后需进一步进行滤波操作,进而得到重建信号,并将其作为后续编码的参考信号。

解码则相当于编码的逆过程。例如,如图3所示,首先利用熵解码反量化反变换得到残差信息,解码码流确定当前编码块使用的是帧内预测还是帧间预测。如果是帧内预测,则利用周围已重建区域内像素点的像素值按照所使用的帧内预测方法构建预测信息。如果是帧间预测,则需要解析出运动信息,并使用所解析出的运动信息在已重建的图像中确定参考块,并将块内像素点的像素值作为预测信息,此过程称为运动补偿(motioncompensation,mc)。使用预测信息加上残差信息经过滤波操作便可以得到重建信息。

帧间预测是基于运动补偿(motioncompensation)的预测技术,如图2所示。在帧间预测编码中,由于图像邻近帧中的相同物体存在一定时域相关性,可将图像序列的每一帧划分成许多互不重叠的块,并认为块内所有像素点的运动都相同。主要处理为确定当前块的运动信息,根据运动信息从参考帧中获取参考图像块,产生当前块的预测图像。运动信息(motioninformation)包含帧间预测方向、参考帧索引(referenceindex,ref_idx)、运动矢量(motionvector,mv)等。

帧间预测通过帧间预测方向指示当前块使用前向预测、后向预测或双向预测其中的何种预测方向,通过参考帧索引(referenceindex)指明参考帧(referenceframe),通过运动矢量指示当前块(currentblock)在参考帧中的参考块(referenceblock)相对当前帧中当前块的位置偏移。运动矢量指示了参考帧中用于预测当前块的参考图像块相对于当前块的位移矢量,因而一个运动矢量对应一个参考图像块。

在编码时,h.265/hevc、h.266/vvc等视频编码标准把一帧图像分割成互不重叠的编码树单元(codingtreeunit,ctu),一个ctu被划分为一个或多个编码单元(codingunit,cu)。一个cu包含编码信息,包括预测模式、变换系数等信息。解码端:按照这些编码信息对cu进行相应的预测、反量化、反变换等解码处理,产生这个cu对应的重建图像。

码流中,运动信息占有大量的数据量。为了降低所需数据量,通常采用预测的方式传送运动信息。总体可以分为intermvp(例如但不限于h.265中的amvp)和merge两种模式。

intermvp模式:传送的运动信息包含:帧间预测方向(前向、后向或双向)、参考帧索引、运动矢量预测值索引、运动矢量残差值。对运动信息中的运动矢量信息通常采用传送实际运动矢量与运动矢量预测值(motionvectorpredictor,mvp)的差值的方式,编码端将mvp与实际运动矢量之间的运动矢量残差值(motionvectordifference,mvd)传递到解码端。其中运动矢量预测可能包含多个预测值,一般在编码端和解码端使用相同的方式构建运动矢量预测候选列表(mvpcandidatelist),将运动矢量预测值索引(motionvectorpredictorindex,mvpindex)传递到解码端;根据运动矢量预测值索引以及运动矢量预测候选列表确定出mvp;再根据mvp和mvd进一步确定出mv。

merge/skip模式:在编码端和解码端使用相同的方式构建融合运动信息候选列表(mergecandidatelist),将索引传递到解码端,码流中传送融合索引(mergeindex)。运动信息候选列表(candidatelist)中的运动信息通常从其空域相邻块或参考帧中的时域块中获得,其中由当前块相邻的图像块的运动信息得到的候选运动信息称为空间候选(spatialcandidate),由当前块在参考图像中得到的对应位置图像块的运动信息称为时间候选(temporalcandidate)。hevc以及vtm(versatilevideocodingtestmodel)的当前块空域候选和时域候选如图4所示,其中空间候选包含a0、a1、b0、b1、和b2的运动信息,时域候选包括t0和t1(t0和t1都是参考帧中的)的运动信息。

jvet-k0104提案中提出了在融合运动信息候选列表中加入历史候选(historycandidate)的方法,增加了merge/skip模式的融合运动信息候选的数量,提高了预测效率。提案中还提出了在运动矢量预测候选列表(含有运动矢量)中加入历史候选(historycandidate)的方法,增加了intermvp模式的运动矢量预测候选的数量,提高了预测效率。历史候选列表是由历史候选组成,其中历史候选为先前编码/解码块(当前片slice中当前块之前已经编码或解码的编码块)的运动信息。可以理解为是一个一直存在的列表,编码或解码完一个图像块,就将该图像块的运动信息添加进去,通常历史候选列表中最多可以包含n个运动信息,n为预设值。jvet-k0104提案中,介绍了历史候选列表(historycandidatelist)的使用方法以及历史候选列表的构建方法。

加入历史候选的融合运动信息候选列表的构建方法,也可以理解为历史候选列表的使用方法,可以如下:

步骤11:将当前块的空间候选和时域候选按照预定规则(例如可以按照hevc或vtm的添加顺序和查重策略)创建当前块的融合运动信息候选列表list(mi),其方法与hevc中的方法相同。如图4所示,空间候选可以包含a0、a1、b0、b1、和b2,时域候选可以包含t0和t1。在具体实现过程中,经过查重,空间候选和时间候选最终放进融合运动信息候选列表的可以为预设数目个候选,如全部或部分。例如,融合运动信息候选列表中先放空域候选,再放时域候选。在vtm中,时域候选也可以包括自适应时域运动矢量预测(atmvp)技术提供的候选。

步骤12:将历史候选列表list(h)中的历史候选按照预定顺序加入到融合运动信息候选列表中,例如jvet-k0104按照从历史候选列表尾部到头部的顺序检查预设数目的历史候选,如图5所示,从历史候选列表尾部的历史候选开始,检查其与步骤11得到的融合运动信息候选列表中的融合运动信息候选是否相同,如果不同则加入到融合运动信息候选列表中,如预设位置,预设位置可以包含所有空域候选之后,或者放在时域候选之后。如果相同则检查历史候选列表中下一个历史候选,以此类推,直到融合运动信息候选列表中的mv的数量达到一个预设数目,不再进行历史候选的检查和添加了。

图5:历史候选加入融合运动信息候选列表的示意图

步骤13:作为可选的,若已经遍历完历史候选列表中的所有历史候选,融合运动信息候选列表中的mv的数量还没有达到一个预设数目,则还可以加入其它类型的融合运动信息候选,如双向预测候选(bi-predictivecandidate)和零运动矢量候选(zeromotionvectorcandidate)。

加入历史候选的运动矢量预测候选列表的构建方式,也可以理解为历史候选列表的使用方法,可以如下:

步骤21:将当前块的空间候选和时域候选加入当前块的运动矢量预测候选列表list(mvp),其方法与hevc中的方法相同。如图4所示,空间候选包含a0、a1、b0、b1、和b2,时域候选包括t0和t1。

步骤22:将历史候选列表list(h)(或者用hlist来表示)中的历史候选按照加入到运动矢量预测候选列表中,按照从历史候选列表尾部到头部的顺序检查预设数目的历史候选。从历史候选列表尾部的历史候选开始,检查其与步骤21得到的运动矢量预测候选列表中运动矢量预测候选的参考帧索引与历史候选中的运动矢量的参考帧索引是否相同,如果与运动矢量预测候选列表的参考帧索引使用相同参考帧索引的运动矢量则会被加入到运动矢量预测候选列表中,如果不相同则检查历史候选列表中下一个历史候选,以此类推,直到运动矢量预测候选列表中的mv的数量达到一个预设数目,不再进行历史候选的检查和添加了。

步骤23:加入其它类型的运动矢量候选,如零运动矢量候选(zeromotionvectorcandidate)。

jvet-k0104提案中,历史候选列表利用当前帧中已编码块/已解码块的运动信息构建,采用先进先出的方式对于历史候选列表进行访问。编码/解码端中总体的历史候选列表构建方式如下:

步骤31:在片(slice)解码开始的时候初始化历史候选列表,将其清空。可以理解为,对于每一个新的片,开始解码时都要把历史候选列表初始化清空。

步骤32:解码当前cu,如果当前cu或当前块为merge/skip帧间预测模式,可以对应有融合运动信息候选列表,如果当前cu或当前块为inter帧间预测模式,可以对应有运动矢量预测候选列表;同时将历史候选列表中的历史候选加入到融合运动信息候选列表或运动矢量预测候选列表中。

若当前块为merge/skip模式,则根据码流中携带的融合索引和融合运动信息候选列表确定当前块的运动信息。

若当前块为intermvp模式,则根据码流中传送的帧间预测方向、参考帧索引、运动矢量预测值索引、运动矢量预测候选列表、运动矢量残差值确定当前块的运动信息。

步骤33:在解码完当前cu或当前块之后,将当前块的运动信息作为新的历史候选,加入到历史候选列表中,进而更新了历史候选列表,如图6a所示。首先,从历史候选列表头部开始,将当前块的运动信息与历史候选列表中历史候选进行比较。如果某个历史候选(例如图6a中的mv2)与当前块的运动信息相同,则将历史列表中的这个历史候选mv2移除,并将当前块的运动信息加进历史候选列表中的尾部;虽然mv2已经被移除,但是相同的运动信息在历史候选列表中的排序位置发生了改变。如果某个历史候选(例如图6a中的mv2)与当前块的运动信息不同,则检查历史候选列表中历史候选的个数,如该列表中历史候选个数超过某个预设值,将该历史候选列表中位于头部的历史候选移除,并将当前块的运动信息加入到历史候选列表的尾部。

对一个slice中的每一个块,执行步骤32-步骤33,直到slice中的所有的块全部遍历完成;对下一个slice,再去执行步骤31-33。

在一种可能的实现过程中,以一个slice编码或解码开始对历史候选列表的构建和使用进行举例,假设更新的过程中没有相同的运动信息:

对于block1,步骤31使用:hlist(null);……;步骤34构建:hlist(v1)

对于block2,步骤31使用:hlist(v1);……;步骤34构建:hlist(v1,v2)

对于block3,步骤31使用:hlist(v1,v2);……;步骤34构建:hlist(v1,v2,v3)……;

对于block7,步骤31使用:hlist(v1,v2,……,v6);……;步骤34构建:hlist(v1,v2,……,v7);

对于block8,步骤31使用:hlist(v1,v2,……,v7);……;步骤34构建:hlist(v1,v2,……,v8);

假设历史候选列表中最多能够容纳的历史候选为8个,则“去头填尾”,如,

对于block9,步骤31使用:hlist(v1,v2,……,v8);……;步骤34构建:hlist(v2,v3,……,v9);

……

依次类推。此外,如果构建列表时,发现重复的历史候选,则将原历史候选列表中的历史候选删除,并将当前块的历史候选加进历史候选列表中的尾部。

然而针对上述方法,对每一个编码块在编解码完成后,都要进行历史候选列表格更新,尤其历史候选列表较长时,其构造和更新的时间消耗会较长。而且该方法在使用历史候选列表(假设长度为k,即最多包含k个历史候选)构造融合运动信息候选列表(假设长度为l,即最多包含l个融合运动信息候选)或运动矢量预测候选列表(假设长度为j,即最多包含l个运动矢量预测候选)时,后续的操作分别需要k*j*l次重复项查找,造成程序执行时间的大幅增长。

本发明提出一种改进的历史候选列表更新和使用的方法,在特定条件下才进行历史候选列表格更新。也使得在使用历史候选列表构造融合运动信息候选列表或运动矢量预测候选列表时,能够跳过某些历史候选。减少复杂度。

本发明的系统框架如图6b所示。本发明在系统框架中主要位于视频编码和视频解码中。现有视频传输系统通常由采集、编码、发送、接收、解码、和显示这些部分组成。采集模块包含摄像头或摄像头组以及前处理,将光信号转化为数字化的视频序列。接着视频序列经编码器编码,转化为码流。然后码流由发送模块经网络发送至接收模块,经接收模块转化为码流后经解码器解码重建为视频序列。最后重建视频序列经渲染等后处理送至显示设备显示。

现有视频传输系统通常由采集、编码、发送、接收、解码、和显示这些部分组成。采集模块包含摄像头或摄像头组以及前处理,将光信号转化为数字化的视频序列。接着视频序列经编码器编码,转化为码流。然后码流由发送模块经网络发送至接收模块,经接收模块转化为码流后经解码器解码重建为视频序列。最后重建视频序列经渲染等后处理送至显示设备显示。本发明在系统框架中主要位于视频编码和视频解码中。

本发明的应用场景如图1和图3的基于混合编码框架的视频编码和解码系统所示。对于编码过程,如图1所示,主要包括帧内预测(intraprediction)、帧间预测(interprediction)、变换(transform)、量化(quantization)、熵编码(entropyencode)、环路内滤波(loopfilter)等环节,分别完成从当前帧临近像素得到预测块、计算mv信息并从参考帧取得预测块、将残差从像素域变换至变换域、对变换域系数进行压缩、对于编码信息进行压缩、对于重建图像进行后处理等作用。对于解码系统,如图3所示,相当于编码的逆过程。本发明在视频编码或解码系统中主要应用于帧间预测,它应用于帧间预测模式的运动矢量预测中,在编码端和解码端更新和使用历史候选列表的处理是相同的。下面实施例以解码端为例展开描述,对于编码端,本领域技术人员通过解码端的方法和装置描述理应能够复现出来相关的编码方法,本申请中对编码端不予以赘述。

本发明涉及一种历史候选列表更新的方法,以及使用更新后历史候选列表中的历史候选对图像块进行解码的处理。历史候选列表的长度k为预设值,即构造完成后历史候选列表中包含的历史候选运动信息候选个数为k,k为大于0的正整数。

历史候选列表的初始化过程可以为现有技术,该过程可采用与jvet-k0104提案相同的方法进行,即在片slice开始解码的时候,将历史候选列表清空,也可采用其他历史候选列表的初始化方法,本发明不作限定。

对图像中的至少一个使用帧间预测的图像块进行解码处理,得到该图像块的重建图像。上述解码处理包括步骤41至步骤43,正在执行解码处理的图像块称为当前块。

步骤41:解析当前块的帧间预测模式,若当前块为merge/skip模式,则生成融合运动信息候选列表。若当前cu或当前块为intermvp模式,则生成运动矢量预测候选列表。根据预设规则将历史候选列表中的历史候选加入到融合运动信息候选列表或运动矢量预测候选列表。

在具体实现过程中,若当前块的帧间预测模式为merge/skip模式,生成融合运动信息候选列表的方法可以采用上述步骤11-步骤13。

例如,该过程可采用hevc或者vtm中的方法进行,也可采用其他生成融合运动信息候选列表的方法。若将历史候选列表中的历史候选按照加入到融合运动信息候选列表中,则可以按照jvet-k0104提案中的方法,从历史候选列表尾部到头部的顺序检查并添加预设数目的历史候选。从历史候选列表尾部的历史候选开始,检查其与步骤11得到的融合运动信息候选列表中融合运动信息候选是否相同,如果不同则加入到融合运动信息候选列表中,如果相同则检查历史候选列表中下一个历史候选。需要说明的是,在历史候选加入到融合运动信息候选列表之后,还可以加入其它类型的融合候选,如双向预测融合候选(bi-predictivemergecandidate)或零运动矢量融合候选(zeromotionvectormergecandidate)。

在具体实现过程中,若当前块的帧间预测模式为intermvp模式,生成运动矢量预测候选列表的方法可以采用步骤21-步骤23。

例如,可采用hevc或者vtm中的方法进行,也可采用其他生成运动矢量预测候选列表的方法,本发明不作限定。若将历史候选列表中的历史候选加入到运动矢量预测候选列表,可以按照jvet-k0104提案中的方法。从历史候选列表尾部到头部的顺序检查并添加预设数目的历史候选,只有与mvp模式目标参考帧索引使用相同参考帧索引的历史候选才会被加入到运动矢量预测候选列表中。历史候选被加入到运动矢量预测候选列表中时域运动矢量预测候选后,本发明中不予以限定。

在具体实现过程中,如拉通多个解码块来看,一些解码块可以采用步骤11-步骤13,另一些解码块可以采用上述步骤21-步骤23,还可以有一些解码块既不构建运动矢量候选列表,也不构建融合运动信息候选列表,可以根据预设规则以及系统性能进行配置。

步骤42:获取当前块的运动信息。

更具体的,对于解码端,若当前块为merge/skip模式,则根据码流中携带的融合索引和融合运动信息候选列表确定当前块的运动信息。

若当前块为intermvp模式,则根据码流中传送的帧间预测方向、参考帧索引、运动矢量预测值索引、运动矢量预测候选列表、运动矢量残差值确定当前块运动信息。

步骤43:通过判定一些条件,决定是否根据当前块的运动信息对历史候选列表进行更新。可以实现的方式至少包括步骤43a、步骤43b、步骤43c三种并列的实现方式(请分别参照图7、8、9)。

步骤43a:可以包括步骤43a1、43a2和步骤43a3三个步骤。

43a1:从解码器得到当前块的深度值(depth);

43a2:获取历史候选列表;

43a3:如果深度值大于某个预设值h,则不以当前块的运动信息对历史候选列表进行更新,该预设值h为大于0的正整数,且小于编码器或解码器允许的最大深度值。如果深度值小于等于某个预设值,则可以按照jvet-k0104提案中的方法,也可采用其他方法根据当前块的运动信息对历史候选列表进行更新。jvet-k0104提案中,从历史候选列表头部开始,将当前块的运动信息与历史候选列表中的历史候选进行比较;如有某个历史候选与当前块运动信息相同,将该历史候选从历史候选列表中移除。然后,检查历史候选列表大小,如该列表大小超过预设的大小,则将该列表中位于头部的历史候选移除。最后,将当前块的运动信息加入到历史候选列表中。

发明方案相比于现有技术,在cu级别根据当前块的深度值对于历史候选列表进行选择性更新。

步骤43b:可以包括步骤43b1、43b2和步骤43b3三个步骤。

43b1:根据解码器得到的当前块中预设位置的点的坐标(x,y);也可以等同获取块的位置。

43b2:获取历史候选列表;

43b3:如果x不是某个预设值i的整数倍,或者y不是某个预设值p的整数倍,则不以当前块的运动信息对历史候选列表进行更新,该预设值i和p为大于1的正整数。预设位置可以是当前块地左上角顶点(相对坐标偏移为(0,0)),也可以是当前块的中心点(相对坐标偏移为(当前块宽度除以二,当前块高度除以二))。如果x是某个预设值i的整数倍,且y是某个预设值p的整数倍,可以按照jvet-k0104提案中的方法,也可采用其他方法根据当前块的运动信息对历史候选列表进行更新。jvet-k0104提案中,从历史候选列表头部开始,将当前块的运动信息与历史候选列表中的历史候选进行比较;如有某个历史候选与当前块运动信息相同,将该历史候选从历史候选列表中移除。然后,检查历史候选列表大小,如该列表大小超过预设的大小,则将该列表中位于头部的历史候选移除。最后,将当前块的运动信息加入到历史候选列表中。

发明方案相比于现有技术,在cu级别根据当前块中预设位置的点的坐标对于历史候选列表进行选择性更新。

步骤43c:可以包括步骤43c1、43c2和步骤43c3三个步骤。

43c1:将累计未更新编码块的面积初始化为0,累计未更新编码块面积s为在同一片中从上次更新所在的编码块开始到当前块,中间累计的未进行历史候选列表更新的编码或解码块的总面积;即当前块所在片中自上一次更新历史候选列表后未用于更新历史候选列表的所有解码块的面积总和。若一个编码块的运动信息未用于进行历史候选列表更新,则将其面积加入到累计未更新编码块面积s中。

43c2:获取历史候选列表;

43c3:如果累计未更新编码块面积s小于预设值,则将当前块的面积加入到累计未更新编码块面积,该预设值为大于0的正整数。若累计未更新编码块面积s大于等于该预设值,则将累计未更新编码块面积清0,并可以按照jvet-k0104提案中的方法,也可采用其他方法利用当前块的运动信息对历史候选列表进行更新。jvet-k0104提案中,从历史候选列表头部开始,将当前块的运动信息与历史候选列表中的历史候选进行比较;如有某个历史候选与当前块运动信息相同,将该历史候选从历史候选列表中移除。然后,检查历史候选列表大小,如该列表大小超过预设的大小,则将该列表中位于头部的历史候选移除。最后将当前块的运动信息加入到历史候选列表中。

相比于现有技术,在cu级根据累计未更新编码块面积选择是否对于历史候选列表进行更新。

此外,在步骤42之后,方法还可以包括步骤44。

步骤44:根据运动信息得到当前块的帧间预测图像,将帧间预测图像与残差图像相加,得到当前块的重建图像。

应理解,在当前块执行步骤43之后,若当前块的运动信息没有对历史候选列表进行更新,则当前的历史候选列表依旧作为下一个解码块的历史候选列表,执行步骤41和步骤42。若当前块的运动信息有对历史候选列表进行更新,则新的历史候选列表将作为下一个解码块的历史候选列表,执行步骤41和步骤42。以此类推,此处不再赘述。

在本发明中,并不限定判断当前块运动信息与历史候选列表中某个历史候选是否相同的方法。可以是两个运动信息完全相同,也可以是两个运动信息在某种处理后相同,例如两个运动矢量右移2位后的结果相同。

通过本发明提供的更新历史列表的方法,历史候选列表加入融合运动信息候选列表或运动矢量预测候选列表中时,有选择的跳过部分历史候选,同时减少历史候选列表加入融合运动信息候选列表或运动矢量预测候选列表中时重复项检查操作的数目。在具有相当的编码压缩效率的前提下,降低编解码时间。可以在不增加额外存储区域和具有相当的编码效率的前提下,减少了历史候选列表的更新次数,提高了编码效率。

可选的,本申请实施例提供一种历史候选列表更新装置,可如图10所示,所述装置包括:

第一获取模块501,用于获取当前块的运动信息;

第二获取模块502,用于获取当前块的深度信息;

第三获取模块503,用于获取历史候选列表;

更新模块504,用于若所述当前块的深度信息小于或等于预设阈值,则根据所述当前块的运动信息对所述历史候选列表进行更新。

可选的,本申请实施例提供一种历史候选列表更新装置,可如图10所示,所述装置包括:

第一获取模块501,用于获取当前块的运动信息;

第二获取模块502,用于获取当前块的位置;

第三获取模块503,用于获取历史候选列表;

更新模块504,用于若所述当前块的预设位置位于预设像素的整数倍,则根据所述当前块的运动信息对所述历史候选列表进行更新;其中,所述当前块的预设位置包括当前块的左上顶点、上边界中点、中心点、或左边界中心点。

可选的,本申请实施例提供一种历史候选列表更新装置,可如图10所示,所述装置包括:

第一获取模块501,用于获取当前块的运动信息;

第二获取模块502,用于获取当前块所在片中自上一次更新历史候选列表后未用于更新历史候选列表的所有解码块的面积总和;

第三获取模块503,用于获取历史候选列表;

更新模块504,用于若所述面积总和大于等于预设阈值,则根据所述当前块的运动信息对所述历史候选列表进行更新。

具体地,第一获取模块501用于执行步骤41和步骤42相应的方法以及可以对其进行部分等同替换的方法;第二获取模块502用于执行步骤43a1或43b1或43c1相应的方法以及可以对其进行部分等同替换的方法;第三获取模块用于执行步骤43a2或43b2或43c2相应的方法以及可以对其进行部分等同替换的方法;更新模块505用于执行步骤43a3或43b3或43c3相应的方法以及可以对其进行部分等同替换的方法。

本申请实施例提供一种编码设备,包括:相互耦合的非易失性存储器和处理器,所述处理器调用存储在所述存储器中的程序代码以执行步骤41、步骤42以及步骤43a、或步骤43b或步骤43c的方法以及等同方法。

本申请实施例提供一种解码设备,包括:相互耦合的非易失性存储器和处理器,所述处理器调用存储在所述存储器中的程序代码以执行步骤41、步骤42以及步骤43a、或步骤43b或步骤43c的方法以及等同方法。

本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储了程序代码,其中,所述程序代码包括用于执行步骤41、步骤42以及步骤43a、或步骤43b或步骤43c的方法以及等同方法中的部分或全部步骤的指令。

本申请实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行步骤41、步骤42以及步骤43a、或步骤43b或步骤43c的方法以及等同方法中的部分或全部步骤。

应理解,方法实施例中一些技术特征的解释和表述同样适用在装置实施例、编码设备、解码设备、计算机程序、存储介质等。

本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一个或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。

作为实例而非限制,此类计算机可读存储媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(dsl)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、dsl或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。

可通过例如一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。

本申请的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(ic)或一组ic(例如,芯片组)。本申请中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。

以上所述,仅为本申请示例性的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

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