一种帧内图像的亮度预测编码方法
技术领域
本发明属于视频及图像编解码领域,特别涉及视频帧内图像基于空域预测的编解码技术。
背景技术
视频编码是计算机科学领域的热点问题,它旨在发现数字视频的最有效的编码格式。在视频编码中,常把视频图像分为帧内图像和帧间图像两种。其中,帧内图像的视频编码仅使用图像自身提供的信息进行空间上的预测,它的编解码不依赖于其他图像,可以单独解码;而帧间图像的编码要消除的是视频在时间域上的冗余信息,它的编解码依赖于它之前的一个或多个图像。对帧内图像进行视频编码时,因为在帧内图像中,相邻图像块的像素具有很大的空域相关性,所以需要采用空域预测编码方法以提高编码效率。空域预测编码方法包括帧内色度预测编码和帧内亮度预测编码,其主要思想是以图像中当前待预测块的相邻块作为参考像素点,并根据参考像素点的值以不同的方向预测待预测块的像素值,其中待预测块是指没有进行压缩编码的原始数据块。
在MPEG-4Part10,即H.264的视频编码标准中,是以宏块为单位进行编码的,而对宏块进行帧内亮度预测编码包括一类4×4块预测编码模式,即将一个宏块划分为多个4×4像素大小的子块,将每一个子块分别作为待预测块。在H.264的视频编码标准中,4×4块预测编码模式具体包括9种预测模式:8种基于方向的预测和DC预测。在图1中,用除2之外的0~8际识出了8个预测方向,基于这8个方向的预测分别为:VERT_4×4_PRED、HOR_4×4_PRED、DOWN_LEFT_4×4_PRED、DOWN_RIGHT_4×4_PRED、VERT_RIGHT_4×4_PRED、HOR_DOWN_4×4_PRED、VER_LEFT_4×4_PRED、HOR_UP_4×4_PRED,而DC预测在H.264中称为DC_4×4_PRED。
帧内图像的亮度预测编码方法总体上可分为两部分:一部分是建立待预测块的参考像素点,另一部分是根据所建立的参考像素点对待预测块进行预测编码。如图2所示,用小写字母a~p表示一个4×4大小的待预测块,则对于该待预测块,前述的H.264中4×4块模式中的9种预测模式中所有可能用到的参考像素点共有17个,用大写字母A~P以及X来示出。这17个参考像素点可分为五类,包括:左上角参考像素点(X)、正上块参考像素点(A、B、C、D)、右上块参考像素点(E、F、G、H)、正左块参考像素点(I、J、K、L)、左下块参考像素点(M、N、O、P)。
事实上,在对一个待预测块进行预测时,前述的17个参考像素点并不一定都是可用的。图3示出了图像中的一个16×16的宏块,其中用数字1~16标识出16个待预测的4×4子块,现有的视频编码在宏块级是按照图3中所示出的子块块号1~16的顺序进行编码的。参考图2,现有的参考像素点建立通常包括如下步骤:
1)根据待预测块的位置信息,判断其正上块(即图2中“A”、“B”、“C”、“D”位置)的参考像素点是否可用,若正上块参考像素点可用,则获取这些参考像素点的值。然后,在待预测块正上块参考像素点可用的情况下判断待预测块的右上块(即图3中“E”、“F”、“G”、“H”位置)参考像素点是否可用,如果可用,直接获取这些参考像素点的值,如果不可用,则用正上块参考像素点的值扩展得到右上块参考像素点的像素。
2)根据待预测块的位置信息,判断其正左块(即图2中“I”、“J”、“K”、“L”位置)的参考像素点是否可用,若正左块参考像素点可用,则获取这些参考像素点的值。然后,在待预测块正左块参考像素点可用的情况下判断待预测块的左下块(即图2中“M”、“N”、“O”、“P”位置)参考像素点是否可用,如果可用,直接获取这些参考像素点的值,如果不可用,则用正左块参考像素点的值扩展得到左下块参考像素点的像素。
从上述描述可知,在建立待预测块的参考像素点时,需要判断待预测块右上块参考像素点和左下块参考像素点的可用情况,但是这种判断通常是非常复杂的。下面结合图2来分析图3中子块的右上块和左下块参考像素点的可用情况。考虑右上块参考像素点,对于位于宏块上边界的子块,即图3中编号为1、2、5和6的子块,其右上参考像素点是否可用依赖于宏块本身是否处于图像上边缘或片的边缘。其中,一幅图像可以分为多片进行编码,在编码时片之间的像素相互之间不能够进行参考,片的边缘就是两侧像素不属于同一个片的那些位置。此外子块6的右上块是否可用还要看宏块是否处于图像右边缘或片的边缘;而宏块中编号为4、8、12、14、16子块的右上块参考像素点总是不可用的,这是因为按照子块的编码顺序,这些子块的右上块像素点总是在其后才进行编码的。考虑左下参考像素点,对于位于宏块左边界上的子块,即图4中编号为1、3和9的子块,其左下参考像素是否可用依赖于宏块本身是否处于图像左边缘或片的边缘;而宏块中编号为2、6、10、11、12、14、15和16的子块的左下块参考像素点总是不可用的,这是因为按照子块的编码顺序,这些子块的左下块像素点总是在其后才进行编码的。
根据前述分析可知,待预测块的右上块参考像素点和左下块参考像素点是否可用,需要进行一系列的判断,例如需要判断待预测块在宏块内的位置以及待预测所在宏块在整个图像中的位置等等。这些判断使得亮度预测编码的过程非常复杂,尤其是在用硬件实现亮度预测编码时,会使得编码芯片的复杂度非常高。
发明内容
本发明的目的是提供一种帧内图像的亮度预测编码方法,以简化待预测块的参考像素点的建立过程。
为了实现上述目的,本发明提供的一种帧内图像的亮度预测编码方法,包括建立待预测块的参考像素点步骤和根据所述参考像素点进行待预测块的亮度预测步骤;在所述建立待预测块的参考像素点步骤中:
当所述待预测块的正上块参考像素点可用时,直接用所述正上块参考像素点的像素值扩展得到所述待预测块的右上块参考像素点的像素值;
当所述待预测块的正左块参考像素点可用时,直接用所述正左块参考像素点的像素值扩展得到所述待预测块的左下块参考像素点的像素值。
上述技术方案中,所述的用正上块参考像素点的像素值扩展是将正上块最右边的参考像素点的像素值代替待预测块的右上块参考像素点的像素值。
上述技术方案中,所述的用正左块参考像素点的像素值扩展是将正左块最下边的参考像素点的像素值代替待预测块的左下块参考像素点的像素值。
本发明的帧内亮度预测编码方法在建立待预测的参考像素点时,省去了对待预测块的右上块和左下块的参考像素点的可用性判断,降低了编码的运算量和复杂度,这特别有利于用硬件实现亮度预测编码。而且,事实上,待预测块的右上块和左下块的参考像素点仅在很少的情况下可用,本发明方法直接舍去了对这种低可能性的判断,对编码性能的影响很小,不会明显降低视频质量。
附图说明
图1为4×4块帧内亮度预测模式的8个预测方向;
图2为4×4块预测时待预测块与参考像素点的位置;
图3为宏块亮度分量4×4块预测编码时的次序;
图4为本发明方法中4×4块预测时待预测块与参考像素点的位置;
图5为根据参考像素点对待预测块进行帧内亮度预测的流程图。
具体实施方式
下面参照附图和具体实施方式对本发明做详细说明。
帧内亮度预测编码方法总体上包括:建立待预测块的参考像素点步骤和根据参考像素点进行待预测块的亮度预测步骤。本发明是要对参考像素点的建立进行改进,结合图4,在本发明的一个实施例中,建立待预测块的参考像素点步骤包括以下步骤:
a)根据待预测块的位置信息,判断待预测块的正上块参考像素点(图4中“A”、“B”、“C”、“D”位置的像素)是否可用。
如果正上块参考像素点可用,取得相应位置像素点的值作为参考像素,同时用正上块参考像素点的像素值扩展得到待预测块的右上块参考像素点的像素值。如图4所示的实施例中,待预测块的右上块参考像素点的像素值直接用正上块参考像素点最右边像素点“D”的像素值来代替。可以看出,与现有技术不同,在本发明中,在正上块参考像素点可用时,不去判断待预测块的右上块参考像素点的可用性,而是直接用正上块参考像素点扩展得到右上块参考像素点的像素值。
如果待预测块的正上块参考像素点不可用,则其右上块参考像素点也不可用。在一个的实施例中,在正上块参考像素点不可用时,可将128设定为正上块参考像素点“A”、“B”、“C”、“D”的像素值,这种设定方便于在正上块参考像素点不可用时采用DC预测,这是本领域的技术人员所熟知的。
b)根据待预测块的位置信息,判断待预测块的正左块参考像素点(图4中“I”、“J”、“K”、“L”位置的像素)是否可用。
如果正左块参考像素点可用,取得相应位置像素点的值作为参考像素,同时用正左块参考像素点的像素值扩展得到待预测块的左下块参考像素点的像素值。如图4所示的实施例中,待预测块的左下块参考像素点的像素值直接用正左块参考像素点最下方像素点“L”的像素值来代替。可以看出,与现有技术不同,在本发明中,在正左块参考像素点可用时,不去判断待预测块的左下块参考像素点的可用性,而是直接用正左块参考像素点扩展得到左下块参考像素点的像素值。
如果待预测块的正左块参考像素点不可用,则其左下块参考像素点也不可用。在一个的实施例中,在正左块参考像素点不可用时,可将128设定为正左块参考像素点“A”、“B”、“C”、“D”的像素值,这种设定方便于在正左块参考像素点不可用时采用DC预测,这是本领域的技术人员所熟知的。
得到待预测块的参考像素点后,则可根据参考像素点进行待预测块的亮度预测的各个后续步骤,这是本领域的技术人员所熟知的常规方法,下面参考图5对这些后续步骤进行简要说明。
如图5所示,步骤10、利用某一种亮度预测模式对亮度块进行4×4预测,若该亮度预测模式在做亮度预测时所需的参考像素点不可用,则终止该亮度预测模式,跳转到步骤50,否则在做完亮度预测后进入下一步。
步骤20、计算预测残差。残差是指将待预测块的像素值与预测块的像素值作差所得到的结果。
步骤30、对残差进行DCT变换和量化处理,得到残差系数。
步骤40、对残差系数做熵编码。
步骤50、判断是否做完了所有可能的预测模式,若还有可能的预测模式,则跳转到步骤10,若不再有新的可能预测模式,则进入下一步。
步骤60、对所有结果做率失真优化选择,输出最佳模式和残差系数的编码。
本发明在建立待预测块的参考像素点时省去了对右上块和左下块的参考像素点可用性的复杂判断过程,由此降低了亮度预测编码时的所需要的操作数或者说运算量。表1示出了在一个实施例中分别用现有技术和本发明的参考像素点的建立方法对两副图像进行亮度预测编码时所需操作次数的区别。在表1中,两副图像分别为176×144像素大小的Qcif和352×288像素大小的Cif;表1的第2列示出了处于不同位置宏块占整个图像宏块总数的比例;表1的第3列示出了现有技术中对各种位置的宏块进行编码时所需要的操作次数;表1的第4列示出了本发明对宏块进行编码时所需要的操作次数;表1的第5列示出了对于各种位置的宏块采用本发明的方法进行编码时所需要的操作次数与现有技术相比的比例;表1的第6列示出了对于一整副图像,本发明和现有技术进行亮度预测编码所需操作次数的比例。
表1
图像大小 |
宏块位置 |
现有技术 |
本发明 |
比例 |
平均 |
Qcif176×144 |
非边界80.8% |
145 |
69 |
48% |
49.6% |
左边界8.1% |
122 |
69 |
57% |
上边界10.1% |
126 |
69 |
55% |
左上角1% |
103 |
69 |
67% |
Cif352×288 |
非边界90.1% |
145 |
69 |
48% |
48.8% |
左边界4.3% |
122 |
69 |
57% |
上边界5.3% |
126 |
69 |
55% |
左上角0.3% |
103 |
69 |
67% |
从表1可以看出,采用本发明的方法进行亮度预测编码时,其所需要的操作次数明显降低,大大降低了帧内亮度预测视频的操作次数运算量和复杂度。从表1还可以看出,图像分辨率越高,本发明的方法所降低的操作次数比例就越高。
应当理解,本发明的帧内图像的亮度预测编码方法不仅可以用于H.264视频编码标准,也可以用于其他的诸如AVS等视频编码标准中,本领域的技术人员很容易用本发明的方法来简化其他视频编码标准中参考像素点的建立。