专利名称:一种帧内预测模式的预测方法
技术领域:
本发明涉及视频压缩技术,特别涉及一种帧内预测模式的预测方法。
背景技术:
在现行的视频压缩标准中,帧内编码被广泛使用。帧内编码利用同一帧中像素的空间相关性来去除冗余,而且由于不用相邻时域帧做参考,所以可以有效的阻止错误的帧间传播,被用作参考帧和立即刷新帧。
在最新的H.264/AVC视频压缩标准中对于4x4亮度块的定义了9种帧内方向预测模式。同以往的视频压缩标准如H.261、MPEG-2、H.263、MPEG-4等相比较,新标准采用了更多的帧内预测模式,所以使得帧内编码的效率得到提高。但是由于需要将具体采用的帧内预测模式编码后发送给解码端,因此为了表示每个帧内编码块所采用的方向预测模式就需要大量的比特。以4x4亮度块为例,在不做任何优化的条件下为了表示9种预测模式,每个编码块需要4比特开销来传输预测模式。对于整幅图像来说这种开销极大的降低了压缩效率。所以,在H.264/AVC编码标准中对帧内预测模式采用预测编码的方式来减少比特开销。
在目前的H.264/AVC标准中,首先对采用的帧内预测模式进行预测,确定最有可能的预测模式,然后,根据预测得到的最有可能的预测模式与实际采用的预测模式间的关系,进行预测模式的编码。
具体地,如果预测得到的最有可能预测模式与实际采用的预测模式一致,则只需要1比特来表示预测模式信息,即告知解码器采用预测得到的最有可能预测模式作为当前解码块所选择的模式;如果预测得到的最有可能预测模式与实际采用的预测模式不同,除使用1比特表示实际采用的预测模式与最有可能的预测模式不同之外,还需要额外的比特来表示实际采用的预测模式,在这种情况下又分为两种情况当实际采用的预测模式序号比最有可能预测模式的序号小时,直接对实际预测模式信息进行编码;当实际采用的预测模式序号比最有可能预测模式的序号大时,对实际采用的预测模式序号减1后进行编码。通过这样的处理,编码预测模式仅需3比特。
由上述可见,如果对帧内预测模式的预测准确,即最有可能编码模式与当前4x4块实际采用的预测模式相同,那么仅需1比特来表示当前块的预测模式信息。相反,如果预测错误,那么需要4比特来表示实际采用的预测模式。可见,对帧内预测模式的预测结果是否准确,会直接影响帧内编码的压缩效率。
在目前的H.264/AVC标准中,对采用的帧内预测模式进行预测的方式为将9种帧内预测模式的序号从0到8按概率从大到小排列,如果当前4x4块的上方和左边块都采用4x4帧内预测编码方式,那么就将上方和左边4x4块中所采用的预测模式序号小的作为当前块的最有可能预测模式。同样的,在解码端也采用如此方法来计算最有可能预测模式。所以,不难理解在解码端和编码端可以得到相同的最有可能预测模式。
上述预测方式仅考虑了上方和左边的已编码块,并且预测方式较为简单,使得预测结果与实际采用的预测模式相同的概率不大。
发明内容
有鉴于此,本发明提供一种帧内预测模式的预测方法,能够提高预测结果与实际采用的预测模式相同的概率,从而减少了编码帧内预测模式的开销,提高了帧内编码的压缩效率。
为实现上述目的,本发明采用如下的技术方案 一种帧内预测模式的预测方法,包括 A、根据当前编码块的相邻已编码块,设置当前编码块的邻域预测模板及所述邻域预测模板的参考像素;其中,将当前编码块的左上角像素位置设为坐标(0,0),水平方向的X轴向右为正,垂直方向的Y轴向下为正, 若当前编码块为图像上方第一行,将位于(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的8个像素作为当前编码块的邻域预测模板,将位于(-3,0)、(-3,1)、(-3,2)、(-3,3)的4个像素作为所述参考像素; 若当前编码块位于图像最右边且非图像上方第一行,将位于(-2,-2)、(-1,-2)、(0,-2)、(1,-2)、(2,-2)、(3,-2)、(-2,-1)、(-1,-1)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的20个像素作为当前编码块的邻域预测模板,将位于(-3,-3)、(-2,-3)、(-1,-3)、(0,-3)、(1,-3)、(2,-3)、(3,-3)、(-3,-2)、(-3,-1)、(-3,0)、(-3,1)、(-3,2)、(-3,3)的13个像素作为所述参考像素; 若当前编码块位于图像最左边且非图像上方第一行,将位于(0,-2)、(1,-2)、(2,-2)、(3,-2)、(4,-2)、(5,-2)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(4,-1)、(5,-1)的12个像素作为当前编码块的邻域预测模板,将位于(0,-3)、(1,-3)、(2,-3)、(3,-3)、(4,-3)、(5,-3)、(6,-3)、(7,-3)的8个像素作为所述参考像素; 若当前编码块不位于图像的第一行、或最右边、或最左边,且不是图像的第一个编码块,则将位于(-2,-2)、(-1,-2)、(0,-2)、(1,-2)、(2,-2)、(3,-2)、(4,-2)、(5,-2)、(-2,-1)、(-1,-1)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(4,-1)、(5,-1)、(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的24个像素作为当前编码块的邻域预测模板,将位于(-3,-3)、(-2,-3)、(-1,-3)、(0,-3)、(1,-3)、(2,-3)、(3,-3)、(4,-3)、(5,-3)、(6,-3)、(7,-3)、(-3,-2)、(-3,-1)、(-3,0)、(-3,1)、(-3,2)、(-3,3)的17个像素作为所述参考像素; B、根据所述当前编码块在图像中的位置确定可用的预测模式,并遍历所有可用的预测模式,在每种预测模式i下,利用邻域预测模板的参考像素,计算所述邻域预测模板中像素的预测值,并根据所述预测值与所述邻域预测模板中像素的实际值计算代价函数 将最小的代价函数值对应的预测模式作为预测结果;其中,predMode(i)(x,y)预测模式i下所述邻域预测模板中像素的预测值,x和y为邻域预测模板的坐标,templatePixel(x,y)为所述邻域预测模板中像素的实际值,templateSize为预测模式i下实际采用的邻域预测模板中的像素总数。
较佳地,位于图像第一行的非第一个当前编码块,可用的预测模式为预测模式1、2和8; 位于图像最右边且非第一行的当前编码块,可用的预测模式为预测模式0、2、3和7; 除位于图像第一行、图像最右边和图像第一个编码块之外的其他当前编码块,可用的预测模式为所有9种帧内预测模式。
由上述技术方案可见,本发明中,根据当前编码块的相邻已编码块,设置当前编码块的邻域预测模板及所述邻域预测模板的参考像素;然后,遍历当前编码块的所有可用预测模式,利用当前编码块的邻域预测模板,按照每种可用预测模式对参考像素进行预测,并根据得到的预测值与参考像素实际值进行比较,确定对所有参考像素的平均预测效果最佳的预测模式,将其作为当前编码块的预测模式。可见,不仅利用左边和上边的编码块,而是利用各种可用预测模式所涉及的相邻已编码像素,从而保证可以遍历各种可用的预测模式,并且根据各种可用预测模式下对邻域预测模板中像素的预测结果,选择平均预测效果最佳的一种预测模式作为当前编码块的预测模式,从而提高了预测模式的预测准确性,进而减少了编码帧内预测模式的开销,提高了帧内编码的压缩效率。
图1为本发明中帧内预测模式的预测方法流程图。
图2a为邻域预测模板和参考像素的示意图一。
图2b为邻域预测模板和参考像素的示意图二。
图2c为邻域预测模板和参考像素的示意图三。
图2d为邻域预测模板和参考像素的示意图四。
图3为foreman测试序列下,采用本发明方法计算的最有可能预测模式的正确率与H.264/AVC编码标准中计算的最有可能预测模式的正确率的性能比较示意图。
图4为foreman测试序列下,采用本发明的方法进行预测后再进行编码与H.264/AVC编码标准中编码预测模式的性能比较示意图。
具体实施例方式 为使本发明的目的、技术手段和优点更加清楚明白,以下结合附图对本发明做进一步详细说明。
本发明的基本思想是对各种可用的预测模式进行遍历,利用各种预测模式对已编码像素进行预测,根据预测结果与已编码像素的匹配程度,选择预测效果最佳的一种作为当前编码块的预测模式。
如前所述,在现有技术中,根据当前编码块的左边和上边相邻已编码块的预测模式来确定当前编码块的预测模式,并且在两个相邻已编码块采用的最多两种预测模式中选择一种,作为当前编码块的预测结果。
由于相邻编码块的像素相关性较大,因此本发明中同样根据相邻已编码块的预测当前编码块的预测模式。与现有技术不同的在于,本发明中会对所有可用的预测模式进行遍历,选择预测效果最佳的作为当前编码块的预测模式。
具体地,本发明中帧内预测模式的预测方法流程包括邻域预测模板和参考像素的确定,利用参考像素依次按照各种可用的预测模式对邻域预测模板中的像素进行预测,选择预测效果最佳的一种作为当前编码块的预测模式。
下面对本发明的具体实现做进一步详细说明。本发明中的帧内预测模式的预测方法是对除当前帧的第一个编码块之外的其他编码块进行预测的流程,图1为本发明中预测方式的流程图,如图1所示,该方法包括 步骤101,根据当前编码块的相邻已编码块,设置当前编码块的邻域预测模板及该邻域预测模板的参考像素。
本步骤中,邻域预测模板和参考像素是由当前编码块的相邻已编码块中的像素构成的。其中,参考像素是用于对邻域预测模板中的像素进行预测的已编码像素。
具体根据当前编码块的位置,确定邻域预测模板和参考像素的方式为 假定当前编码块的左上角像素位置设为坐标(0,0),水平方向的X轴向右为正,垂直方向的Y轴向下为正; 1)当当前编码块处于图像上方第一行时,仅相邻的左边相邻块已编码可作为参考,则将位于(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的8个像素作为当前编码块的邻域预测模板,将位于(-3,0)、(-3,1)、(-3,2)、(-3,3)的4个像素作为所述参考像素;具体的位置关系如图2a所示,领域预测模板由当前编码块左边相邻的8个像素构成,像素I-L作为参考像素; 2)当当前块处于图像最右边,即图像右边最后一列时,仅相邻的左边和正上方相邻块已编码可作为参考,则将位于(-2,-2)、(-1,-2)、(0,-2)、(1,-2)、(2,-2)、(3,-2)、(-2,-1)、(-1,-1)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的20个像素作为当前编码块的邻域预测模板,将位于(-3,-3)、(-2,-3)、(-1,-3)、(0,-3)、(1,-3)、(2,-3)、(3,-3)、(-3,-2)、(-3,-1)、(-3,0)、(-3,1)、(-3,2)、(-3,3)的13个像素作为参考像素;具体的位置关系如图2b所示,领域预测模板为20个像素构成的L型区域,A-D、I-Q作为参考像素; 3)当当前块处于图像最左边,即图像左边第一列时,仅相邻的正上方相邻块已编码可作为参考,或正上方相邻块和右上方相邻块同时可作为参考,则将位于(0,-2)、(1,-2)、(2,-2)、(3,-2)、(4,-2)、(5,-2)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(4,-1)、(5,-1)的12个像素作为当前编码块的邻域预测模板,将位于(0,-3)、(1,-3)、(2,-3)、(3,-3)、(4,-3)、(5,-3)、(6,-3)、(7,-3)的8个像素作为参考像素;具体的位置关系如图2c所示,邻域预测模板为当前编码宏块正上方和右上方相邻的12个像素,A-H作为参考像素;具体地,在当前编码块位于该图像最左边时,根据不同的预测模式,可能仅将正上方相邻块作为参考,这时,实际应用的领域预测模板为正上方相邻的8个像素,A-D作为相应的参考像素;或者,也可能将正上方相邻块和右上方相邻块同时作为参考,这时,实际应用的领域预测模板为正上方和右上方相邻12个像素构成的模板,A-H作为相应的参考像素; 4)当当前块处于图像中的其它位置时,左边、正上方和右上方的相邻块均可用作参考,则将位于(-2,-2)、(-1,-2)、(0,-2)、(1,-2)、(2,-2)、(3,-2)、(4,-2)、(5,-2)、(-2,-1)、(-1,-1)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(4,-1)、(5,-1)、(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的24个像素作为当前编码块的邻域预测模板,将位于(-3,-3)、(-2,-3)、(-1,-3)、(0,-3)、(1,-3)、(2,-3)、(3,-3)、(4,-3)、(5,-3)、(6,-3)、(7,-3)、(-3,-2)、(-3,-1)、(-3,0)、(-3,1)、(-3,2)、(-3,3)的17个像素作为参考像素;具体的位置关系如图2d所示,领域预测模板为24个像素构成的L型区域,A-Q作为参考像素;与前一种情况类似,根据不同的预测模式,实际采用的邻域预测模板与参考像素会有所差别,可以根据现有的各种预测模式来进行实际的邻域预测模板与参考像素的选择。
在上述4种当前编码块的位置上,设置邻域预测模板和参考像素的过程中,之所以进行上述方式的设置,一方面考虑到不同预测模式下,实际采用的邻域预测模板不会完全相同,从而能够体现出不同预测模式的性能差异,另一方面尽量避免利用过多的已编码像素进行预测,以降低实现复杂度。
步骤102,根据当前编码块在图像中的位置确定可用的预测模式。
如前所述,帧内预测模式共有9种,但对于某些位置上的编码块,并不是所有9种预测模式均可用,对于不可用的预测模式,就不需要对其进行遍历。本步骤即根据当前编码块在图像中的位置确定可用的预测模式。
具体地,对于上述步骤101的1)所述位置的编码块,可用的预测模式为1、2和8;对于上述步骤101的2)所述位置的编码块,可用的预测模式为2、3和7;对于其余位置的编码块,可用的预测模式为所有9种预测模式。
步骤103,遍历所有可用的预测模式,在每种预测模式下,利用当前编码块的邻域预测模板的参考像素,计算邻域预测模板中像素的预测值。
本步骤中,遍历所有可用的预测模式,在每种预测模式下,利用当前编码块的邻域预测模板的参考像素,计算邻域预测模板中像素的预测值。其中,在不同的预测模式下,需要在邻域预测模板像素中选择当前预测模式实际采用的像素,具体在每种预测模式下,预测值的计算方式和邻域预测模板中选择像素的方式与现有方式相同。
具体地,本步骤中,设邻域预测模板左上角像素位置为(0,0),pred4x4L[x,y]为在不同的预测模式下对邻域预测模板中的像素进行预测所得到的预测值,p[x,y]为参考像素值,其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
1)预测模式0 pred4x4L[x,y]=p[x,-1],其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
2)预测模式1 pred4x4L[x,y]=p[-1,y],其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
3)预测模式2 a)如果p[x,-1],x=0..3和p[-1,y],y=0..3都可用,则 pred4x4L[x,y]=(p
+p[1,-1]+p[2,-1]+p[3,-1]+ p[-1,0]+p[-1,1]+p[-1,2]+p[-1,3]+4)>>3 其中x,y=0..3。
b)如果p[x,-1],x=0..3不可用p[-1,y],y=0..3可用,则 pred4x4L[x,y]=(p[-1,0]+p[-1,1]+p[-1,2]+p[-1,3]+2)>>2 其中x,y=0..3。
c)如果p[x,-1],x=0..3可用p[-1,y],y=0..3不可用,则 pred4x4L[x,y]=(p
+p[1,-1]+p[2,-1]+p[3,-1]+2)>>2 其中x,y=0..3。
d)对于其它情况, pred4x4L[x,y]=(1<<(BitDepthY-1))为表示亮度的比特位数,如 其中BitDepthY为表示亮度的比特位数,如8比特表示时,pred4x4L[x,y]=8,其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
4)预测模式3 pred4x4L[x,y]=(p[x+y,-1]+2*p[x+y+1,-1]+ p[x+y+2,-1]+2)>>2,其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
5)预测模式4 a)如果x>y, pred4x4L[x,y]=(p[x-y-2,-1]+2*p[x-y-1,-1]+ p[x-y,-1]+2)>>2, b)如果x<y, pred4x4L[x,y]=(p[-1,y-x-2]+2*p[-1,y-x-1]+ p[-1,y-x]+2)>>2 c)如果x=y, pred4x4L[x,y]=(p
+2*p[-1,-1]+p[-1,0]+2)>>2 其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
6)预测模式5 令zVR=2*x-y a)如果zVR=0、2、4、6、8、10、12、14, pred4x4L[x,y]=(p[x-(y>>1)-1,-1]+p[x-(y>>1),-1]+1)>>1 b)如果zVR=1、3、5、7、9、11、13, pred4x4L[x,y]=(p[x-(y>>1)-2,-1]+2*p[x-(y>>1)-1,-1]+ p[x-(y>>1),-1]+2)>>2 c)如果zVR=-1 pred4x4L[x,y]=(p[-1,0]+2*p[-1,-1]+p
+2)>>2 d)如果zVR=-2, pred4x4L[x,y]=(p[-1,1]+2*p[-1,0]+p[-1,-1]+2)>>2 e)如果zVR=-3, pred4x4L[x,y]=(p[-1,2]+2*p[-1,1]+p
+2)>>2 f)如果zVR=-4,-5, pred4x4L[x,y]=(p[-1,y-1]+2*p[-1,y-2]+p[-1,y-3]+2)>>2 其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
7)预测模式6 令zVR=2*y-x a)如果zVR=0、2、4、6、8、10, pred4x4L[x,y]=(p[-1,y-(x>>1)-1]+p[-1,y-(x>>1)]+1)>>1 b)如果zVR=1、3、5、7、9, pred4x4L[x,y]=(p[-1,y-(x>>1)-2]+ 2*p[-1,y-(x>>1)-1]+p[-1,y-(x>>1)]+2)>>2 c)如果zVR=-1, pred4x4L[x,y]=(p[-1,0]+2*p[-1,-1]+p
+2)>>2 d)如果zVR=-2, pred4x4L[x,y]=(p[1,-1]+2*p
+p[-1,-1]+2)>>2 c)如果zVR=-3, pred4x4L[x,y]=(p[2,-1]+2*p[1,-1]+p
+2)>>2 d)如果zVR=-4, pred4x4L[x,y]=(p[3,-1]+2*p[2,-1]+p[1,-1]+2)>>2 e)如果zVR=-5, pred4x4L[x,y]=(p[4,-1]+2*p[3,-1]+p[2,-1]+2)>>2 f)如果zVR=-6、-7, pred4x4L[x,y]=(p[x-1,-1]+2*p[x-2,-1]+p[x-3,-1]+2)>>2 其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
8)预测模式7 a)当y=0、2、4, pred4x4L[x,y]=(p[x+(y>>1),-1]+p[x+(y>>1)+1,-1]+1)>>1 b)当y=1、3、5, pred4x4L[x,y]=(p[x+(y>>1),-1]+2*p[x+(y>>1)+1,-1]+ p[x+(y>>1)+2,-1]+2)>>2 其中x,y的取值根据当前块所用的预测模板规定(参考上面的步骤2和图2)。
9)预测模式8 令zVR=x+2*y a)如果zVR=0、2、4、6、8, pred4x4L[x,y]=(p[-1,y+(x>>1)]+p[-1,y+(x>>1)+1]+1)>>1 b)如果zVR=1、3、5、7, pred4x4L[x,y]=(p[-1,y+(x>>1)]+2*p[-1,y+(x>>1)+1]+ p[-1,y+(x>>1)+2]+2)>>2 c)如果zVR=9, pred4x4L[x,y]=(p[-1,4]+3*p[-1,5]+2)>>2 c)如果zVR>9, pred4x4L[x,y]=p[-1,5] 其中x,y的取值根据当前编码块所用的邻域预测模板规定,即根据步骤101中的坐标转换而来。
至此,对于每种预测模式下,实际采用的邻域预测模板中像素的预测值计算完毕。
步骤104,根据邻域预测模板中像素的预测值和实际值,选择预测效果最佳的预测模式作为当前编码块的预测模式。
对邻域预测模板中像素的预测效果通过代价函数来表征,具体该代价函数为其中,i为预测模式的编号,x和y为邻域预测模板中像素的坐标,predMode(i)(x,y)预测模式i下邻域预测模板中像素的预测值,即前述步骤103中的pred4x4L[x,y],templatePixel(x,y)为所述邻域预测模板中像素的实际值,templateSize为预测模式i下实际采用的邻域预测模板中像素的总数。
在可用的预测模式中,使得代价函数最小的模式为预测值与实际值在统计意义上最接近的预测模式,也就是平均预测效果最优的预测模式,将该预测模式作为当前编码块的最有可能预测模式,即mostProbMode=arg min{Distortion(i)},mostProbMode即为最有可能预测模式,也就是按照本发明的方式确定的预测结果。
至此,本发明中的预测方法流程结束。接下来,可以根据预测结果,对当前编码块实际采用的预测模式进行编码,具体编码方式与现有方式相同,即当预测得到的最有可能的预测模式与实际采用的预测模式相同时,利用1比特传输该预测模式,否则,利用4比特传输实际采用的预测模式。
通过上述方式预测得到的最有可能的预测方式,由于利用了当前编码块的多个方向的相邻已编码块,并遍历了所有可用的编码模式,从而选择出预测效果最优的预测模式作为当前编码块的预测模式,因此使得其预测结果与当前编码块实际采用的预测模式相同的概率大大增加。从而进一步降低了预测模式的编码开销,提高了帧内编码的压缩效率。
为进一步说明本发明相对于现有技术的优点,在JM软件平台上对利用本发明进行预测并依据预测结果进行编码的方法进行了仿真,并与H.264/AVC在相同实验条件下进行了对比实验。在仿真过程中,设定全部序列采用4x4帧内预测编码模式,仿真结果如表1-表4所示。可以看出本发明方法在码率节省上有很大提高。
表1编码效率比较,图像大小CIF(352×288) 表2编码效率比较,图像大小CIF(352×288) 表3编码效率比较,图像大小CIF(352×288) 表4编码效率比较,图像大小4CIF(704×576) 图3为foreman测试序列下,采用本发明方法计算的最有可能预测模式的正确率与H.264/AVC编码标准中计算的最有可能预测模式的正确率的性能比较示意图。如图3所示,在两种典型的QP取值下,相对于H.264/AVC编码标准,本发明的预测方式准确性有明显的提高。
图4为foreman测试序列下,采用本发明的方法进行预测后再进行编码与H.264/AVC编码标准中编码预测模式的性能比较示意图。由图4可见,利用本发明的方法,在相同的码率下,使得整体的编码性能有了明显提高。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种帧内预测模式的预测方法,其特征在于,该方法包括
A、根据当前编码块的相邻已编码块,设置当前编码块的邻域预测模板及所述邻域预测模板的参考像素;其中,将当前编码块的左上角像素位置设为坐标(0,0),水平方向的X轴向右为正,垂直方向的Y轴向下为正,
若当前编码块为图像上方第一行,将位于(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的8个像素作为当前编码块的邻域预测模板,将位于(-3,0)、(-3,1)、(-3,2)、(-3,3)的4个像素作为所述参考像素;
若当前编码块位于图像最右边且非图像上方第一行,将位于(-2,-2)、(-1,-2)、(0,-2)、(1,-2)、(2,-2)、(3,-2)、(-2,-1)、(-1,-1)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的20个像素作为当前编码块的邻域预测模板,将位于(-3,-3)、(-2,-3)、(-1,-3)、(0,-3)、(1,-3)、(2,-3)、(3,-3)、(-3,-2)、(-3,-1)、(-3,0)、(-3,1)、(-3,2)、(-3,3)的13个像素作为所述参考像素;
若当前编码块位于图像最左边且非图像上方第一行,将位于(0,-2)、(1,-2)、(2,-2)、(3,-2)、(4,-2)、(5,-2)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(4,-1)、(5,-1)的12个像素作为当前编码块的邻域预测模板,将位于(0,-3)、(1,-3)、(2,-3)、(3,-3)、(4,-3)、(5,-3)、(6,-3)、(7,-3)的8个像素作为所述参考像素;
若当前编码块不位于图像的第一行、或最右边、或最左边,且不是图像的第一个编码块,则将位于(-2,-2)、(-1,-2)、(0,-2)、(1,-2)、(2,-2)、(3,-2)、(4,-2)、(5,-2)、(-2,-1)、(-1,-1)、(0,-1)、(1,-1)、(2,-1)、(3,-1)、(4,-1)、(5,-1)、(-1,0)、(-2,0)、(-1,1)、(-2,1)、(-1,2)、(-2,2)、(-1,3)、(-2,3)的24个像素作为当前编码块的邻域预测模板,将位于(-3,-3)、(-2,-3)、(-1,-3)、(0,-3)、(1,-3)、(2,-3)、(3,-3)、(4,-3)、(5,-3)、(6,-3)、(7,-3)、(-3,-2)、(-3,-1)、(-3,0)、(-3,1)、(-3,2)、(-3,3)的17个像素作为所述参考像素;
B、根据所述当前编码块在图像中的位置确定可用的预测模式,并遍历所有可用的预测模式,在每种预测模式i下,利用邻域预测模板的参考像素,计算所述邻域预测模板中像素的预测值,并根据所述预测值与所述邻域预测模板中像素的实际值计算代价函数
将最小的代价函数值对应的预测模式作为预测结果;其中,predMode(i)(x,y)预测模式i下所述邻域预测模板中像素的预测值,x和y为邻域预测模板的坐标,templatePixel(x,y)为所述邻域预测模板中像素的实际值,templateSize为预测模式i下实际采用的邻域预测模板中的像素总数。
2、根据权利要求1所述的方法,其特征在于,位于图像第一行的非第一个当前编码块,可用的预测模式为预测模式1、2和8;
位于图像最右边且非第一行的当前编码块,可用的预测模式为预测模式0、2、3和7;
除位于图像第一行、图像最右边和图像第一个编码块之外的其他当前编码块,可用的预测模式为所有9种帧内预测模式。
全文摘要
本发明公开了一种帧内预测模式的预测方法,包括根据当前编码块的相邻已编码块,设置当前编码块的邻域预测模板及所述邻域预测模板的参考像素;遍历当前编码块的所有可用预测模式,利用当前编码块的邻域预测模板,按照每种可用预测模式对参考像素进行预测,并根据得到的预测值与参考像素实际值进行比较,确定对所有参考像素的平均预测效果最佳的预测模式,将其作为当前编码块的预测模式。应用本发明,能够使帧内预测模式的预测更加准确,从而提高帧内编码的压缩效率。
文档编号H04N7/26GK101572818SQ200910085819
公开日2009年11月4日 申请日期2009年6月1日 优先权日2009年6月1日
发明者波 杨, 钰 韩, 门爱东, 侃 常, 张文豪, 宗晓飞, 陈晓博, 明阳阳, 睿 韩 申请人:北京邮电大学