一种HEVC中的运动矢量预测方法及装置与流程

文档序号:12628368阅读:232来源:国知局
一种HEVC中的运动矢量预测方法及装置与流程

本发明涉及视频编码技术领域,尤其涉及一种HEVC中的运动矢量预测方法及装置。



背景技术:

现代编码技术包括预测编码、变换、量化和熵编码等过程。预测编码包括帧内预测和帧间预测,帧内预测是利用同一帧图像中已经编码并重建的图像块对当前要编码的图像块进行预测;帧间预测是利用已经编码并重建的其它帧的图像对当前要编码的图像进行预测。其中,帧间预测是以图像块为单位,对于当前图像块来说,根据其临近帧的图像块的运动矢量来预测当前图像块的运动矢量。

高效率视频编码(High Efficiency Video Coding,HEVC)是国际电信联盟(International Telecommunication Union,ITU)制定的一项视频压缩标准。在HEVC中,通常用当前编码单元(CU,Coding Unit)周围的编码单元的运动矢量来预测当前编码单元的运动矢量,如图1所示,当前编码单元的运动矢量是由B2、B1、B0、A1、A0位置的编码单元的运动矢量预测得到的,只要B2、B1、B0、A1、A0位置的编码单元的运动矢量中的至少一个是可用的,就可以预测得到当前编码单元的运动矢量。

在进行运动矢量预测时,一个最大编码单元(LCU,Largest Coding Unit)中的各个编码单元按照图2所示Z扫描的顺序进行运动矢量预测。每个编码单元完成运动矢量预测后,要保存其预测得到的运动矢量,用来给后面的编码单 元做运动矢量预测使用。

如图3所示,通常的做法是将一个编码单元的运动矢量保存在对应横纵坐标位置处的上方存储单元(t0~t15)和左侧存储单元(l0~l15)中。这种保存方式的问题是会覆盖掉在接下来的编码单元编码时还会使用到的信息。例如,在图3中,在对未编码的CU进行运动矢量预测时,需要用到其左上方的编码单元A的运动矢量和左侧的编码单元B的运动矢量,编码单元A的运动矢量最初存储在上方存储单元t3位置;而编码单元B的运动矢量也要存储在t3位置,由于编码单元B的运动矢量预测是在编码单元A的运动矢量预测之后进行的,因此,后得到的编码单元B的运动矢量将已存储在t3位置处的编码单元A的运动矢量覆盖掉,从而使得未编码的CU的运动矢量预测无法进行。

目前的解决办法是增加一些存储单元,如图4所示,在最大编码单元中连接左上方存储单元(top left)的对角线位置,也就是如图中粗实线所示出的编码单元位置处增加存储单元。将当前编码单元预测得到的运动矢量先不放到上方存储单元和左侧存储单元中,而是将一个完成运动矢量预测的编码单元的运动矢量按照45°投影,写到对应位置的存储单元中。等到上方存储单元和左侧存储单元中需要覆盖的部分被使用完之后再写入。

例如,对编码单元A进行预测得到的运动矢量存储在t3位置,在对编码单元B进行预测之后,得到的编码单元B的运动矢量暂时先不存储到t3位置,而是写入编码单元B所在位置处的存储单元中;从而,在对未编码的CU进行运动矢量预测时,其左上方的编码单元A的运动矢量仍存储在t3位置,是可用的;等到对未编码的CU进行运动矢量预测之后,再把编码单元A的运动矢量由编码单元B所在位置处的存储单元写入t3位置。

在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:

现有的运动矢量预测方法需要的存储单元数量较多,对于硬件设计来说,所需的面积和功耗较大。



技术实现要素:

本发明提供的HEVC中的运动矢量预测方法及装置,能够使得HEVC中完成运动矢量预测所需要的存储单元数量最少,减小硬件设计所需的面积和功耗。

一方面,本发明提供一种HEVC中的运动矢量预测方法,包括:

根据当前编码单元周围的编码单元的运动矢量,预测获得当前编码单元的运动矢量,其中,所述当前编码单元为最大编码单元中的其中一个编码单元;

将所述最大编码单元的左上方位置存储的运动矢量存储到预定位置;所述预定位置为当前编码单元的左上方位置或者为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置;

将所述当前编码单元的运动矢量存储到所述最大编码单元的左上方位置;

其中,所述最大编码单元中各编码单元的运动矢量按照Z扫描的顺序依次进行预测。

另一方面,本发明提供一种HEVC中的运动矢量预测装置,包括:

预测单元,用于根据当前编码单元周围的编码单元的运动矢量,预测获得当前编码单元的运动矢量,其中,所述当前编码单元为最大编码单元中的其中一个编码单元;

第一存储单元,用于将所述最大编码单元的左上方位置存储的运动矢量存储到预定位置;所述预定位置为当前编码单元的左上方位置或者为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置;

第二存储单元,用于将所述当前编码单元的运动矢量存储到所述最大编码单元的左上方位置;

其中,所述最大编码单元中各编码单元的运动矢量按照Z扫描的顺序依次进行预测。

本发明提供的HEVC中的运动矢量预测方法及装置,根据当前编码单元周围的编码单元的运动矢量,预测获得当前编码单元的运动矢量,将所述最大编码单元的左上方位置存储的运动矢量存储到预定位置,所述预定位置为当前编码单元的左上方位置或者为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置,并将所述当前编码单元的运动矢量存储到所述最大编码单元的左上方位置,由于最大编码单元中各编码单元的运动矢量按照Z扫描的顺序依次进行预测,因此,对于每个编码单元来说,其运动矢量最终只可能存储在最大编码单元的左侧、上方和左上方位置,进而,与现有技术相比,本发明只需要在最大编码单元的左侧、上方和左上方位置存储运动矢量,即可实现各编码单元的运动矢量预测,所需要的存储单元的数量最少,减小了硬件设计所需的面积和功耗。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为根据当前CU周围的CU的运动矢量对当前CU的运动矢量进行预测的示意图;

图2为按照Z扫描的顺序对最大编码单元中的各编码单元进行运动矢量预测的示意图;

图3为现有技术中采用将编码单元的运动矢量保存在对应横纵坐标的位置的方式进行运动矢量预测的示意图;

图4为在图3的基础上增加存储单元后的运动矢量预测的示意图;

图5为本发明实施例1提供的HEVC中的运动矢量预测方法的流程图;

图6为本发明实施例2提供的用于存储各编码单元的运动矢量的存储单元的分布图;

图7为本发明实施例2提供的0位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图8为本发明实施例2提供的1位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图9为本发明实施例2提供的2位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图10为本发明实施例2提供的3位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图11为本发明实施例2提供的4位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图12为本发明实施例2提供的5位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图13为本发明实施例2提供的6位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图14为本发明实施例2提供的7位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图15为本发明实施例2提供的8、9、10和11位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图16为本发明实施例2提供的12、13、14和15位置编码单元完成运动矢量预测后的运动矢量存储示意图;

图17为本发明实施例3提供的HEVC中的运动矢量预测装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例1

本发明实施例提供一种HEVC中的运动矢量预测方法,如图5所示,所述HEVC中的运动矢量预测方法包括:

S11、根据当前编码单元周围的编码单元的运动矢量,预测获得当前编码单元的运动矢量,其中,所述当前编码单元为最大编码单元中的其中一个编码单元;

S12、将所述最大编码单元的左上方位置存储的运动矢量存储到预定位置;所述预定位置为当前编码单元的左上方位置或者为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置;

需要说明的是,只有当所述最大编码单元的左上方位置存储有运动矢量时, 才将所述最大编码单元的左上方位置存储的运动矢量存储到预定位置。

S13、将所述当前编码单元的运动矢量存储到所述最大编码单元的左上方位置;

其中,所述最大编码单元中各编码单元的运动矢量按照Z扫描的顺序依次进行预测。

本发明实施例提供的HEVC中的运动矢量预测方法,根据当前编码单元周围的编码单元的运动矢量,预测获得当前编码单元的运动矢量,将所述最大编码单元的左上方位置存储的运动矢量存储到预定位置,所述预定位置为当前编码单元的左上方位置或者为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置,并将所述当前编码单元的运动矢量存储到所述最大编码单元的左上方位置,由于最大编码单元中各编码单元的运动矢量按照Z扫描的顺序依次进行预测,因此,对于每个编码单元来说,其运动矢量最终只可能存储在最大编码单元的左侧、上方和左上方位置,进而,与现有技术相比,本发明只需要在最大编码单元的左侧、上方和左上方位置存储运动矢量,即可实现各编码单元的运动矢量预测,所需要的存储单元的数量最少,减小了硬件设计所需的面积和功耗。

进一步地,所述根据当前编码单元周围的编码单元的运动矢量,预测获得当前编码单元的运动矢量包括:

根据当前编码单元左上方的编码单元的运动矢量、左侧的编码单元的运动矢量、左下方的编码单元的运动矢量、上方的编码单元的运动矢量、右上方的编码单元的运动矢量,预测获得当前编码单元的运动矢量。

进一步地,当所述当前编码单元的左上方位置不属于所述最大编码单元时, 所述预定位置为当前编码单元的左上方位置;

当所述当前编码单元的左上方位置属于所述最大编码单元时,所述预定位置为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置。

实施例2

本发明实施例提供一种HEVC中的运动矢量预测方法,如图6所示,最大编码单元(8×8)中的各个编码单元按照Z扫描的顺序进行运动矢量预测,其中,最大编码单元左侧、上方、左上方位置为存储运动矢量的存储单元,每个数字代表存储一个运动矢量的存储空间,左侧包括8个存储单元l0~l7,上方包括8个存储单元t0~t7,左上方包括1个存储单元top left。

如图7所示,当第一个编码单元(0位置)完成运动矢量预测后,0位置编码单元的运动矢量c0存储到最大编码单元的左上方位置(top left)。

需要说明的是,在0位置编码单元完成运动矢量预测之前,最大编码单元的左上方位置(top left)没有存储运动矢量。

按照Z扫描的顺序,下一个要进行运动矢量预测的编码单元为1位置,结合图1和图7所示,对于当前CU为1位置的编码单元来说,其五个相邻位置B2、B1、B0、A1、A0分别对应于图7中t0位置、t1位置、t2位置、0位置和2位置。由于t0位置编码单元的运动矢量、t1位置编码单元的运动矢量、t2位置编码单元的运动矢量和0位置编码单元的运动矢量都是可用的,因此,可以对1位置编码单元进行运动矢量预测。

如图8所示,当1位置编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c0存储到1位置的左上角位置(t0),1位置编码单元的运动矢量c1存储到最大编码单元的左上方位置。

如图9所示,当2位置编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c1存储到2位置的左上角位置(l0),2位置编码单元的运动矢量c2存储到最大编码单元的左上方位置。

如图10所示,当3位置编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c2存储到3位置的左上角位置,由于3位置的左上角位置为0位置,而0位置编码单元的运动矢量c0存储在t0处,因此,将最大编码单元的左上方位置的运动矢量c2存储到t0处,3位置编码单元的运动矢量c3存储到最大编码单元的左上方位置。

如图11所示,当4位置编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c3存储到4位置的左上角位置(t1),4位置编码单元的运动矢量c4存储到最大编码单元的左上方位置。

如图12所示,当5位置编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c4存储到5位置的左上角位置(t2),5位置编码单元的运动矢量c5存储到最大编码单元的左上方位置。

如图13所示,当6位置编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c5存储到6位置的左上角位置,由于6位置的左上角位置为1位置,而1位置编码单元的运动矢量c1存储在l0处,因此,将最大编码单元的左上方位置的运动矢量c5存储到l0处,6位置编码单元的运动矢量c6存储到最大编码单元的左上方位置。

如图14所示,当7位置编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c6存储到7位置的左上角位置,由于7位置的左上角位置为4位置,而4位置编码单元的运动矢量c4存储在t2处,因此,将最大编码单 元的左上方位置的运动矢量c6存储到t2处,7位置编码单元的运动矢量c7存储到最大编码单元的左上方位置。

如图15所示,当8、9、10、11位置的编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c7存储到8位置的左上角位置;11位置的运动矢量c11存储到最大编码单元的左上方位置,9位置的运动矢量c9存储到9位置最左侧的位置(l2),10位置的运动矢量c10存储到10位置最上方的位置(t0)。

如图16所示,当12、13、14、15位置的编码单元完成运动矢量预测后,最大编码单元的左上方位置的运动矢量c11存储到12位置的左上角位置,由于12位置的左上角位置为3位置,而3位置编码单元的运动矢量c3存储在t1处,因此,将最大编码单元的左上方位置的运动矢量c11存储到t1处;15位置的运动矢量c15存储到最大编码单元的左上方位置,13位置的运动矢量c13存储到13位置最左侧的位置(l2),14位置的运动矢量c14存储到14位置最上方的位置(t2)。

以此类推,直到最后一个编码单元完成运动矢量预测。

从而,不需要额外增加存储单元,即可保证每个编码单元做运动矢量预测所需的周围的编码单元的运动矢量都可用,所需要的存储单元的数量最少,减小了硬件设计所需的面积和功耗。

实施例3

本实施例提供一种HEVC中的运动矢量预测装置,如图17所示,所述HEVC中的运动矢量预测装置包括:

预测单元11,用于根据当前编码单元周围的编码单元的运动矢量,预测获 得当前编码单元的运动矢量,其中,所述当前编码单元为最大编码单元中的其中一个编码单元;

第一存储单元12,用于将所述最大编码单元的左上方位置存储的运动矢量存储到预定位置;所述预定位置为当前编码单元的左上方位置或者为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置;

第二存储单元13,用于将所述当前编码单元的运动矢量存储到所述最大编码单元的左上方位置;

其中,所述最大编码单元中各编码单元的运动矢量按照Z扫描的顺序依次进行预测。

本发明提供的HEVC中的运动矢量预测装置,根据当前编码单元周围的编码单元的运动矢量,预测获得当前编码单元的运动矢量,将所述最大编码单元的左上方位置存储的运动矢量存储到预定位置,所述预定位置为当前编码单元的左上方位置或者为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置,并将所述当前编码单元的运动矢量存储到所述最大编码单元的左上方位置,由于最大编码单元中各编码单元的运动矢量按照Z扫描的顺序依次进行预测,因此,对于每个编码单元来说,其运动矢量最终只可能存储在最大编码单元的左侧、上方和左上方位置,进而,与现有技术相比,本发明只需要在最大编码单元的左侧、上方和左上方位置存储运动矢量,即可实现各编码单元的运动矢量预测,所需要的存储单元的数量最少,减小了硬件设计所需的面积和功耗。

进一步地,所述预测单元11,用于根据当前编码单元左上方的编码单元的运动矢量、左侧的编码单元的运动矢量、左下方的编码单元的运动矢量、上方 的编码单元的运动矢量、右上方的编码单元的运动矢量,预测获得当前编码单元的运动矢量。

进一步地,当所述当前编码单元的左上方位置不属于所述最大编码单元时,所述预定位置为当前编码单元的左上方位置;当所述当前编码单元的左上方位置属于所述最大编码单元时,所述预定位置为存储所述当前编码单元的左上方位置的编码单元的运动矢量的位置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

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

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