编码方法、解码方法以及编码装置、解码装置与流程

文档序号:36638868发布日期:2024-01-06 23:24阅读:24来源:国知局
编码方法、解码方法以及编码装置、解码装置与流程

本技术实施例上涉及视频编码领域,更确切地说,涉及编码方法、解码方法以及编码装置、解码装置。


背景技术:

1、视频编码(视频编码和解码)广泛用于数字视频应用,例如广播数字电视、互联网和移动网络上的视频传播、视频聊天和视频会议等实时会话应用、dvd和蓝光光盘、视频内容采集和编辑系统以及可携式摄像机的安全应用。

2、随着1990年h.261标准中基于块的混合型视频编码方式的发展,新的视频编码技术和工具得到发展并形成了后续视频编码标准演进的基础。视频编码标准包括mpeg-1视频、mpeg-2视频、itu-th.262/mpeg-2、itu-t h.263、itu-t h.264/mpeg-4第10部分高级视频编码(advanced video coding,avc)、itu-t h.265/高效视频编码(high efficiencyvideo coding,hevc)…以及此类标准的扩展,例如可扩展性和/或3d(three-dimensional)扩展。随着视频创作和分享变得越来越广泛,视频流量成为通信网络和数据存储的最大负担。因此大多数视频编码标准的目标之一是相较之前的标准,在不降低图片的主观质量的前提下减少比特率。即使最新的高效视频编码(high efficiency video coding,hevc)可以在不降低图片的主观质量的前提下比avc大约多压缩视频一倍,仍然亟需新技术相对hevc进一步压缩视频,新一代的视频编码技术vvc(versatile video coding)技术正在制定过程中,其目标在于相较于hevc能够在图片的主观质量不下降的前提下,进一步将压缩率提升50%左右。

3、hevc/h.265视频编码标准、或者正在制定的vvc/h.266视频编码标准,一帧图像会被分割成互不重叠的编码树单元(coding tree unit,ctu),ctu的大小可以设置为64×64或128×128大小。以64×64大小的ctu为例,其包含64列像素,每列包含64个像素,每个像素包含亮度分量或/和色度分量。一个ctu被划分为一个或多个编码单元(coding unit,cu)。一个cu包含基本的编码信息,包括预测模式、变换系数等信息。解码端可以按照这些编码信息对cu进行相应的预测、反量化、反变换、重建、滤波等解码处理,产生这个cu对应的重建图像。一个cu对应有预测图像和残差图像,预测图像与残差图像相加得到重建图像。预测图像通过帧内预测或帧间预测生成,残差图像通过对变换系数进行反量化和反变换处理生成。

4、帧间预测是基于运动补偿(motion compensation)的预测技术,。在帧间预测编码中,由于图像邻近帧中的相同物体存在一定时域相关性,可将图像序列的每一帧划分成许多互不重叠的块,并认为块内所有像素点的运动都相同。主要处理过程为确定当前块的运动信息,根据运动信息从当前块的参考帧中获取参考图像块,产生当前块的预测图像,其中,当前块(current block)是指正在进行编码/解码处理的图像块,其中所述当前块可以是一个编码单元中的亮度块或者色度块。运动信息包含帧间预测方向、参考帧索引(reference index,ref_idx)、运动矢量(motion vector,mv)等,其中帧间预测方向指示当前块使用前向预测、后向预测或双向预测其中的何种预测方向,运动矢量指示了参考帧中用于预测当前块的参考图像块相对于当前块的位移矢量,因而一个运动矢量对应有一个参考帧中的一个参考图像块。一个图像块的帧间预测可以只通过一个运动矢量,使用一个参考帧中的像素来生成预测图像,称为单向预测;也可以通过两个运动矢量,使用两个参考帧中的像素来组合生成预测图像,称为双向预测。也就是说,一个图像块通常可包含一个或两个运动矢量。对于一些多假设帧间预测(multi-hypothesis inter prediction)技术,一个图像块可能包含多于两个运动矢量。

5、一个mv是二维矢量,包含水平方向位移分量和竖直方向位移分量;一个mv对应于两个帧,每一帧具有一个图像顺序号(picture order count,poc),用于表示图像在显示顺序上的编号,所以一个mv也对应于一个poc差值。poc差值与时间间隔呈线性关系。运动矢量的缩放通常采用基于poc差值的缩放方式,将一对图像之间的运动矢量转换成另一对图像之间的运动矢量。

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

7、码流中,运动信息占有大量的数据量。为了降低所需数据量,通常采用预测的方式传送运动信息,预测方式分为帧间预测和帧内预测,帧内预测是采用同一帧图像内的参考块作为预测块,而帧间预测则是采用不同帧内的参考块作为预测块。

8、常用的帧间预测模式有以下三种:

9、1)高级运动矢量预测模式(advanced motion vector prediction,amvp):在码流中标识当前块使用的帧间预测方向(前向、后向或双向)、参考帧索引(reference index)、运动矢量预测值索引(motion vector predictor index,mvp index)、运动矢量残差值(motion vector difference,mvd);由帧间预测方向确定使用的参考帧队列,由参考帧索引确定当前块mv指向的参考帧,由运动矢量预测值索引指示mvp列表中的一个mvp作为当前块mv的预测值,一个mvp与一个mvd相加得到一个mv。

10、2)merge/skip模式:码流中标识融合索引(merge index),根据merge index从融合候选者列表(mergecandidate list)中选择一个merge candidate,当前块的运动信息(包括预测方向、参考帧、运动矢量)由这个merge candidate确定。merge模式和skip模式的主要区别在于,merge模式隐含当前块有残差信息,也即,从运动候选者列表中获取的运动矢量作为当前块的运动矢量预测值,而当前块的运动矢量由该运动矢量的预测值与运动矢量的残差值相加得到,运动矢量的残差通过解码码流得到;而skip模式隐含当前块没有残差信息(或者说残差为0),即从运动矢量列表中获得的运动矢量直接作为当前块的运动矢量进行帧间预测;这两种模式导出运动信息的方式是一样的。

11、3)仿射变换模式:通过仿射变换由两个或三个控制点运动矢量得到当前块中各个子块的运动矢量。

12、在amvp模式以及merge/skip模式中,各自都需要首先建立一个候选者列表,对于amvp,一个候选运动矢量列表(amvp候选者列表)需要建立,一个较优的运动矢量将会被选出作为当前块的运动矢量预测值,而该运动矢量的索引值将会被写入码流中;而对于merge/skip模式,需要建议一个运动候选者列表(merge candidate list)需要被建立,而该当前候选运动信息列表中的候选运动信息包括有,单向或者双向参考信息,参考帧索引,以及与参考方向对应的运动矢量信息。图6展示了在amvp以及merge/skip模式下,建立候选运动矢量列表以及当前候选运动信息列表所需要参考的空域的候选块以及时域的候选块的具体位置,图6左边的图显示已确定当前块的右下方和中心处的块为最适合提供良好的时间运动矢量预测值(tmvp),图6右边的图显示从五个空间相邻块导出两个空间mvp候选者a和b。amvp允许最多两个候选的运动矢量,即amvp候选者列表的最大值为2,而merge/skip模式则允许更多的候选运动信息,在hevc中所允许的最多的候选运动信息为5个,即,当前候选运动信息列表的最大值为5。

13、在最新的视频编码技术,多用途视频编码(versatile video coding),开发过程中,提出了采用历史运动信息来扩展上述amvp以及merge/skip模式下的可选的运动矢量或者候选运动信息。jvet-k0104提案中提出了在融合运动信息候选列表和候选运动矢量预测列表中加入历史候选运动信息(history candidate)的方法,增加了merge/skip的融合运动信息候选和inter mvp模式的运动矢量预测候选的数量,提高了预测效率。历史候选运动信息列表是由历史候选运动信息组成,其中历史候选运动信息为先前编码块的运动信息。jvet-k0104提案中,介绍了历史候选运动信息列表(history candidate list)的使用方法以及历史候选运动信息列表的构建方法。

14、加入历史候选运动信息的融合运动信息候选列表的构建方式(历史候选运动信息列表的使用方法)如下:

15、步骤1:将与当前块空域相邻的空间候选和时域候选加入当前块的融合运动信息候选列表,其方法与hevc中的方法相同。如图6所示,空间候选包含a0、a1、b0、b1、和b2,时域候选包括t0和t1。在vtm中,时域候选也包括自适应时域运动矢量预测(atmvp)技术提供的候选。

16、步骤2:将历史候选运动信息列表中的历史候选运动信息按照加入到融合运动信息候选列表中,按照从历史候选运动信息列表尾部到头部的顺序检查预设数目的历史候选运动信息,如图7所示。从历史候选运动信息列表尾部的历史候选运动信息开始,检查其与步骤1得到的融合运动信息候选列表中融合运动信息候选是否相同,如果不同则加入到融合运动信息候选列表中,如果相同则检查历史候选运动信息列表中下一个历史候选运动信息。

17、步骤3:加入其它类型的融合运动信息候选,如双向预测候选(bi-predictivecandidate)和零运动矢量候选(zero motion vector candidate)。

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

19、步骤1:在片(slice)解码开始的时候初始化历史候选运动信息列表,将其清空。

20、步骤2:解码当前cu,如果当前cu或当前块为merge或inter帧间预测模式,则生成融合运动信息候选列表或候选运动矢量预测列表,同时将历史候选运动信息列表中的历史候选运动信息加入到融合运动信息候选列表或候选运动矢量预测列表中。

21、步骤3:在解码完当前cu或当前块之后,将当前块的运动信息作为新的历史候选运动信息,加入到历史候选运动信息列表中,更新历史候选运动信息列表,如图8所示。首先,从历史候选运动信息列表头部开始,将当前块的运动信息与历史候选运动信息列表中历史候选运动信息进行比较。如果某个历史候选运动信息(例如图3中的mv2)与当前块的运动信息相同,则将这个历史候选运动信息mv2移除。然后,检查历史候选运动信息列表大小,如该列表大小超过预设的大小,则将该列表中位于头部的历史候选运动信息移除。最后,将当前块的运动信息加入到历史候选运动信息列表的尾部。

22、然而,在构建上述的历史候选运动信息列表过程中,现有技术采用的每个片开始编解码时初始化历史候选运动信息列表,不利于行级以及ctu级的编解码并行。而且该方法在每一个编码块都进行历史候选运动信息列表格更新,历史候选运动信息列表较长时,其构造和更新花销时间较长。


技术实现思路

1、有鉴于次,本发明提供一种帧间预测方法及装置,以及应用该方法的编解码方法以及应用该装置的编解码装置。本发明的第一方面,提供一种帧间预测的方法,其包括:初始化与当前编码树单元对应的历史候选运动信息列表,其中,所述历史候选运动信息列表中包括n个存储空间,所述n个存储空间用于存储历史候选运动信息,所述初始化后的历史候选运动信息列表包括至少m空置的存储空间,所述m≤n,m及n为整数,所述当前编码树单元包含于由多个编码树单元构成的编码树单元集合(slice)中,其所述当前编码树单元非所述编码树单元集合中按照预定的处理顺序中的第一个;按照预定的顺序将所述当前编码树单元的空域相邻块内l个位置处的运动信息增加到所述历史候选运动信息列表中,其中,m≤l≤n,所述空域相邻块内l个位置根据预设的规则得到;构建所述当前编码树单元的当前候选运动信息列表或者当前编码单元的当前候选运动信息列表,其中所述编码单元由所述编码树单元划分得到;以及根据所述当前编码树单元的当前候选运动信息列表和所述历史候选运动信息列表的组合或者当前编码单元的当前候选运动信息列表和所述历史候选运动信息列表的组合,对所述当前编码树单元或者当前编码单元进行帧间预测。

2、该方法中,在进行当前编码树单元的编码过程中,对历史候选运动信息列表进行初始化操作,即,将构建与当前编码树单元对应的独立的历史候选运动信息列表,从而切断编码树单元编码过程中由于构建历史候选运动信息列表而造成的依赖关系,以使得编码树单元可以根据自己的历史候选运动信息列表进行独立的编码,在具有相当的编码效率的同时,更有利于设计行级以及ctu级的编解码并行,通过并行处理,能够在保证编码质量基本不受损失的情况下,极大的降低编解码时间。

3、在结合本发明的第一方面的一可选实施方式,所述初始化与当前编码树单元对应的历史候选运动信息列表包括,清空所述历史候选运动信息列表,使得m=n。该方式使得当前编码树单元可以构建全新的历史候选运动信息列表,以增加帧间预测的准确性。

4、在结合本发明的第一方面的或者基于第一方面的可选实施方式的另一可选的实施方式,采用所述空域内相邻块内的m个预定的位置作为所述m个历史候选运动信息的来源位置,具体地,所述空域相邻块内m个位置为,从所述空域相邻块内预设位置获取第一个候选运动信息,以获取所述第一个候选运动信息的位置为起点,以预设的步长为间隔获取剩余的m-1个候选运动信息。在构建所述历史候选运动信息列表过程中为了能够和现有的历史候选运动信息列表构建方式统一并具有较为简化的算法,所述m个位置处的运动矢量通常是从一个起点位置以预设的间隔依次获取m个位置处的运动矢量,其中所述预设的间隔也可以称之为步长,该步长可以是固定的,例如,采用4个或者8个像素为单位;此外,所述步长也可以是变化的,例如,根据当前编码树单元的大小来设置不同的步长。

5、在结合本发明的第一方面的或者基于第一方面任意可选实施方式的另一可选实施方式中,所述m位置的运动信息的添加顺序可是预设的顺序,例如,按照顺时针的顺序,以所述当前编码树单元的左下角的空域相邻块为起点,以所述当前编码树单元右上角的空域相邻块为终点,将所述空域相邻块内l个位置处的运动信息增加到所述历史候选运动信息列表中。该获取方式以能够很好的匹配空域相邻块的处理顺序以及简化历史运动信息的读写逻辑为目标,因此,可以采用多种不同的方式。例如,采用逆时针的方式,或者,从两个端点处的空域相邻块为起点同时以相对的方向读取。

6、在结合本发明的第一方面的或者基于第一方面任意可选实施方式的另一可选实施方式中,在对所述当前编码树单元或者当前编码单元进行帧间预测之前,该方法还可以将所述当前编码树单元的当前候选运动信息列表和所述历史候选运动信息列表的组合进行组合或者将当前编码单元的当前候选运动信息列表和所述历史候选运动信息列表进行组合,其具体可以是:将所述历史候选运动信息加入所述当前编码树单元的当前候选运动信息列表或者前编码单元的当前候选运动信息列表中,然后基于所述当前编码树单元的当前候选运动信息列表或者前编码单元的当前候选运动信息列表中,进行所述的帧间预测。这种处理方式可以简化当前运动编码树单元或者编码单元的运动信息的索引操作,将所述历史候选运动信息列表中的运动信息加入所述当前运动编码树单元或者编码单元的当前候选运动信息列表后,原始的候选运动信息和历史候选运动信息采用了统一的索引顺序及索引号,不需要建立额外的当前候选运动信息列表索引,从而能够有效简化索引的过程。

7、在结合本发明的第一方面的或者基于第一方面任意可选实施方式的另一可选实施方式中,若当前的编码树单元还需要进一步划分为编码单元进行编码的情况下,所述方法除了根据所获取的运动信息对所述当前编码单元进行帧间预测之外,所述方法还可以包括基于所述当前编码单元运动信息更新所述历史候选运动信息列表。该方法可以使得当前编码树单元对应的历史候选运动信息列表能够持续的获得更新,以提高帧间预测的准确性。

8、在结合本发明的第一方面的或者基于第一方面任意可选实施方式的另一可选实施方式中,上述的对历史候选运动信息列表的跟新可以分为两种情况,即,若所述m个位置并未填满,则将所述当前编码单元运动信息作为历史运动信息加入所述历史候选运动信息列表内所述m个位置中距离n-m位置最近的空置的存储空间内;或者;若所述m个位置已填满,则按照先入先出的原则将最早加入所述历史候选运动信息列表内的历史运动信息移除,并将剩余历史运动信息超被移除的历史运动信息位置移位后将所述当前编码单元运动信息作为历史运动信息加入所述历史候选运动信息列表的尾部,其中,所述历史候选运动信息列表中包含最新加入的历史运动信息的一端为所述历史候选运动信息列表的尾部。该方法提供的历史候选运动信息列表应用的灵活性,即,历史候选运动信息列表在不完全填满的时候也可以用于当前块的帧间预测,而在历史候选运动信息列表填满的情况下,当前编码块的运动信息/运动矢量依然可以用于更新所述历史候选运动信息列表。

9、在结合本发明的第一方面的或者基于第一方面任意可选实施方式的另一可选实施方式中,在历史候选运动信息列表填满的情况下,当前编码块的运动信息/运动矢量依然可以不再对所述历史候选运动信息列表更新,即,基于与所述当前编码单元相同的方法对另一编码单元进行帧间预测,其中,所述另一个编码单元按照预设处理顺序位于所述当前编码单元之后且与所述当前编码单元属于所述编码树单元,所述另一编码单元的帧间预测所采用的历史运动信息列表包括所述当前编码单元的帧间预测所采用的历史运动信息列表中的历史运动信息。具体地可以是,若所述m个位置并未填满,则将所述当前编码单元运动信息作为历史运动信息加入所述历史候选运动信息列表内所述m个位置中距离n-m位置最近的空置的存储空间内;若所述m个位置并已填满,则基于所述当前候选运动信息列表对下一个编码单元进行帧间预测处理。这种处理方式可以允许在当前编码树单元内的编码块的并行处理,

10、在结合本发明的第一方面的或者基于第一方面任意可选实施方式的另一可选实施方式中,如果在遍历完所述空域相邻图像块之后历史候选运动信息列表并没有填满的情况下、或者若当前编码树单元位于一帧图像最上侧,或者若当前编码树单元位于一帧图像的最左则,可以参考如下任意一种方法来处理历史候选运动信息列表中没有填满的部分。方式一:不再填充任何其他来源的运动信息,在编解码当前编码树单元内的当前编码单元时所获取的当前编码单元的运动信息作为所述历史候选运动信息加入到所述历史候选运动信息列表中。方式二:填充当前编码树单元空域预设非临近位置的编码块的运动信息。预设非临近位置可以是与临近位置固定间隔,也可以是预设模板。方式三:填充来自于参考帧中,当前编码树单元对应位置和当前编码树单元临近编码块对应位置中预设位置的编码块时域运动信息。当前编码树单元对应位置中的预设位置可以是固定间隔抽取,也可以是以特定规则或顺序抽取。当前编码树单元临近编码块对应位置中预设位置可以是一特定规则特定顺序抽取。方式四:填充来自于参考帧中,当前编码树单元对应位置和前编码树单元预设非临近位置的编码块对应位置中预设位置的编码块时域运动信息。当前前编码树单元对应位置中的预设位置可以是固定间隔抽取,也可以是以特定规则或顺序抽取。当前前编码树单元预设非临近位置的编码块对应位置中预设位置可以是一特定规则特定顺序抽取。方式五:填充来自于当前编码树单元邻近的编码树单元的历史候选运动信息列表中的历史候选运动信息。以上任意一种对未填充满的历史候选信息运动列表的填充方式都能够丰富所述历史候选运动信息列表内的历史候选运动信息,能够在空域相邻块不足或者空域相邻块的mv不足的情况下补足当前候选运动信息列表从而能够充分发挥历史候选运动信息列表所能够带来的编解码增益。

11、本发明第二方面提供一种采用本发明第一方面的帧间预测进行编码的方法:其包括:基于本发明的第一方面的帧间预测方法对当前的编码树单元或者编码单元进行帧间预测以获得帧间预测图像;将当前编码树单元或者所述当前编码单元的原始图像与将所获得的帧间预测图像相减获得残差图像;对所述残差图像以及所述运动信息索引进行编码形成码流。其中,需要说明的是作为解码方法,在进行所述帧间预测的过程中,需要,从所述历史候选运动信息列表与所述当前候选运动信息列表的组合中获取所述当前编码树单元或者当前编码单元的运动信息,根据所述当前编码树单元或者当前编码单元的运动信息,对所述当前编码树单元或者当前编码单元进行帧间预测获得帧间预测图像,其中,获取所述运动信息的具体可以通过解析码流,所述当前编码树单元或者当前编码单元对应的运动信息索引,根据所述从所述历史候选运动信息列表与所述当前候选运动信息列表的组合中获取所述当前编码树单元或者当前编码单元的运动信息。

12、本发明第三方面提供一种采用本发明第一方面的帧间预测进行编码的方法:其包括:基于本发明的第一方面的帧间预测方法对当前的编码树单元或者编码单元进行帧间预测以获得帧间预测图像,将当前编码树单元或者所述当前编码单元的原始图像与将所获得的帧间预测图像相减获得残差图像;对所述残差图像进行编码形成码流。其中,在基于第一方面的帧间预测方法获取帧间预测图像过程中,该方法还包括:从所述历史候选运动信息列表与所述当前候选运动信息列表的组合中获取所述当前编码树单元或者当前编码单元的运动信息,以及所述运动信息的运动信息索引;根据所述当前编码树单元或者当前编码单元的运动信息,对所述当前编码树单元或者当前编码单元进行帧间预测获得帧间预测图像;以及,对所述运动索引进行编码。

13、相比于现有技术,上述编码/解码方法中,采用了在编码树级别的历史候选运动信息列表的更新,允许行级以及ctu级的编解码并行,能够有效降低编码的时间。

14、此外,本发明还提供了与本发明第一、第二及第三方面对应的阵间预测装置,编码装置以及编码设备以及与本发明第三方面对应的解码装置接解码设备。

15、此外,本发明还提供了与本发明第一、第二及第三方面对应的阵间预测设备,编码设备以及编码设备,其包括数字处理器以及存储器,在所述存储器中存储有可执行的指令集,所述数字处理器读取存储在所述存储器中的指令集用于实现本发明第一、第二或第三方面提供的方法。

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