专利名称:一种基于avs的帧间预测方法
技术领域:
本发明涉及信源编码技术领域,具体地说,本发明涉及一种帧间预测方法。
背景技术:
先进音视频编码标准(英文为Audio Video Coding Standard,本文中简称为AVS标准)是我国具备自主知识产权的第二代信源编码标准。“信源”是信息的“源头”,信源编码技术解决的重点问题是数字音视频海量数据(即初始数据、信源)的编码压缩问题,故也称数字音视频编解码技术。显而易见,它是其后数字信息传输、存储、播放等环节的前提,因此信源编码标准是数字音视频产业的共性基础标准。在AVS标准中,帧(frame)是视频信号空间信息的表示,由一个亮度样本矩阵(Y)和两个色度样本矩阵(Cb和Cr)构成。巾贞间预测(inter prediction)是使用先前解码图像(或场)生成当前图像(或场)样本预测值的过程。典型的AVS解码结构采用了时间及空间的运动预测补偿、反变换、反量化和熵解码。在待解码的视频码流中包含有下述三种编码图像帧内编码图像(I图像)仅使用图像本身信息进行编码,在解码时不参照其他图像;前向预测编码图像(P图像)P图像是向前预测一个或多个I图像或者P图像,因此若前面的某个参考I图像或者P图像不存在,则该P图像不能解码;双向预测编码图像(B图像)可以同时向前和后向预测一帧或多帧已解码I图像或者P图像;因此在解码B图像时,需要先解码获得在显示顺序上其后的I图像或者P图像数据,这样会导致解码顺序与显示顺序的不一致。可以看出,P图像和B图像的编解码过程都需要经过帧间预测处理。在编码过程中,如果当前图像是P图像或B图像,需要根据相应的参考图像进行帧间预测,计算并存储当前图像相对于参考图像的运动矢量(运动矢量是由当前图像指向参考图像,其值为当前块和参考块在图像中坐标的偏移)。这样在解码时,只需要根据所述运动矢量和参考图像,就可恢复出所述当前图像。帧间预测技术可以有效的降低时间冗余,而在AVS标准中,还针对运动补偿进一步引入了变块尺寸、多参考帧、直接和对称预测模式、无限制运动矢量、像素插值等新的技术手段,从而获得了更高的编码效率。然而上述新的技术手段在提高编码效率的同时也增加了计算量和存储带宽。目前,高性能的AVS解码器一般使用硬件实现,已解码的帧会被存入外存作为解码其它帧的参考数据,在帧间预测时就从外存中读取这些参考数据。在AVS标准中,解码器将一帧图像分为若干个宏块,依次对每个宏块进行帧间预测。每个宏块有四种划分模式。如图I所示,四种划分模式分别是1个16X 16亮度块和相应的色度块,2个16 X 8亮度块和相应的色度块,2个8 X 16亮度块和相应的色度块,4个8X8亮度块和相应的色度块。每个亮度块和色度块均对应各自的运动矢量,以便用于运动补偿。AVS标准采用四种宏块划分模式,能够提高编码效率。但由于不同的模式的宏块,进行帧间预测时所需读取的参考图像的像素位置和数目各不相同,因此,这种变块尺寸也给帧间预测带来能更多挑战。在现有技术中,不论当前宏块是什么格式,解码器均固定按照4个8X8块的模式读取参考图像,即统一成8X8块进行运动补偿。这种方式易于实现,但存在访问外存次数多,从外存中读取的数据总量大等缺陷。其原因是当运动矢量是1/2像素或1/4像素时,需要对亮度(色度)进行二分之一样本和四分之一样本的插值,而二分之一样本和四分之一样本的插值所需的参考图像较多,在某些插值位置,需要的读取12X12的个参考像素,因此,在双向预测时,对一个宏块进行帧间预测需要读取12X12X4X2 = 1152个像素,即1152bytes的数据。也就是说,对一个宏块进行巾贞间预测,就需要从外存中读取1152bytes的数据,而这1152bytes的数据中实际上存在一些冗余数据,导致访存带宽的浪费,硬件开销增大。另一方面,由于每次都案4个8X8块的模式读取数据,使得解码器访问外存的次数增多,这会导致访存总延时的增加。另外,在AVS标准中使用无限制的运动矢量,也就是说运动矢量所指向的参考数据可以超出参考图像的边界,在这种情况下对超出参考图像边界的整数样本应该使用距离该整数参考数据所指位置最近的图像内的整数样本进行边界扩展。现有的AVS解码器中,预先对参考帧边界进行扩展并将扩展后的参考帧存入外存。这种做法带宽利用率低,同时数据增补后的参考帧需要占用的额外的外存空间。目前,帧间预测的访存量占到解码器总访存量的50%,而其中亚像素插值运算的处理时间则占到总解码时间的25%。可以看出,帧间预测已成为AVS编解码器中数据量最密集的部分之一,同时也是整个系统的瓶颈所在。综上所述,当前迫切需要一种在保证AVS标准的编码效率的前提下,能够避免读取冗余数据、减少访问外存次数的基于AVS的帧间预测方法。
发明内容
本发明的目的是提供一种在保证AVS标准的编码效率的前提下,能够避免读取冗余数据、减少访问外存次数的基于AVS的帧间预测方法。为实现上述发明目的,本发明提供了一种基于AVS的帧间预测方法,该方法包括将需要进行帧间预测的帧分为若干个宏块,依次对每个宏块进行帧间预测,对于每个宏块,帧间预测包括下列步骤I)读取当前宏块相应的运动矢量;2)根据运动矢量读取参考图像;包括下列子步骤21)将当前宏块划分为与运动矢量相应的若干子块进行运动补偿,22)对于每个子块,当运动矢量所指向的位置超出帧边界时,从外存中读取参考图像中位于帧边界内的数据,然后根据运动矢量和所读取的位于帧边界内的数据进行数据增补,从而得到完整的参考图像。3)根据参考图像和运动矢量进行插值运算,恢复出当前宏块。其中,所述步骤I)中,还包括从AVS码流中读取当前宏块的子块划分模式;所述步骤21)中,按照所读取的当前宏块的子块划分模式划分子块。其中,所述步骤22)中,运动矢量所指向的参考数据超出参考图像左边界时,用参考图像最左边一 列像素的数值进行数据增补。其中,所述步骤22)中,运动矢量所指向的参考数据超出参考图像右边界时,用参考图像最右边一列像素的数值进行数据增补。其中,所述步骤22)中,运动矢量所指向的参考数据超出参考图像上边界时,用参考图像最上边一行的数值进行数据增补。其中,所述步骤22)中,运动矢量所指向的参考数据超出参考图像下边界时,用参考图像最下边一行的数值进行数据增补。其中,所述步骤22)中,运动矢量所指向的参考数据超出参考图像的位置位于左上、左下、右上、右下时,分别用参考图像左上角点、左下角点、右上角点、右下角点像素的值进行数据增补。与现有技术相比,本发明具有下列技术效果I、大大减少了访问外存所占的带宽。2、能够减少访问外存的次数。3、减少了存储参考帧所占用的外存空间。
图I示出了 AVS标准中一个宏块的子块划分模式;图2示出了每个子块读取参考图像时出现的重复的交叠数据;实线方框表示需要进行运动补偿的子块,虚线方框表示子块所对应的参考图像,灰色部分表示重复的交叠数据;图3示出了 AVS标准中的亮度块插值示意图;图4示出了 AVS标准中的色度块插值示意图;图5示出了本发明实施例5中的数据交织结构示意图;图6示出了本发明实施例6中的数据增补结构示意图。
具体实施例方式下面,结合附图和实施例对本发明做进一步地描述。实施例I根据本发明的一个实施例,提供了一种基于AVS的帧间预测方法。该方法中,解码器将需要进行帧间预测的帧分为若干个宏块,依次对每个宏块进行帧间预测。对于每个宏块,帧间预测过程包括下列步骤第一步从AVS码流中读取当前宏块的模式和相应的运动矢量;第二步根据当前宏块的模式和运动矢量从外存中读取进行帧间预测所需的参考图像;第三步根据参考图像和运动矢量进行插值运算,恢复出当前宏块。下面分别详细介绍上述步骤。—、从AVS码流中读取当前宏块的划分模式和相应的运动矢量在AVS标准中,单个宏块可划分为1个16X16亮度块和相应的色度块,2个16X8亮度块和相应的色度块,2个8 X 16亮度块和相应的色度块,或者4个8 X 8亮度块和相应的色度块。其划分模式可从AVS码流中读出。同时还读出每个亮度块和色度块均对应各自的运动矢量,以便用于运动补偿(即帧间预测)。二、根据当前宏块的模式和运动矢量从外存中读取进行帧间预测所需的参考图像本实施例采用了块间数据重用的方式从外存中读取参考图像,这样可以避免在一个宏块中重复读取部分交叠的参考数据,能够有效地降低访问外存的带宽(访存带宽)。
AVS标准中,一个宏块包括亮度块(Y)和色度块(Cb和Cr),亮度块(Y)和色度块(Cb和Cr)均需要进行运动补偿以得出帧间预测结果。AVS标准中采用树状变块尺寸运动补偿,最小块尺寸为8X8块,需要读取12X12的参考数据。如果统一成8X8块进行运动补偿,在进行双向预测时,需要读取12X12X4X2 = 1152bytes的数据量。而实际上,任何两个8X8块所对应的12X12的参考数据均存在交叠部分(如图2所示),即存在重复读取的数据,这样就消耗了更多的访存带宽。因此,本实施例设计了数据重用机制,使得在进行插值运算时,能够重用两个8X8块的参考数据之间的交叠部分。本实施例40 X 96 (40行96列)大小的缓存mem,mem在亚像素插值亮度和色度时共用。对于亮度块,缓存mem的地址空间分配如下I). 0 11行用于存储前向block 0或block 2,以及交叠列的部分数据;2). 12 23行用于存储后向block 0或block 2,以及交叠列的部分数据;3). 24 27行用于存储前向block I的交叠行的部分数据;4). 28 31行用于存储后向block I的交叠行的部分数据。这样,第一个8X8亮度块插值时,仍然从外存中读取其对应的12X12的参考数据,其它8X8亮度块插值时,则从缓存mem的相应地址中读取部分参考数据,而从外存中读取其余参考数据。这样就大大节省了解码器的访存带宽。对于色度块Cb,缓存mem的地址空间分配如下I). 0 4行存储色度Cb前向的block 0的数据;2) 5 9行存储色度Cb后向的block 0的数据;3). 10 14行存储色度Cb前向的block I的数据;4) 15 19行存储色度Cb后向的block I的数据;5) 20 24行存储色度Cb前向的block 2的数据;6) 25 29行存储色度Cb后向的block 2的数据;7) 30 34行存储色度Cb前向的block 3的数据;8). 35 39行存储色度Cb后向的block 3的数据。对于色度块Cr,缓存mem的地址空间分配如下I) 0 4行存储色度Cr前向的block 0的数据;2) 5 9行存储色度Cr后向的block 0的数据;3). 10 14行存储色度Cr前向的block I的数据;4). 15 19行存储色度Cr后向的block I的数据;5) 20 24行存储色度Cr前向的block 2的数据;6) 25 29行存储色度Cr后向的block 2的数据;7) 30 34行存储色度Cr前向的block 3的数据;
8). 35 39行存储色度Cr后向的block 3的数据。
于亮度块的插值类似,对第一个色度块插值时,从外存中读取所需的全部参考数据。对其它色度块插值时,则从缓存mem的相应地址中读取部分参考数据,而从外存中读取其余参考数据,从而节省解码器的访存带宽。三、根据参考图像和运动矢量进行插值运算,恢复出当前宏块。在读取全部参考数据和运动矢量后,即可根据AVS标准9. 9. 2. I部分的描述进行插值运算,依次恢复当前宏块的每个亮度块和色度块,从而恢复出整个当前宏块。此时,对当前宏块的帧间预测完成。实施例2根据本发明的实施例2,提供了一种基于AVS的帧间预测方法。该方法中,解码器将需要进行帧间预测的帧分为若干个宏块,依次对每个宏块进行帧间预测。对于每个宏块,帧间预测过程包括下列步骤第一步从AVS码流中读取当前宏块的模式和相应的运动矢量;第二步根据当前宏块的模式和运动矢量从外存中读取进行帧间预测所需的参考图像;第三步根据参考图像和运动矢量进行插值运算,恢复出当前宏块。其中,第一步、第三步均与实施例I 一致,不再赘述。第二步中,本实施例采用变块尺寸读取的方式从外存中读取参考数据。从AVS标准9. 9. 2. I部分中,可以看出,在进行亚像素插值时,对于不同的运动矢量和不同的亚像素插值位置,需要的参考数据的个数是截然不同的。例如在插值整像素样本,只需要8X8的参考数据,而插值1/4像素样本,则需要11X11的参考数据。本实施例将插值位置分为6种不同的类型,每种类型需要的参考数据量是不同的,但在解码过程中,只有其中的一种类型在同一时刻被执行。因此可以根据运动矢量的值,判断此次属于何种插值类型,从而决定本次的访存量,以达到减小带宽的目的。亮度块的变块尺寸读取如图3所示,AVS标准中各插值点(即插值位置)所需的参考像素数目如下对于D点的插值,需要的参考像素为(0,0),相应8X8块的插值需要的参考像素矩阵大小为8X8 ;对于b点的插值,需要的参考像素为(_1,0),(0,0),(1,0),(2,0),相应8X8块的插值需要的参考像素矩阵大小为11X8 ;对于h点的插值,需要的参考像素为(0,_1),(0,0),(0,1),(0,2),对应8X8块的插值需要的参考像素矩阵大小为8X11 ;对于j 点的插值,需要的参考像素为(-1,-1),(0,-1), (1,-1), (2,-1), (-1,0),(0,0), (1,0), (2,0), (-1,1), (0,1), (1,1), (2,1), (-1,2), (0,2), (1,2), (2,2),对应 8X8
块的插值需要的参考像素矩阵大小为11X11 ;对于a点的插值,需要的参考像素为(-2,0), (-1,0), (0,0), (1,0), (2,0),对应8X8块的插值需要的参考像素矩阵大小为12X8 ;对于c点的插值,需要的参考像素为(-1,0), (0,0), (1,0), (2,0), (3,0),对应8X8块的插值需要的参考像素矩阵大小为12X8 ;
对于d点的插值,需要的参考像素为(0,-2),(0,-1),(0,0), (0,1), (0,2),对应8X8块的插值需要的参考像素矩阵大小为8X12 ;对于n点的插值,需要的参考像素为(0,-1),(0,0), (0,1), (0,2), (0,3),对应8X8块的插值需要的参考像素矩阵大小为8X12 ;对于e,g,p,r点的插值,需要的参考像素与j点相同,对应8X8块的插值需要的参考像素矩阵大小为11X11 ;对于f 点的插值,需要的参考像素为(_1,_2), (0, -2), (I, -2), (2, _2), (-1, -I),(0,-1), (1,-1), (2,-1), (-1,0), (0,0), (1,0), (2,0), (-1,1), (0,1), (1,1), (2,1), (-1,2),(0,2), (1,2), (2,2),对应8X8块的插值需要的参考像素矩阵大小为11X12 ;对于i 点的插值,需要的参考像素为(-2,-1), (-2,0), (_2,1), (-2,2), (-1,-1),(-1,0), (-1,1), (-1,2), (0,-1),(0,0), (0,1), (0,2), (I, -I), (1,0), (1,1), (1,2),(2,-1),(2,0), (2,1), (2,2),对应8X8块的插值需要的参考像素矩阵大小为12X11;对于k 点的插值,需要的参考像素为(_1,-1), (-1,0), (-1,1), (-1,2), (0,-1),(0,0), (0,1), (0,2), (1,-1), (1,0), (1,1), (1,2), (2,-1), (2,0), (2,1), (2,2), (3,-1),(3,0), (3,1), (3,2),对应8X8块的插值需要的参考像素矩阵大小为12X11;对于q 点的插值,需要的参考像素为(-1,-1),(0,-1), (1,-1), (2,-1), (-1,0),(0,0), (1,0), (2,0), (-1,1), (0,1), (1,1), (2,1), (-1,2), (0,2), (1,2), (2,2), (-1,3),(0,3), (1,3), (2,3),对应8X8块的插值需要的参考像素矩阵大小为11X12。在读取外存的过程中,为了减少对外存的访问量,本实施例对读取的尺寸做出一定的优化。在亮度插值中,不同插值位置所需像素个数不同,如果采用最大像素个数,自然能满足要求,但这样增加了外存的访问量。本实施例为了节省外存的带宽,根据运动矢量得出当前块的插值位置,对不同插值位置,分别调整所申请的外存的line(行)和size(本发明中size代表列)的大小。表3给出了在亮度申请外存情况下,设定每次向外存申请的基础块大小为8X8,同时对不同运动矢量分别设定对应不同的申请外存的行、列增量。由基础块行、列加上对应的增量行、列便可得到本次申请的行、列信息。通过深入研究,本实施例总结出如下规律公式I).请求外存的列数增量_req_plus_wid
权利要求
1.一种基于AVS的帧间预测方法,该方法包括将需要进行帧间预测的帧分为若干个宏块,依次对每个宏块进行帧间预测,对于每个宏块,帧间预测包括下列步骤 1)读取当前宏块相应的运动矢量; 2)将当前宏块划分为与运动矢量相应的若干子块进行运动补偿, 3)对于每个子块,当运动矢量所指向的位置超出帧边界时,从外存中读取参考图像中位于帧边界内的数据,然后根据运动矢量和所读取的位于帧边界内的数据进行数据增补,从而得到完整的参考图像。
4)根据参考图像和运动矢量进行插值运算,恢复出当前宏块。
2.根据权利要求I所述的基于AVS的帧间预测方法,其特征在于,所述步骤I)中,还包括从AVS码流中读取当前宏块的子块划分模式; 所述步骤2)中,按照所读取的当前宏块的子块划分模式划分子块。
3.根据权利要求I所述的基于AVS的帧间预测方法,其特征在于,所述步骤3)中,运动矢量所指向的参考数据超出参考图像左边界时,用参考图像最左边一列像素的数值进行数据增补。
4.根据权利要求I所述的基于AVS的帧间预测方法,其特征在于,所述步骤3)中,运动矢量所指向的参考数据超出参考图像右边界时,用参考图像最右边一列像素的数值进行数据增补。
5.根据权利要求I所述的基于AVS的帧间预测方法,其特征在于,所述步骤3)中,运动矢量所指向的参考数据超出参考图像上边界时,用参考图像最上边一行的数值进行数据增补。
6.根据权利要求I所述的基于AVS的帧间预测方法,其特征在于,所述步骤3)中,运动矢量所指向的参考数据超出参考图像下边界时,用参考图像最下边一行的数值进行数据增补。
7.根据权利要求I所述的基于AVS的帧间预测方法,其特征在于,所述步骤3)中,运动矢量所指向的参考数据超出参考图像的位置位于左上、左下、右上、右下时,分别用参考图像左上角点、左下角点、右上角点、右下角点像素的值进行数据增补。
全文摘要
本发明提供一种基于AVS的帧间预测方法,该方法包括将需要进行帧间预测的帧分为若干个宏块,依次对每个宏块进行帧间预测,对于每个宏块,帧间预测包括下列步骤读取当前宏块相应的运动矢量;将当前宏块划分为与运动矢量相应的若干子块进行运动补偿,对于每个子块,当运动矢量所指向的位置超出帧边界时,从外存中读取参考图像中位于帧边界内的数据,然后根据运动矢量和所读取的位于帧边界内的数据进行数据增补,从而得到完整的参考图像。根据参考图像和运动矢量进行插值运算,恢复出当前宏块。本发明具有下列技术效果大大减少了访问外存所占的带宽。能够减少访问外存的次数。减少了存储参考帧所占用的外存空间。
文档编号H04N7/46GK102625091SQ201110029730
公开日2012年8月1日 申请日期2011年1月27日 优先权日2011年1月27日
发明者呼大明, 宋益波, 邓磊, 郑海鸥, 陈淼 申请人:联合信源数字音视频技术(北京)有限公司