具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
为了实现本发明之目的,本发明公开了一种宏块编码模式预先判定方法及装置,采用一种基于方差的快速预判算法,即通过方差预判宏块纹理的复杂度,从而决定哪些编码模式可以不用进行搜索,减少了对编码模式进行搜索的次数,因此极大地减少了计算量,提高了编码效率。
图1示出的是根据本发明的宏块编码模式预先判定方法的流程图,该宏块编码模式预先判定方法包括以下步骤:
S101:计算视频图象中每个宏块内每个象素的亮度值F(xi,yi)。通过对每个视频图象进行采样得到若干个象素点,并通过量化处理得到每个象素的亮度值F(xi,yi)。
S102:根据F(xi,yi)计算每个宏块的水平方向方差Variance_hor和垂直方向方差Variance_ver。
首先求出宏块内一行象素的均值,再求出每个象素与均值的差值,这些差值的平方和就是该行象素的方差,每个宏块内所有行的方差相加得到该宏块的水平方向方差Variance_hor,计算公式为:
同样的方法可以计算出垂直方向方差Variance_ver,计算公式为:
水平方向方差Variance_hor和垂直方向方差Variance_ver可以在一定程度上反映出图象主要的纹理走向和复杂程度。
S103:根据每个宏块的Variance_hor、Variance_ver以及判定规则预先判定该宏块适合的编码模式。
图2示出的是本发明的宏块编码模式预先判定方法判定宏块编码模式的原理图。在步骤S103中,如果不进行预先判定,宏块编码模式的搜索种类通常可以包括Inter 16×16模式、Inter 16×8模式、Inter 8×16模式、Inter 8×8模式、Inter 8×4模式、Inter 4×8模式、Inter 4×4模式以及Skip模式等八种类型。
本发明的判定规则可以预定为:如果每个宏块的Variance_hor与Variance_ver之和小于等于预设的第一阈值threshold1,表明该宏块的纹理比较简单,则该宏块适合的编码模式判定为Inter 16×16模式或Skip模式,省略其他模式的搜索以降低计算复杂度,由于被省略的模式出现的概率非常小,不对其进行搜索也不会对编码结果造成损失。第一阈值threshold1可以是依据大量实验结果的统计值而得出的一个经验值,在本发明的一个实施例中可以设定为60。
判定规则还可以进一步地预定为:当每个宏块的Variance_hor与Variance_ver之和大于预设的第一阈值threshold1时,比较Variance_hor和Variance_ver的大小以初步判断纹理的走向而判定适合该宏块的编码模式。如果Variance_hor大于Variance_ver,表明水平方向的图象变化比较明显,从该宏块可选的编码模式中舍去Inter 16×8模式、Inter 8×4模式、Inter 4×8模式和Inter 4×4模式,即编码模式判定为Inter 16×16模式、Inter 8×16模式、Inter 8×8模式或Skip模式,如果Variance_hor小于Variance_ver,表明垂直方向的图象变化比较明显,从该宏块可选的编码模式中舍去Inter 8×16模式、Inter 8×4模式、Inter 4×8模式和Inter 4×4模式,即编码模式判定为Inter 16×16模式、Inter 16×8模式、Inter 8×8模式或Skip模式。
步骤S 103的判定过程也可以表示为如下公式:
为了进一步提高判别准确度,还可以在步骤S102中根据F(xi,yi)计算每个宏块的对角线方向方差Variance_diag,然后在步骤S103中,根据每个宏块的Variance_hor、Variance_ver和Variance_diag以及预定的判定规则一同判定该宏块适合的编码模式。
在步骤S103中,如果不进行预先判定搜索种类,宏块编码模式的搜索种类通常可以预设为Inter 16×16模式、Inter 16×8模式、Inter 8×16模式、Inter 8×8模式、Inter 8×4模式、Inter 4×8模式、Inter 4×4模式以及Skip模式等八种类型。
计算出每个宏块的Variance_hor、Variance_ver和Variance_diag之后,本发明的判定规则也可以预定为:如果每个宏块的Variance_hor、Variance_ver与Variance_diag之和小于等于预设的第二阈值threshold2,该宏块适合的编码模式判定为Inter 16×16模式或Skip模式,省略其他模式的搜索以降低计算复杂度,否则,比较Variance_hor和Variance_ver的大小以初步判断纹理走向而判定该宏块适合的编码模式。第二阈值threshold2可以根据经验值进行设定,比如在本发明的一个实施例中可以将其设为100。
判定规则还可以进一步预定为:在每个宏块的Variance_hor、Variance_ver、Variance_diag之和大于预设的第二阈值threshold2时,如果Variance_hor大于Variance_ver,该宏块适合的编码模式判定为Inter 16×16模式、Inter 8×16模式、Inter 8×8模式或Skip模式,如果Variance_hor小于Variance_ver,该宏块适合的编码模式判定为Inter 16×16模式、Inter 16×8模式、Inter 8×8模式或Skip模式。
判定规则也可以预定为:如果每个宏块的Variance_hor、Variance_ver、Variance_diag之和大于预设的第二阈值threshold2且Variance_diag大于预设的第三阈值threshold3,该宏块适合的编码模式判定为Inter 16×16模式、Inter16×8模式、Inter 8×16模式、Inter 8×8模式、Inter 8×4模式、Inter 4×8模式、Inter 4×4模式或Skip模式。第三阈值threshold3同样可以根据经验值进行设定。
步骤S103中对每个宏块适合的编码模式进行了预分类,将一些出现概率很小的编码模式预先舍去,只保留出现概率相对较大的编码模式,这样在搜索该宏块的最优编码模式时,需要搜索的模式种类就会比较少,从而降低了计算量,提高了编码效率。
图3示出的是根据本发明的宏块编码模式预先判定装置。宏块编码模式预先判定装置100包括亮度值计算模块110、方差计算模块120和判定模块130。其中,亮度值计算模块110用于计算视频图象中每个宏块内每个象素的亮度值F(xi,yi);方差计算模块120用于根据F(xi,yi)计算每个宏块的水平方向方差Variance_hor和垂直方向方差Variance_ver,可以采用公式(1)和(2)进行计算,水平方向方差Variance_hor和垂直方向方差Variance_ver可以反映出图象在水平方向和垂直方向上主要的纹理走向和复杂程度;判定模块130用于根据每个宏块的Variance_hor、Variance_ver以及判定规则判定该宏块适合的编码模式。
需要进行搜索的宏块编码模式通常包括Inter 16×16模式、Inter 16×8模式、Inter 8×16模式、Inter 8×8模式、Inter 8×4模式、Inter 4×8模式、Inter4×4模式以及Skip模式等八种模式。判定模块130按照如公式(3)所示的判定规则进行预先判定,如果Variance_hor与Variance_ver之和小于等于预设的第一阈值threshold1,表明该宏块的纹理比较简单,则该宏块适合的编码模式判定为Inter 16×16模式或Skip模式,省略其他模式的搜索以降低计算复杂度。第一阈值threshold1可以是依据大量实验结果的统计值而得出的一个经验值,在本发明的一个实施例中可以设定为60。
当每个宏块的Variance_hor与Variance_ver之和大于预设的第一阈值threshold1时,比较Variance_hor和Variance_ver的大小以初步判断纹理的走向而判定该宏块适合的编码模式。如果Variance_hor大于Variance_ver,判定模块130从该宏块可选的编码模式中舍去Inter 16×8模式、Inter 8×4模式、Inter4×8模式和Inter 4×4模式,即编码模式判定为Inter 16×16模式、Inter 8×16模式、Inter 8×8模式或Skip模式,如果Variance_hor小于Variance_ver,判定模块130从该宏块可选的编码模式中舍去Inter 8×16模式、Inter 8×4模式、Inter 4×8模式和Inter 4×4模式,即编码模式判定为Inter 16×16模式、Inter16×8模式、Inter 8×8模式或Skip模式。
为了进一步提高判别准确度,还可以在方差计算模块120中根据F(xi,yi)计算每个宏块的对角线方向方差Variance_diag,然后在判定模块130中,根据每个宏块的Variance_hor、Variance_ver和Variance_diag以及判定规则一同判定该宏块适合的编码模式。
宏块编码模式的搜索种类通常包括Inter 16×16模式、Inter 16×8模式、Inter 8×16模式、Inter 8×8模式、Inter 8×4模式、Inter 4×8模式、Inter 4×4模式以及Skip模式等八种类型。判定模块130根据预定的判定规则进行判定时,如果Variance_hor、Variance_ver与Variance_diag之和小于等于预设的第二阈值threshold2,该宏块适合的编码模式判定为Inter 16×16模式或Skip模式,省略其他模式的搜索以降低计算复杂度,否则,比较Variance_hor和Variance_ver的大小以初步判断纹理走向而判定宏块编码模式的搜索种类。
计算出每个宏块的Variance_hor、Variance_ver和Variance_diag之后,判定规则可以进一步地预定为:当每个宏块的Variance_hor与Variance_ver之和大于预设的第一阈值threshold1时,比较Variance_hor和Variance_ver的大小以初步判断纹理的走向而判定该宏块适合的编码模式。如果Variance_hor大于Variance_ver,判定模块130从该宏块可选的编码模式中舍去Inter 16×8模式、Inter 8×4模式、Inter 4×8模式和Inter 4×4模式,即编码模式判定为Inter16×16模式、Inter 8×16模式、Inter 8×8模式或Skip模式,如果Variance_hor小于Variance_ver,判定模块130从该宏块可选的编码模式中舍去Inter 8×16模式、Inter 8×4模式、Inter 4×8模式和Inter 4×4模式,即编码模式判定为Inter 16×16模式、Inter 16×8模式、Inter 8×8模式或Skip模式。
当然,本发明也可以采用另一种判定规则如下:如果每个宏块的Variance_hor、Variance_ver、Variance_diag之和大于预设的第二阈值threshold2且Variance_diag大于预设的第三阈值threshold3,判定模块130将该宏块适合的编码模式判定为Inter 16×16模式、Inter 16×8模式、Inter 8×16模式、Inter8×8模式、Inter 8×4模式、Inter 4×8模式、Inter 4×4模式或Skip模式。第三阈值threshold3可以参考多个对角线方向方差Variance_diag的统计值进行设定。
本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。