具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
本发明实施例提出一种基于相关性分析的预测模式快速选择方法,根据块内边界像素与周围块的相关性,删除出现概率小的预测模式或者直接确定最优预测模式,从而达到减少预测模式遍历寻优的计算量,同时保持率失真性能的稳定性。
实施例一
图1是本发明优选实施例一种基于相关性分析的帧内预测模式快速选择方法流程图,所述方法包括:
S1061:计算当前编码块的方向相关系数。
(A)如果当前编码块的预测模式支持且仅支持h264的4x4帧内预测模式的所有预测方向,则计算当前编码块的垂直、水平、右对角、左对角方向相关系数,其计算方法如下:(h265已包含)
其中,cov、std、mean(变量|条件)分别表示求协方差、求均方差、对满足条件的变量求均值;Yb表示当前编码块的亮度值;Yb(i1,:)表示当前编码块的第i1行亮度值;Yb(i2,:)表示当前编码块的第i2行亮度值;Yb(:,j1)表示当前编码块的第j1列行亮度值;Yb(:,j2)表示当前编码块的第j2列行亮度值;Yb(i,j|条件)表示满足条件的当前编码块第i行第j列的亮度值;size(b)表示当前编码块行尺寸;rV、rH、rDDR、rDDL分别表示当前编码块的垂直、水平、右对角、左对角方向的相关系数,其下标分别表示相应的预测方向;rV,i1,i2、rH,j1,j2、rDDR,k1,k2、rDDL,k1,k2、分别表示垂直、水平、右对角、左对角方向的相关系数的中间变量;k1、k2分别表示第一、第二行列和差变量。V、H、DDL、DDR、VL、VR、HU、HD表示h264的4x4帧内预测模预测方向名称,也是相应的预测模式名称。
(B)如果当前编码块的预测模式仅支持h264的4x4帧内预测模式中的
一部分方向,则不支持的预测模式对应的相关方向相关系数不用计算,
即在相应的计算公式删除其中的相应变量。
例如h264的16x16的帧内预测只有V、H、DC、Plan四种预测模式(V、H、DC、Plan、表示h264的16x16帧内预测模预测方向名称,也是相应的预测模式名称),此时只需计算rV、rH,当前编码块的垂直、水平方向相关系数的计算方法如下:
(C)如果当前编码块的预测模式除了支持h264的4x4帧内预测模式中预测方向外,还支持更为细分的预测方向,则可选择方法一或者方法二。
方法一:采用步骤(A)中处理步骤即可。
方法二:计算步骤(A)中方向相关系数及细分方向的相关系数。
其中,“细分方向的相关系数”方法可按照步骤(A)中的方法将方向相关系数做类推。
下面举例说明细分方向相关系数的计算方法,例如编码块的预测模式除了包含HD外,还包含DDR与HD之间的预测方向、包含HD与H之间的预测方向,即在HD方向存在细分预测模式。用按照步骤(A)类似方法计算方向相关系数rHD(图3为h264的4x4帧内预测模式及其预测方向图,V、H、DDL、DDR、VL、VR、HU、HD表示方向名称),
,其中
rHD表示HD方向的相关系数,其下标分别表示相应的预测方向,rHD,k1,k2表示HD方向的相关系数的中间变量;k1、k2分别表示第一、第二行列和差变量。
S1062:根据当前编码块的方向相关系数的不同情况,选择相应的帧内预测模式作为最佳帧内预测模式候选集。
(a)如果当前编码块的预测模式支持且仅支持h264的4x4帧内预测模
式的所有预测方向,则
最佳帧内预测模式候选集
={max(rV,rH,rDDR,rDDL)对应的预测模式、相关系数等于2对应的预测模式}
最佳帧内预测模式候选集
={max(rV,rH,rDDR,rDDL)对应的预测模式、max less(rV,rH,rDDR,rDDL)对应的预测模式、以及位于上述两个预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
最佳帧内预测模式候选集
={max(rV,rH,rDDR,rDDL)对应的预测模式、位于上述预测方向与max less(rV,rH,rDDR,rDDL)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
则最佳帧内预测模式候选集
={max less(rV,rH,rDDR,rDDL)对应的预测模式、位于上述预测方向与max(rV,rH,rDDR,rDDL)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
则最佳帧内预测模式候选集
={位于max less(rV,rH,rDDR,rDDL)对应预测方向与max(rV,rH,rDDR,rDDL)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
情况6:如果上述情况都不满足,则最佳帧内预测模式候选集={所有预测模式}。
其中,max(变量)表示求不等于2变量的最大值;maxless(变量)表示求不等于2变量的次最大值;abs表示求绝对值;rinv_max表示垂直于max(rV,rH,rDDR,rDDL)对应预测方向上对应的相关系数;rinv_maxless表示垂直于max less(rV,rH,rDDR,rDDL)对应预测方向上对应的相关系数;Thres2表示第二判定阈值,Thres3表示第三判定阈值,Thres4表示第四判定阈值,Thres5表示第五判定阈值一般Thres2>0.95,一般Thres4<0.3<Thres5<0.5<Thres3;“无方向预测模式”指无法归类预测方向的预测模式,例如h264的DC预测模式、Plan预测模式。
(b)如果当前编码块的预测模式仅支持h264的4x4帧内预测模式中的一部分方向,则按照步骤(a)中的方法在“最佳帧内预测模式候选集”计算步骤中去除相应变量即可。
例如h264的16x16的帧内预测只有V、H、DC、Plan四种预测模式,即仅支持h264的4x4帧内预测模式中的V、H、DC三个方向,此时只需按照步骤(a)中的方法在“最佳帧内预测模式候选集”计算步骤中去除相应变量即可,具体如下:
情况1:如果则
最佳帧内预测模式候选集
={max(rV,rH)对应的预测模式、相关系数等于2对应的预测模式}
最佳帧内预测模式候选集
={max(rV,rH)对应的预测模式、max less(rV,rH)对应的预测模式、以及位于上述两个预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
最佳帧内预测模式候选集
={max(rV,rH)对应的预测模式、位于上述预测方向与max less(rV,rH)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
则最佳帧内预测模式候选集
={max less(rV,rH)对应的预测模式、位于上述预测方向与max(rV,rH)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
则最佳帧内预测模式候选集
={位于max less(rV,rH,rDDR,rDDL)对应预测方向与max(rV,rH,rDDR,rDDL)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
情况6:如果上述情况都不满足,则最佳帧内预测模式候选集={所有预测模式}。
在此种情况下,rinv_max表示垂直于max(rV,rH)对应预测方向上对应的相关系数;rinv_maxless表示垂直于max less(rV,rH)对应预测方向上对应的相关系数。
(c)如果当前编码块的预测模式除了支持h264的4x4帧内预测模式中预测方向外,还支持更为细分的预测方向,则可选择下述方法三或者方法四。
方法三:采用步骤(a)中处理步骤即可。
方法四:按照步骤(a)中的方法在“最佳帧内预测模式候选集”计算步骤中增加相应变量即可。
下面举例说明支持更为细分的预测方向时,其最佳帧内预测模式候选集的确定方法。例如编码块的预测模式除了包含HD外,还包含DDR与HD之间的预测方向、包含HD与H之间的预测方向,即在HD方向存在细分预测模式。此时,按照步骤(a)中的方法在“最佳帧内预测模式候选集”计算步骤中增加相应变量即可,具体如下
最佳帧内预测模式候选集
={max(rV,rH,rDDR,rDDL,rHD)对应的预测模式、相关系数等于2对应的预测模式}
={max(rV,rH,rDDR,rDDL,rHD)对应的预测模式、max less(rV,rH,rDDR,rDDL,rHD)对应的预测模式、以及位于上述两个预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
={max(rV,rH,rDDR,rDDL,rHD)对应的预测模式、位于上述预测方向与max less(rV,rH,rDDR,rDDL,rHD)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
则最佳帧内预测模式候选集
={max less(rV,rH,rDDR,rDDL,rHD)对应的预测模式、位于上述预测方向与max(rV,rH,rDDR,rDDL,rHD)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
则最佳帧内预测模式候选集
={位于max less(rV,rH,rDDR,rDDL,rHD)对应预测方向与max(rV,rH,rDDR,rDDL,rHD)对应预测方向之间对应的预测模式、无方向预测模式、相关系数等于2对应的预测模式}
情况6:如果上述情况都不满足,则,最佳帧内预测模式候选集={所有预测模式}在此种情况下,rinv_max表示垂直于max(rV,rH,rDDR,rDDL,rHD)对应预测方向上对应的相关系数;rinv_maxless表示垂直于max less(rV,rH,rDDR,rDDL,rHD)对应预测方向上对应的相关系数。
S1063:当前编码块只进行最佳帧内预测模式候选集对应方向的帧内预测。
实施例二
图2是本发明优选实施例的一种基于相关性分析的预测模式快速选择方法流程图;所述方法包括以下步骤:
S101:判断当前帧是否为帧间帧,如果是则进入S102;否则,进入S104。
S102:对当前编码基本块进行第一预测模式快速判断;
第一预测模式快速判断方法如下:
S1020:计算当前编码基本块的符号变量flag;
S1021:计算当前编码基本块的时间相关度;
Yt,n={yt(i,j)|yt(i,j)∈mbt,n}、Yt-1,n={yt-1(i,j)|yt-1(i,j)∈mbt-1,n}
dYt,n={yt(i,j)-yt-1(i,j)|yt(i,j)∈mbt,n并且yt-1(i,j)∈mbt-1,n}
其中,cov、std分别表示求协方差、求均方差;yt(i,j)表示当前编码帧第i行第j列的亮度值;yt-1(i,j)表示前一帧第i行第j列的亮度值;mbt,n表示当前编码基本块;mbt-1,n表示前一帧相同位置编码基本块;t表示图像在视频序列中的时间序号;n表示基本块在其所在图像中的位置序号;ρtt,n表示当前编码基本块的时间相关度;基本块指编码器支持的块的最大尺寸,例如在H264中本文中的基本块就是16x16的宏块,而在H265中可以为64x64等大尺寸的块;
S1022:如果(ρtt,n>const0并且flag=1)或者(ρtt,n=0并且flag=0),则当前编码基本块为Skip模式;
否则,如果(ρtt,n>const1并且flag=1)或者(ρtt,n<const3并且flag=0),则当前编码基本块为帧间预测模式;
否则如果(ρtt,n<const2并且flag=1)或者(ρtt,n>const4并且flag=0),当前编基本块为帧内预测模式,
否则,(上述条件均不满足时)当前编基本块的预测模式无法判定。
其中,const0,const1,const2,const3,const4分别为相应的判定门限;一般可取0.99≤const0≤1,0.7<const1≤1,0≤const2<0.3;const3=f1(fps),const4=f2(fps),f1为帧率的单调递减函数,f2为帧率的单调递减函数,一般在全帧率下const3≤5、const4≥10;fps表示帧率。
S103:如果第一预测模式快速判断结果为Skip模式,则首先对当前编码基本块进行Skip预测,然后进入S109;(此步骤为S103a)
如果第一预测模式快速判断结果为帧间预测模式,则首先对当前编码基本块进行帧间预测,然后进入S108;(此步骤为S103b)
如果第一预测模式快速判断结果为帧内预测模式,则直接进入步骤S104;(此步骤为S103c)
如果第一预测模式快速判断结果为预测模式无法判定模式,则对当前编码基本块进行帧间预测,然后进入步骤S104。(此步骤为S103d)
步骤S103包括步骤S103a、S103b、S103c、S103d,步骤S103a、S103b、S103c、S103d不分先后顺序。
S104:计算当前编码基本块的块复杂度。具体实现方式如下
S1041:计算当前编码基本块内每个像素的边界强度
yit(i,j)=‖filter(yt(i,j)|yt(i,j)∈mbt,n)‖
S1042:对当前编码基本块内每个像素的边界强度求均方差
mbit,n=std(yit(i,j)|yt(i,j)∈mbt,n)
其中,yit(i,j)表示像素yt(i,j)的边界强度;filter(变量|条件)表示对满足条件的变量进行边界滤波,可选择公知的任何一种边界滤波器算子如sobel;‖变量‖表示对变量求模;mbit,n表示当前编码基本块的块复杂度。
S105:判断是否mbit,n>Thres1,若是,则进入S106;若否,则进入S107。
其中,Thres1表示第一判定阈值,一般Thres1>25。
S106:将当前编码基本块划分为小于基本块尺寸的编码块,对所述编码块采用实施例一中所述的基于相关性分析的快速帧内预测方法进行帧内预测;
例如在H264-baseline或者H264-main时,步骤S106即为只进行4x4的快速帧内预测,而在步骤H264-high时,S106即为进行8x8、4x4的快速帧内预测。
S107:采用实施例一中所述的基于相关性分析的快速帧内预测方法对当前编码基本块进行帧内预测。
例如在H264时,S107即为进行16x16的快速帧内预测。
S108:对当前编码基本块进行RDO(Rate-Distortion Optimization),获取最佳预测模式。
S109:对当前编码基本块进行常规编码流程后续操作;
即对当前编码基本块进行变换量化、扫描,熵编码操作,完成当前编码基本块的编码。
S110:判定下一编码基本块是否存在,如果存在,则将下一编码基本块设置为当前编码块,重新进入S102;否则,判定下一编码帧是否存在,如果存在,则将下一编码帧设置为当前编码帧,重新进入S101;否则,结束。
实施例三
图4是本发明优选实施例一种基于相关性分析的帧内预测模式快速选择***结构图;所述***包括:
方向相关系数计算模块、最佳帧内预测模式候选择模块、最佳帧内预测模块,
方向相关系数计算模块,用于计算当前编码块的方向相关系数;
当前编码块的方向相关系数的计算方法参见实施例一中步骤S1061中的技术方案,在此不再赘述。
最佳帧内预测模式候选择模块,用于根据当前编码块的方向相关系数的不同情况,选择相应的帧内预测模式作为最佳帧内预测模式候选集;
所述“用于根据当前编码块的方向相关系数的不同情况,选择相应的帧内预测模式作为最佳帧内预测模式候选集”详细方法参见实施例一中步骤S1062中的技术方案,在此不再赘述。
最佳帧内预测模块,用于对当前编码块进行最佳帧内预测模式候选集对应方向的帧内预测;
实施例四
图5是本发明优选实施例一种基于相关性分析的预测模式快速选择***结构图;所述***包括:帧间帧判断模块、第一预测模式快速判断模块、第一判断处理装置、块复杂度计算模块、第五判断模块、第一快速帧内预测模块、第二快速帧内预测模块、最佳预测模式获取模块、后续编码模块、下一编码基本块判断处理模块、下一编码帧判断处理模块,
帧间帧判断模块,用于判断当前帧是否为帧间帧,如果是则进入第一预测模式快速判断模块,否则,进入块复杂度计算模块;
第一预测模式快速判断模块,用于对当前编码基本块进行第一预测模式快速判断;
第一判断处理装置,用于根据第一预测模式快速判断结果,对当前编码基本块进行处理;
块复杂度计算模块,用于计算当前编码基本块的块复杂度;块复杂度计算模块,包括边界强度计算模块、边界强度均方差计算模块,图9为图5中块复杂度计算模块的结构图;
边界强度计算模块,用于计算当前编码基本块内每个像素的边界强度;
yit(i,j)=‖filter(yt(i,j)|yt(i,j)∈mbt,n)‖
边界强度均方差计算模块,用于对当前编码基本块内每个像素的边界强度求均方差;
mbit,n=std(yit(i,j)|yt(i,j)∈mbt,n)
其中,yit(i,j)表示像素yt(i,j)的边界强度;filter(变量|条件)表示对满足条件的变量进行边界滤波,可选择公知的任何一种边界滤波器算子如sobel;‖变量‖表示对变量求模;mbit,n表示当前编码基本块的块复杂度。
第五判断模块,用于判断是否mbit,n>Thres1,若是,则进入第一快速帧内预测模块;若否,则进入第二快速帧内预测模块;
mbit,n表示当前编码基本块的块复杂度,Thres1表示第一判定阈值,一般
Thres1>25;
第一快速帧内预测模块,用于将当前编码基本块划分为小于基本块尺寸的编码块,然后对所述编码块采用实施例一中所述的基于相关性分析的帧内预测模式快速选择方法进行帧内预测;
第二快速帧内预测模块,用于采用实施例一中所述的基于相关性分析的帧内预测模式快速选择方法对当前编码基本块进行帧内预测;
最佳预测模式获取模块,用于对当前编码基本块进行RDO(Rate-Distortion Optimization),获取最佳预测模式;
后续编码模块,用于对当前编码基本块进行变换量化、扫描,熵编码操作,完成当前编码基本块的编码;
下一编码基本块判断处理模块,用于判定下一编码基本块是否存在,如果存在,则将下一编码基本块设置为当前编码块,重新进入第一预测模式快速判断模块;否则,进入下一编码帧判断处理模块;
下一编码帧判断处理模块,用于判定下一编码帧是否存在,如果存在,则将下一编码帧设置为当前编码帧,重新进入帧间帧判断模块;否则,结束。
进一步地,所述第一预测模式快速判断模块还包括符号变量计算模块、时间相关度计算模块、预测模式判断模块,图6为图5中第一预测模式快速判断模块的结构图;
符号变量计算模块,用于计算当前编码基本块的符号变量flag;
时间相关度计算模块,用于计算当前编码基本块的时间相关度;
Yt,n={yt(i,j)|yt(i,j)∈mbt,n}、Yt-1,n={yt-1(i,j)|yt-1(i,j)∈mbt-1,n}
dYt,n={yt(i,j)-yt-1(i,j)|yt(i,j)∈mbt,n并且yt-1(i,j)∈mbt-1,n}
其中,cov、std分别表示求协方差、求均方差;yt(i,j)表示当前编码帧第i行第j列的亮度值;yt-1(i,j)表示前一帧第i行第j列的亮度值;mbt,n表示当前编码基本块;mbt-1,n表示前一帧相同位置编码基本块;t表示图像在视频序列中的时间序号;n表示基本块在其所在图像中的位置序号;ρtt,n表示当前编码基本块的时间相关度;基本块指编码器支持的块的最大尺寸;
预测模式判断模块,用于判断如果
(ρtt,n>const0并且flag=1)或者(ρtt,n=0并且flag=0),则当前编码基本块为Skip模式;
否则,如果(ρtt,n>const1并且flag=1)或者(ρtt,n<const3并且flag=0),则当前编码基本块为帧间预测模式;
否则如果(ρtt,n<const2并且flag=1)或者(ρtt,n>const4并且flag=0),当前编基本块为帧内预测模式,
否则,(上述条件均不满足时)当前编基本块的预测模式无法判定。
其中,const0,const1,const2,const3,const4分别为相应的判定门限;一般可取0.99≤const0≤1,0.7<const1≤1,0≤const2<0.3;const3=f1(fps),const4=f2(fps),f1为帧率的单调递减函数,f2为帧率的单调递减函数,一般在全帧率下const3≤5、const4≥10;fps表示帧率。
进一步地,所述第一判断处理装置包括Skip模式处理模块、帧间预测模式处理模块、帧内预测模式处理模块、无法判定模式处理模块,图7为图5中第一判断处理装置的结构图;
Skip模式处理模块,用于如果第一预测模式快速判断结果为Skip模式,则首先对当前编码基本块进行Skip预测,然后进入后续编码模块;
帧间预测模式处理模块,用于如果第一预测模式快速判断结果为帧间预测模式,则首先对当前编码基本块进行帧间预测,然后进入最佳预测模式获取模块;
帧内预测模式处理模块,用于如果第一预测模式快速判断结果为帧内预测模式,则直接进入块复杂度计算模块;
无法判定模式处理模块,用于如果第一预测模式快速判断结果为预测模式无法判定模式,则对当前编码基本块进行帧间预测,然后进入块复杂度计算模块。
进一步地,第一快速帧内预测模块包括编码块划分模块、快速帧内预测模块,图8为图5中第一快速帧内预测模块的结构图;
编码块划分模块,用于将当前编码基本块划分为小于基本块尺寸的编码块;
快速帧内预测模块,用于对每一个所述小于基本块尺寸的编码块采用实施例一中所述的基于相关性分析的帧内预测模式快速选择方法进行帧内预测;
本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质可以为ROM、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。