首页 / 帧内滤波预测方法、视频编码方法、视频解码方法及装置

帧内滤波预测方法、视频编码方法、视频解码方法及装置公开 发明

技术领域

[0001] 本申请涉及视频处理技术领域,特别是涉及一种帧内滤波预测方法、视频编码方法、视频解码方法及装置。

相关背景技术

[0002] 由于视频图像数据量比较大,通常需要对其进行编码压缩,压缩后的数据称之为视频码流,视频码流通过有线或者无线网络传输至用户端,再进行解码观看。整个视频编码流程包括预测、变换、量化、熵编码等过程。其中,预测分为帧内预测和帧间预测两部分。
[0003] 本申请的发明人在长期的研发过程中,发现目前预测方法还存在一定的局限性,也在一定程度上影响了预测的准确性。

具体实施方式

[0097] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外,除非另外指明(例如,“或另外”或“或在替代方案中”),否则如本文所使用的术语“或”指代非排他性的“或”(即,“和/或”)。并且,本文所描述的各种实施例不一定相互排斥,因为一些实施例可以与一个或多个其它实施例组合以形成新的实施例。
[0098] 具体地,如图1所示,本申请提出的第一种实施方式的帧内滤波预测方法具体包括以下步骤。需要注意的是,以下步骤编号仅用于简化说明,并不旨在限制步骤的执行顺序,本实施方式的各步骤可以在不违背本申请技术思想的基础上,任意更换执行顺序。此外,该实施方式的帧内滤波预测方法的相关内容可以和其余实施方式的帧内滤波预测方法进行组合。
[0099] S101:基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块。
[0100] 可以先基于当前块所属图像中的预设搜索范围搜索到当前块的至少一个匹配块,以便后续利用匹配块进行滤波操作而确定出当前块的预测块。
[0101] 其中,当前块的预设搜索范围可为当前块所属图像中与当前块邻近的已编码区域。或者,当前块的预设搜索范围可为当前块所属CTU(编码树单元,coding tree unit)及其相邻CTU中的已编码区域。例如,如图2所示,在按照从左到右,从上到下的顺序对图像中的块继续预测编码时,可以将当前CTU(即当前块所属CTU)、上方CTU和左侧相邻CTU的已编码区域作为当前块的预设搜索范围,以便执行步骤S101基于当前块所属图像中的预设搜索范围搜索到当前块的至少一个匹配块。
[0102] 在一可实现的方式中,基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块可以指:以当前块在当前块的预设搜索范围中进行匹配搜索而确定出当前块的至少一个匹配块。在该可实现的方式中,可以在预设搜索范围内按照间距为k个像素的方式进行搜索,在搜索时可以选用SAD(Sum of Absolute Difference,绝对误差和)或率失真代价等计算当前块和当前搜索块之间的差距,进而基于差距确定出当前块的至少一个匹配块。较为优选的是,所确定的当前块的至少一个匹配块与当前块之间的差距小于除至少一个匹配块之外的其余搜索块与当前块之间的差距,即基于差距确定出当前块的较优的至少一个匹配块。最为优选的是,可以将预设搜索范围内与当前块差距最小的搜索块作为所确定的至少一个匹配块。
[0103] 在另一可实现的方式中,基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块可以指:以当前块的第一模板在当前块的预设搜索范围中进行匹配搜索而确定出当前块的至少一个匹配块。在该可实现的方式中,可以在预设搜索范围内按照间距为k个像素的方式进行搜索,在搜索时可以选用SAD(Sum of Absolute Difference,绝对误差和)或率失真代价等计算第一模板和当前搜索模板之间的差距,进而可基于差距确定出第一模板的至少一个参考模板;进而将至少一个参考模板各自对应的块作为当前块的至少一个匹配块。其中,第一模板可以是当前块周围的重建像素区域,而参考模板和其对应的匹配块之间的位置关系等同于第一模板和当前块之间的位置关系。较为优选的是,所确定的第一模板的至少一个参考模板与第一模板之间的差距小于除至少一个参考模板之外的其余搜索模板与第一模板之间的差距,即基于差距确定出第一模板的较优的至少一个参考模板。最为优选的是,可以将预设搜索范围内与第一模板差距最小的搜索模板作为所确定的第一模板的至少一个参考模板,即基于差距确定出第一模板的最佳参考模板;进而可将最佳参考模板对应的块作为当前块的至少一个匹配块。
[0104] 在又一可实现的方式中,基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块可以指:以当前块及其第一模板在当前块的预设搜索范围中进行匹配搜索而确定出当前块的至少一个匹配块。在该可实现的方式中,可以在预设搜索范围内按照间距为k个像素的方式进行搜索,在搜索时可以选用SAD(Sum of Absolute Difference,绝对误差和)或率失真代价等计算当前块及其第一模板和当前搜索块及其当前搜索模板之间的差距,进而可基于差距确定出当前块的至少一个匹配块。其中,第一模板可以是当前块周围的重建像素区域,而当前搜索模板和当前搜索块之间的位置关系等同于第一模板和当前块之间的位置关系。较为优选的是,所确定的当前块的至少一个匹配块和其对应的搜索模板与当前块及第一模板之间的差距,小于其余搜索块及其对应的搜索模板与当前块及第一模板之间的差距,即基于差距确定出较优的至少一个匹配块及其对应的搜索模板。最为优选的是,可以将预设搜索范围内与当前块及其第一模板差距最小的搜索块及其搜索模板中的搜索块作为当前块的至少一个匹配块。
[0105] 其中,基于步骤S101确定的当前块的至少一个匹配块中匹配块的数量不受限定,例如可为1、2、3等。
[0106] 上述的k可以为整数,例如1、2或3等。当然,在其他实施例中,k也可以为分数,例如1/2。
[0107] S102:利用当前块的当前模板和至少一个匹配块的参考模板求解出至少一个滤波模型的参数。
[0108] 基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块后,可以利用当前模板和至少一个匹配块对应的参考模板求解出至少一个滤波模型的参数,以便后续利用求解出的滤波模型并基于滤波模型对应的匹配块预测而得到当前块的预测块。
[0109] 其中,当前模板为当前块的模板像素区域。
[0110] 可选地,如图3所示,当前模板为当前块周围的重建像素区域。进一步地,当前模板可以是与当前块相邻的像素区域。当然,在某些实施例中,当前模板也可不与当前块相邻。在某些实施例中,当前模板与当前块之间的位置关系等同于参考模板与参考模板对应的匹配块之间的位置关系。可选地,当前模板可以等同于上述的第一模板。在其他实施例中,当前模板也可以不等同于上述的第一模板。
[0111] 可选地,如图4所示,当前模板的行数H和/或列数W不受限制,例如可以等于1、3或4。且当前模板的行数H和列数W可以相等,也可以不相等。例如,当前模板的行数H=列数W=
1。又例如,当前模板的行数H=列数W=4。另例如,当前模板的行数H=1,当前模板的列数W=4。
[0112] 可选地,上述的“利用当前模板和至少一个匹配块对应的参考模板求解出至少一个滤波模型的参数”可以指:利用当前模板的重建值和至少一个匹配块对应的参考模板的重建值求解出至少一个滤波模型的参数。在其他实施例中,上述的“利用当前模板和至少一个匹配块对应的参考模板求解出至少一个滤波模型的参数”也可以指:利用当前模板的预测值和至少一个匹配块对应的参考模板的预测值求解出至少一个滤波模型的参数。
[0113] 基于至少一个匹配块的参考模板和当前模板求解出至少一个滤波模型的参数的步骤,可以为:基于每一匹配块的参考模板和当前模板求解出每一匹配块对应的至少一个滤波模型的参数。在其他实施例中,至少一个匹配块中匹配块的数量大于或等于2,基于至少一个匹配块的参考模板和当前模板求解出至少一个滤波模型的参数的步骤,也可以为:基于至少一个匹配块中的两个匹配块的参考模板和当前模板联合求解出至少一个滤波模型的参数。
[0114] 在一可实现的方式中,基于每一匹配块的参考模板和当前模板求解出每一匹配块对应的至少一个滤波模型的参数的步骤可以包括:使用每一匹配块的完整参考模板和完整的当前模板进行至少一个滤波模型的参数计算,得到每一匹配块对应的至少一个滤波模型。
[0115] 在另一可实现的方式中,基于每一匹配块的参考模板和当前模板求解出每一匹配块对应的至少一个滤波模型的参数的步骤可以包括:使用每一匹配块的部分参考模板及其对应的部分当前模板进行至少一个滤波模型的参数计算,得到每一匹配块对应的至少一个滤波模型。
[0116] 滤波模型可以包括梯度项,如此在利用该步骤求解出滤波模型的参数后,后续在利用更新参数后的滤波模型进行当前块的预测时利用到纹理信息,如此可以更加准确的预测有各种纹理信息的块,有助于提高预测准确性,从而提高编码效率。例如,滤波模型的公式可以为 其中,P(x,y)为当前模板或当前块中(x,y)位置像素点的预测值,Gi为参考模板或匹配块中(x,y)位置像素点处梯度值或(x,y)位置像素点的邻域像素的梯度值。
[0117] 其中,(x,y)位置像素点处梯度值的计算方法不受限制。可选地,在求解滤波模型的参数时,Gi为利用参考模板中(x,y)位置像素点处梯度值和/或参考模板中(x,y)位置像素点的邻域像素处的梯度值得到的;相应地,在利用求解得到的滤波模型对当前块进行预测时,Gi为利用匹配块中(x,y)位置像素点处梯度值和/或匹配块中(x,y)位置像素点的邻域像素处的梯度值得到的。
[0118] 例如,在求解滤波模型的参数时,Gi等于参考模板中(x,y)位置像素点处梯度值;相应地,在利用求解得到的滤波模型对当前块进行预测时,Gi等于匹配块中(x,y)位置像素点处梯度值。
[0119] 另例如,在求解滤波模型的参数时,Gi等于参考模板中(x,y)位置像素点的邻域像素的梯度值;相应地,在利用求解得到的滤波模型对当前块进行预测时,Gi等于匹配块中(x,y)位置像素点的邻域像素的梯度值。
[0120] 又例如,在求解滤波模型的参数时,P(x,y)基于a1×G1(x,y)和/或a2×G2(x,y)计算得到,G1(x,y)等于参考模板中(x,y)位置像素点的梯度值,G2(x,y)等于参考模板中(x,y)位置像素点的邻域像素的梯度值;相应地,在利用求解得到的滤波模型对当前块进行预测时,G1(x,y)等于匹配块中(x,y)位置像素点的梯度值,G2(x,y)等于匹配块中(x,y)位置像素点的邻域像素的梯度值。
[0121] 待计算梯度值的像素点(例如可为(x,y)位置像素点,或者可为(x,y)位置像素点的邻域像素)的梯度值的计算方式不受限制,其具体是通过待计算梯度值的像素点与其周围像素点计算待计算梯度值的梯度。并且,参考模板中待计算梯度值的像素点处梯度值可以是利用待计算梯度值的像素点处至少一个方向的梯度值计算得到的,相应地,匹配块中待计算梯度值的像素点处梯度值也可以是利用匹配块中待计算梯度值的像素点处至少一个方向的梯度值计算得到的。在一个具体的示例中,参考模板中待计算梯度值的像素点处梯度值可以等于参考模板中待计算梯度值的像素点处多个方向的梯度值的平方和,相应地,匹配块中待计算梯度值的像素点处梯度值等于匹配块中待计算梯度值的像素点处多个方向的梯度值的平方和。在另一个具体的示例中,参考模板中待计算梯度值的像素点处梯度值可以等于参考模板中待计算梯度值的像素点处多个方向的梯度值的加权值,相应地,匹配块中待计算梯度值的像素点处梯度值等于匹配块中待计算梯度值的像素点处多个方向的梯度值的加权值。在又一个具体的例子中,可以通过多种梯度值计算方法计算出待计算梯度值的像素点的多个梯度值,如此,在求解滤波模型的参数时,G1(x,y)等于通过一种梯度值计算方法计算的参考模板中(x,y)位置像素点的梯度值,G2(x,y)等于通过另一种梯度值计算方法计算的参考模板中(x,y)位置像素点的梯度值,……,Gn(x,y)等于通过第n种梯度值计算方法计算的参考模板中(x,y)位置像素点的梯度值;相应地,在利用求解得到的滤波模型对当前块进行预测时,G1(x,y)等于通过一种梯度值计算方法计算的匹配块中(x,y)位置像素点的梯度值,G2(x,y)等于通过另一种梯度值计算方法计算的匹配块中(x,y)位置像素点的梯度值,……,Gn(x,y)等于通过第n种梯度值计算方法计算的匹配块中(x,y)位置像素点的梯度值。在再一个具体的例子中,通过两种梯度值计算方法计算出待计算梯度值的像素点的多个梯度值,具体地,在求解滤波模型的参数时,G1(x,y)等于通过第一种梯度值计算方法计算的参考模板中(x,y)位置像素点的梯度值,G2(x,y)等于通过第二种梯度值计算方法计算的参考模板中(x,y)位置像素点的梯度值,G3(x,y)等于通过第一种梯度值计算方法计算的参考模板中(x,y)位置像素点的一邻域像素的梯度值,G4(x,y)等于通过第二种梯度值计算方法计算的参考模板中(x,y)位置像素点的一邻域像素的梯度值;相应地,在利用求解得到的滤波模型对当前块进行预测时,G1(x,y)等于通过第一种梯度值计算方法计算的匹配块中(x,y)位置像素点的梯度值,G2(x,y)等于通过第二种梯度值计算方法计算的匹配块中(x,y)位置像素点的梯度值,G3(x,y)等于通过第一种梯度值计算方法计算的匹配块中(x,y)位置像素点的一邻域像素的梯度值,G4(x,y)等于通过第二种梯度值计算方法计算的匹配块中(x,y)位置像素点的一邻域像素的梯度值。
[0122] 其中,可以通过索贝尔算子、Prewitt算子等一阶微分梯度算子,或者Laplace算子等二阶微分算子,又或者沿着(x,y)位置的每个方向的几个连成一条线的像素点,计算参考模板中(x,y)位置像素点或其邻域像素处每个方向的梯度值。相应地,也可以通过索贝尔算子、Prewitt算子等一阶微分梯度算子,或者Laplace算子等二阶微分算子,又或者沿着(x,y)位置的每个方向的几个连成一条线的像素点,计算匹配块中(x,y)位置像素点或其邻域像素处每个方向的梯度值。示例性地,可以通过图5中的垂直算子、图5中的水平算子、图5中的左上到右下的斜对角方向算子、图5中的右上到左下的斜对角方向算子、图6中的Laplace算子或图6中的高斯平滑算子计算出(x,y)位置像素点或其邻域像素处的梯度值。
[0123] 滤波模型还可以包括像素值信息项,如此在利用该步骤求解出滤波模型的参数而得到滤波模型后,以便后续利用滤波模型以基于匹配块的像素值信息而得到当前块的预测块。例如,滤波模型的公式可以为 其中,在求解滤波模型参数时,P(x,y)为当前模板中(x,y)位置像素点的值,Li是基于参考模板中(x,y)位置像素点处像素值和/或(x,y)位置像素点的邻域像素的像素值确定的;在利用滤波模型预测当前块时,P(x,y)为当前块中(x,y)位置像素点的预测值,Li是基于匹配块中(x,y)位置像素点处像素值和/或(x,y)位置像素点的邻域像素的像素值确定的。又例如,滤波模型的公式可以为[0124] 在一具体的实施例中,P(x,y)基于b1×L(x,y)计算得到,其中,在求解滤波模型参数时,L(x,y)等于参考模板中(x,y)位置像素点处像素值;在利用滤波模型预测当前块时,L(x,y)等于匹配块中(x,y)位置像素点处像素值。
[0125] 在另一具体的实施例中,P(x,y)基于b1×L1(x,y)、b2×L2(x,y)、b3×L3(x,y)、b4×L4(x,y)、b5×L5(x,y)、b6×L6(x,y)、b7×L7(x,y)、b8×L8(x,y)、和/或、b9×L9(x,y)等计算得到,其中,在求解滤波模型参数时,L1(x,y)等于参考模板中(x,y)位置像素点处像素值,L2(x,y)等于参考模板中(x,y)位置像素的上方的像素点处像素值,L3(x,y)等于参考模板中(x,y)位置像素的下方的像素点处像素值,L4(x,y)等于参考模板中(x,y)位置像素的左方的像素点处像素值,L5(x,y)等于参考模板中(x,y)位置像素的右方的像素点处像素值,L6(x,y)等于参考模板中(x,y)位置像素的左上方的像素点处像素值,L7(x,y)等于参考模板中(x,y)位置像素的左下方的像素点处像素值,L8(x,y)等于参考模板中(x,y)位置像素的右上方的像素点处像素值,L9(x,y)等于参考模板中(x,y)位置像素的右下方的像素点处像素值……;在利用滤波模型预测当前块时,L1(x,y)等于匹配块中(x,y)位置像素点处像素值,L2(x,y)等于匹配块中(x,y)位置像素的上方的像素点处像素值,L3(x,y)等于匹配块中(x,y)位置像素的下方的像素点处像素值,L4(x,y)等于匹配块中(x,y)位置像素的左方的像素点处像素值,L5(x,y)等于匹配块中(x,y)位置像素的右方的像素点处像素值,L6(x,y)等于匹配块中(x,y)位置像素的左上方的像素点处像素值,L7(x,y)等于匹配块中(x,y)位置像素的左下方的像素点处像素值,L8(x,y)等于匹配块中(x,y)位置像素的右上方的像素点处像素值,L9(x,y)等于匹配块中(x,y)位置像素的右下方的像素点处像素值。
[0126] 在又一具体的实施例中,P(x,y)基于b1×L1(x,y)计算得到,其中,在求解滤波模型参数时,L1(x,y)是基于参考模板中(x,y)位置像素点和/或(x,y)位置像素点的邻域像素点处像素值计算得到,示例性地,L1(x,y)是对参考模板中(x,y)位置像素点和/或(x,y)位置像素点的邻域像素点处像素值进行滤波得到的滤波值;在利用滤波模型预测当前块时,L1(x,y)是基于匹配块中(x,y)位置像素点和/或(x,y)位置像素点的邻域像素点处像素值计算得到,示例性地,L1(x,y)是对匹配块中(x,y)位置像素点和/或(x,y)位置像素点的邻域像素点处像素值进行滤波得到的滤波值。上述的滤波可以是均值滤波、中值滤波、高斯滤波等滤波操作,即上述的滤波值包括对所述每一像素的像素值及其邻域像素的像素值进行均值滤波、中值滤波或高斯滤波得到的值。在一具体的例子中,滤波值还可包括所述每一像素的至少一个邻域像素经过滤波器滤波后得到的值。具体地,每一像素的至少一个邻域像素经过滤波器滤波后得到的值包括所述每一像素的上方相邻像素经过水平滤波器滤波后的值、所述每一像素的下方相邻像素经过水平滤波器滤波后的值、所述每一像素的左方相邻像素经过垂直滤波器滤波后的值、所述每一像素的右方相邻像素经过水平滤波器滤波后的值、所述每一像素的左上方相邻像素经过L型滤波器滤波后的值、所述每一像素的左下方相邻像素经过L型滤波器滤波后的值、所述每一像素的右上方相邻像素经过L型滤波器滤波后的值、所述每一像素的右下方相邻像素经过L型滤波器滤波后的值。上述的水平滤波器、垂直滤波器和L型滤波器可以是三抽头滤波器,也可以是五抽头滤波器,在此不做限制。
[0127] 滤波模型还可以包括位置信息项,如此在利用该步骤求解出滤波模型的参数而得到滤波模型后,后续在利用更新参数后的滤波模型进行当前块的预测时利用到位置信息,以便提高预测准确性,从而提高编码效率。例如,滤波模型的公式可以为其中,在求解滤波模型的参数时,Pi是基于当前模板中的(x,y)位置
像素点相对于第一预设点(例如当前模板的左上角点或右上角点、或当前块的左上角点或右上角点等)的相对横向位置(即水平位置)和/或相对纵向位置(即垂直位置)确定的;而在利用求解得到的滤波模型对当前块进行预测时,Pi是基于当前块中的(x,y)位置像素点相对于第二预设点(例如当前模板的左上角点或右上角点、或当前块的左上角点或右上角点等)的相对横向位置(即水平位置)和/或相对纵向位置(即垂直位置)确定的。其中,第一预设点和第二预设点可以为当前模板或当前块中的点,也可以不在当前模板或当前块中。此外,第一预设点和第二预设点可以相同,也可以不相同。又例如,滤波模型的公式可以为另例如,滤波模型的公式可以为
再例如,滤波模型的公式可以为
[0128] 示例性地,P(x,y)是基于c1×P1(x,y)、c2×P2(x,y)、c3×P3(x,y)、c4×P4(x,y)、c5×P5(x,y)、c6×P6(x,y)和/或c7×P7(x,y)计算得到;其中,在求解滤波模型的参数时,P1(x,y)是对当前模板中的(x,y)位置像素点相对于第一预设点的相对横向位置进行偏移缩放得到的,P2(x,y)是对当前模板中的(x,y)位置像素点相对于第一预设点的相对纵向位置进行偏移缩放得到的,P3(x,y)是对当前模板中的(x,y)位置像素点相对于第一预设点的相对横向位置进行非线性运算得到的,P4(x,y)是对当前模板中的(x,y)位置像素点相对于第一预设点的相对纵向位置进行非线性运算得到的,P5(x,y)是对当前模板中的(x,y)位置像素点相对于第一预设点的相对横向位置和相对纵向位置进行非线性运算得到的,P6(x,y)等于当前模板中的(x,y)位置像素点相对于第一预设点的相对横向位置,P7(x,y)等于当前模板中的(x,y)位置像素点相对于第一预设点的相对纵向位置;而在利用求解得到的滤波模型对当前块进行预测时,P1(x,y)是对当前块中的(x,y)位置像素点相对于第二预设点的相对横向位置进行偏移缩放得到的,P2(x,y)是对当前块中的(x,y)位置像素点相对于第二预设点的相对纵向位置进行偏移缩放得到的,P3(x,y)是对当前块中的(x,y)位置像素点相对于第二预设点的相对横向位置进行非线性运算得到的,P4(x,y)是对当前块中的(x,y)位置像素点相对于第二预设点的相对纵向位置进行非线性运算得到的,P5(x,y)是对当前块中的(x,y)位置像素点相对于第二预设点的相对横向位置和相对纵向位置进行非线性运算得到的,P6(x,y)等于当前块中的(x,y)位置像素点相对于第二预设点的相对横向位置,P7(x,y)等于当前块中的(x,y)位置像素点相对于第二预设点的相对纵向位置。其中,上述的进行偏移缩放可以理解为平移缩放,对相对横向位置进行偏移缩放的公式可为((x+u1)×h1),对相对纵向位置进行偏移缩放的公式可为((y+u2)×h2)。其中,u1、u2、h1和h2可以为预设的常数,例如可为8或4等。上述的非线性运算的方式不受限定,且对相对横向位置进行非线性运算的方式和对相对纵向位置进行非线性运算的方式可以相同或不相同。例如,对相对横向位2 2
置进行非线性运算的公式可为x或lgx等,对相对纵向位置进行非线性运算的公式可为y或x
e等,对相对横向位置和相对纵向位置进行非线性运算的公式可为((xy+u3)×h3),其中,u3和h3可以为预设的常数,例如可为8或4等。
[0129] 另外,滤波模型还可以包括常数项。例如,滤波模型的公式可以为其中,bias为常数。另例如,滤波模型的公式可以为
又例如,滤波模型的公式可以为
再例如,滤波模型的公式可以为 另又例如,滤
波模型的公式可以为 bias可
bitdepth‑1
以通过当前块所属图像的比特深度计算得到,例如bias=2 ;示例性地,假设比特深
10‑1 bitdepth‑1
度为10的图像中,常数2 =512,即2 为像素值512。当然,在其他实施例中,上述的常数也可以通过当前块所属图像的分辨率等参数计算得到。或者,上述的常数也可以是设定值。
[0130] 另外,滤波模型中还可以有参数归一化的限制,即滤波模型中所有参数之和为1。当然,在其他实施例中,滤波模型中也可以没有参数归一化的限制,即滤波模型中所有参数之和可以不等于1。
[0131] 另外,可以为滤波模型中至少一个参数设置取值范围,在求解的滤波模型中参数超出取值范围时,可以对滤波模型中参数进行修改,以将得到的滤波模型中参数限制在取值范围内。例如,公式 中,可以设置ai的取值范围为[0,1],也可以不设置此限制。本例中设置ai的取值范围为[0,1]。如果实际计算出的ai大于1,则将ai改为等于1。如果实际计算出的ai小于0,则将ai改为等于0。
[0132] 在一可实现的方式中,可以利用优化方法求解出滤波模型的参数,得到滤波模型。可选地,可以以所有像素位置的差值的融合值最小为优化目标,对滤波模型求出参数最优解而得到滤波模型。其中,每一像素的差值等于每一像素位置的预测值和当前模板中每一像素位置的值的差值,每一像素位置的预测值为通过上述滤波模型对该滤波模型对应的匹配块中相应像素的信息进行处理得到的值。在其他实施例中,也可以基于回归的MSE最小化技术(即LDL分解)求解滤波模型的参数。
[0133] 在另一个可实现的方式中,可以通过滤波模型列出至少一个方程式;对上述的至少一个方程式进行求解,得到滤波模型中的参数,如此即可得到滤波模型。具体地,可以根据滤波模型中待求解的参数的数量确定方程式的数量。例如,滤波模型含有6个待求解参数,则可以列出6个方程式。
[0134] 其中,在通过上述求解滤波模型参数的方法求解参数时,可以利用当前模板中的所有像素点进行滤波模型参数的求解。当然,在通过上述求解滤波模型参数的方法求解参数时,也可以利用当前模板中的部分像素点进行滤波模型参数的求解。
[0135] 进一步地,考虑到当前模板和/或两个参考模板中有些像素由于还未重建等原因无法确定像素值,可以利用当前模板和参考模板中公共区域的至少部分像素进行滤波模型参数的求解,其中,公共区域为当前模板中能够确定像素值的区域和参考模板中能够确定像素值的区域的交集,如此避免将无法确定像素值的像素代入到公式中而影响滤波模型参数的求解。
[0136] 由上述方法确定的公共区域内的每一点的像素值可以通过直接获取或填充方式确定像素值。此外,上述的能够确定像素值可以指能够确定像素的预测像素值或重建像素值的区域。
[0137] S103:通过至少一个滤波模型,对滤波模型对应的匹配块中每一像素的信息进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块。
[0138] 利用当前模板和参考模板求解出至少一个滤波模型的参数后,可以通过至少一个滤波模型,对滤波模型对应的匹配块中每一像素的信息进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块。
[0139] 在步骤S103中,由于一滤波模型的参数是采用至少一匹配块的参考模板和当前模板计算得到的,即每一滤波模型均有对应的至少一匹配块,如此采用一滤波模型对当前块进行预测值的计算的步骤可以包括:采用该滤波模型对其对应的匹配块进行滤波处理,而得到该子块的预测值。而采用该滤波模型对其对应的匹配块进行滤波处理具体可指,将该滤波模型对应的匹配块中每一像素的相关信息代入到该滤波模型中。
[0140] 与滤波模型的组成相对应,每一像素的信息可以为每一像素的梯度信息、每一像素的位置信息和每一像素的像素值信息等。
[0141] 其中,在一滤波模型包括梯度项的情况下,通过至少一个滤波模型,对该滤波模型对应的匹配块中每一像素的信息进行运算可以体现为:利用该滤波模型,对该滤波模型对应的匹配块中每一像素的梯度进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块。
[0142] 可选地,在一滤波模型包括像素值信息项的情况下,通过至少一个滤波模型,对该滤波模型对应的匹配块中每一像素的信息进行运算可以体现为:利用该滤波模型,对该滤波模型对应的匹配块中每一像素的像素值、和/或所述每一像素的邻域像素的像素值进行运算,得到当前块中对应像素的预测值,从而得到当前块的预测块。
[0143] 可选地,在一滤波模型包括位置信息项的情况下,通过滤波模型计算可以体现为:利用该滤波模型,对当前块中对应像素的位置信息进行运算,得到当前块中对应像素的预测值,从而得到当前块的预测块。
[0144] 具体地,当前块中对应像素的预测值可以等于像素信息值、梯度运算值、位置信息运算值和/或常数项的和。其中,像素信息值可为对所述滤波模型对应的匹配块中每一像素的像素值和/或所述每一像素的邻域像素的像素值进行运算得到的值,所述梯度运算值为对所述匹配块中每一像素的梯度进行运算得到的值,所述位置信息运算值为对所述当前块中对应像素的位置信息进行运算得到的值,所述常数项为对所述预设常数进行运算得到的值。
[0145] 例如,滤波模型包含梯度项和像素信息项的情况下,当前块中对应像素的预测值可以等于像素信息值与梯度运算值的和。
[0146] 又例如,滤波模型包含梯度项、位置信息项和像素信息项的情况下,当前块中对应像素的预测值可以等于像素信息值、位置信息运算值与梯度运算值的和。
[0147] 其中,像素信息值运算方法、梯度运算方法、位置信息运算方法和常数项具体可参见步骤S103中的内容,在此不作赘述。
[0148] 进一步地,考虑到利用滤波模型确定的当前块中像素的预测结果可能超出像素值的取值范围,在得到滤波模型确定的当前块中像素的预测结果后,可以将滤波模型确定的当前块中像素的预测结果截断到像素值的取值范围。如此,当前块中对应像素的预测值可以等于将像素信息值、梯度运算值、位置信息运算值和/或常数项的和截断到像素值的取值范围后的值。
[0149] 在一个具体的例子中,通过至少一个滤波模型,对匹配块中每一像素的信息进行运算的公式可为:
[0150] P(x,y)=a×G(x,y)+b1×L(x,y)+b2×LG(x,y)+c×((xy+8)×4)+d×bias;
[0151] 其中,G(x,y)=1×L(x,y‑1)+1×L(x+1,y)+1×L(x,y+1)+1×L(x‑1,y)‑4×L(x,y);
[0152] LG(x,y)=(1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)+2×L(x‑1,y)+4×L(x,y)+2×L(x+1,y)+1×L(x‑1,y+1)+2×L(x,y+1)+1×L(x+1,y+1))/16;
[0153] 其中,L(x,y)表示位置(x,y)的像素值,P(x,y)为预测结果,LG(x,y)表示像素值经过高斯滤波后的值,G(x,y)为Laplace算子计算的梯度项,a,b1,b2,c,d为需要计算的参数;可知除了将L(x,y)代入到滤波模型,还将(x,y)点相对于第二预设点的相对位置x和y、以及梯度G(x,y)代入到滤波模型,以通过滤波模型确定当前块中每一像素的预测结果。
[0154] 在另一个具体的例子中,通过至少一个滤波模型,对匹配块中每一像素的信息进行运算的公式可为:
[0155] P(x,y)=a1×Gver(x,y)+a2×Ghor(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0156] Gver(x,y)=1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)‑1×L(x‑1,y+1)‑2×L(x,y+1)‑1×L(x+1,y+1);
[0157] Ghor(x,y)=1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1)‑1×L(x+1,y‑1)‑2×L(x+1,y)‑1×L(x+1,y+1);
[0158] 其中,L(x,y)表示位置(x,y)的像素值,P(x,y)为预测结果,Ghor(x,y)为水平梯度项,Gver(x,y)为垂直梯度项,a1,a2,b,c1,c2,d为需要计算的参数。
[0159] 在又一个具体的例子中,通过至少一个滤波模型,对匹配块中每一像素的信息进行运算的公式可为:
[0160] P(x,y)=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0161] G(x,y)=1×L(x,y‑1)+2×L(x+1,y‑1)+1×L(x+1,y)‑1×L(x‑1,y)‑2×L(x‑1,y+1)‑1×L(x,y+1);
[0162] 基于上述公式,L(x,y)表示位置(x,y)的像素值,P(x,y)为预测结果,G(x,y)为梯度项,a,b,c1,c2,d为需要计算的参数。
[0163] 在再一个具体的例子中,通过至少一个滤波模型,对匹配块中每一像素的信息进行运算的公式可为:
[0164] P(x,y)=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0165] G(x,y)=1×L(x‑1,y)+2×L(x‑1,y‑1)+1×L(x,y‑1)‑1×L(x+1,y)‑2×L(x+1,y+1)‑1×L(x,y+1);
[0166] 其中,L(x,y)表示位置(x,y)的像素值,P(x,y)为预测结果,G(x,y)为梯度项,a,b,c1,c2,d为需要计算的参数。
[0167] 在另又一个具体的例子中,通过至少一个滤波模型,对匹配块中每一像素的信息进行运算的公式可为:
[0168] P(x,y)=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0169] G(x,y)=1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)‑1×L(x‑1,y+1)‑2×L(x,y+1)‑1×L(x+1,y+1);
[0170] 其中L(x,y)表示位置(x,y)的像素值,P(x,y)为预测结果,G(x,y)为梯度项,a,b,c1,c2,d为需要计算的参数。
[0171] 在另再一个具体的例子中,通过至少一个滤波模型,对匹配块中每一像素的信息进行运算的公式可为:
[0172] 通过至少一个滤波模型,对匹配块中每一像素的信息进行运算的公式可为:
[0173] P(x,y)=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0174] G(x,y)=1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1)‑1×L(x+1,y‑1)‑2×L(x+1,y)‑1×L(x+1,y+1);
[0175] 其中L(x,y)表示位置(x,y)的像素值,P(x,y)为预测结果,G(x,y)为梯度项,a,b,c1,c2,d为需要计算的参数。
[0176] 基于上述公式得到P(x,y)后,可以将预测结果P(x,y)截断到规定的像素范围,例如比特深度为10的图像中像素范围为[0,1023],利用公式Pbi‑pred(x,y)=clip(P(x,y))将当前块A的所有像素的预测结果进行截断到像素范围为[0,1023],得到当前块中每个点的预测值Pbi‑pred,如此即可得到当前块的预测块。当然,也可以不将预测结果P(x,y)截断到规定的像素范围,即直接将P(x,y)作为当前块中(x,y)像素点的预测值。
[0177] 在本实施方式中,基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块后,可以利用当前模板和至少一个匹配块对应的参考模板求解出至少一个滤波模型的参数;进而可通过至少一个滤波模型,对滤波模型对应的匹配块中每一像素的信息进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块,本申请的滤波模型包含梯度项、像素值信息项、位置信息项和/或常数项等,如此不仅利用当前像素及其附近像素值的简单线性组合进行计算,模型中利用到的信息相对较多,表达能力较强,有利于图像块的预测。
[0178] 一种相关技术在利用帧内模板匹配预测方法确定当前块的最佳匹配块后,会对最佳匹配块进行滤波操作,以得到当前块的预测块,从而提高预测精度,并使预测块的特征适用于局部邻域。
[0179] 如图7所示,该相关技术的滤波操作可以包括:基于最佳匹配块的相邻模板区域(即参考模板)和当前块的相邻模板区域(即当前模板)确定出滤波模型的参数,进而利用求解出的滤波模型对最佳匹配块进行滤波处理,而得到当前块的预测块。
[0180] 在滤波模型参数求解期间,相关技术以最佳匹配块模板区域的重建亮度样本作为滤波器输入,并以当前块模板区域对应亮度样本为目标样本,然后基于回归的MSE最小化技术(即LDL分解)求解参数。
[0181] 且相关技术的滤波模型使用加号形状的6抽头滤波器,其中前5抽头为加号滤波器覆盖的空域样本,包括如图8所示的最佳匹配块中的中心(C)样本,及其上/北(N)、下/南(S)、左/西(W)和右/东(E)相邻的对应位置样本。
[0182] 另外,6抽头滤波器的第6抽头为偏置项B。B表示输入和输出之间的标量偏移,并且被设置为中间亮度值(对于10位内容为512),滤波模型的输出计算如下所示:
[0183] predVal=c0C+c1N+c2S+c3W+c4E+c5b;
[0184] 其中,当前模板的大小、形状与参考模板的大小、形状相同。其中,当前模板为当前块的上方4列和左侧4行,具体取决于其可用性。此外,滤波操作时的当前块的模板可以与确定当前块的最佳匹配块时当前块的模板相同。
[0185] 在上述相关技术中,滤波模型仅利用当前像素及其附近像素值的简单线性组合进行计算,模型中利用到的信息较少,表达能力有限,不利于图像块的预测。
[0186] 基于此,本申请提出第二种实施方式的帧内滤波预测方法,该方法先在当前块的模板区域中搜索当前块的至少一个匹配块,接着利用当前模板和参考模板求解出至少一个滤波模型的参数,进而通过至少一个所述滤波模型,对所述滤波模型对应的匹配块中每一像素的梯度进行运算,和/或,对所述当前块中对应像素的位置信息进行运算,得到所述当前块中对应像素的预测值,以得到当前块的预测块,如此滤波模型结合了像素的梯度项和/或位置信息项,从而本实施方式的帧内滤波预测方法利用了更丰富的信息,提高了预测的准确性,提高了压缩效率。
[0187] 具体地,如图9所示,本申请提出的帧内滤波预测方法具体包括以下步骤。需要注意的是,以下步骤编号仅用于简化说明,并不旨在限制步骤的执行顺序,本实施方式的各步骤可以在不违背本申请技术思想的基础上,任意更换执行顺序。此外,该实施方式的帧内滤波预测方法的相关内容可以和其余实施方式的帧内滤波预测方法进行组合。
[0188] S201:基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块。
[0189] 可参见步骤S101,在此不做赘述。
[0190] S202:利用当前模板和至少一个匹配块对应的参考模板求解出至少一个滤波模型的参数。
[0191] 可参见步骤S102,在此不做赘述。
[0192] S203:通过至少一个所述滤波模型,对所述滤波模型对应的匹配块中每一像素的梯度进行运算,和/或,对所述当前块中对应像素的位置信息进行运算,得到所述当前块中对应像素的预测值,以得到当前块的预测块。
[0193] 可参见步骤S103,在此不做赘述。
[0194] 在本实施方式中,先在当前块的模板区域中搜索当前块的至少一个匹配块,接着利用当前模板和至少一个匹配块对应的参考模板求解出至少一个滤波模型的参数,进而通过至少一个所述滤波模型,对所述滤波模型对应的匹配块中每一像素的梯度进行运算,和/或,对所述当前块中对应像素的位置信息进行运算,得到所述当前块中对应像素的预测值,以得到当前块的预测块,如此滤波模型结合了像素的梯度项和/或位置信息项,从而本实施方式的帧内滤波预测方法利用了更丰富的信息,提高了预测的准确性,提高了压缩效率。
[0195] 另外,本申请还提出第三种实施方式的帧内滤波预测方法,如图10所示,该实施方式的帧内滤波预测方法可以包括以下步骤。需要注意的是,以下步骤编号仅用于简化说明,并不旨在限制步骤的执行顺序,本实施方式的各步骤可以在不违背本申请技术思想的基础上,任意更换执行顺序。此外,该实施方式的帧内滤波预测方法的相关内容可以和其余实施方式的帧内滤波预测方法进行组合。
[0196] S301:对参考模板中像素进行分类,得到至少两个像素集合。
[0197] 在基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块之后,可以先对各个匹配块对应的参考模板中像素进行分类而得到各个匹配块对应的参考模板中的至少两个像素集合,以便后续确定出各个匹配块对应的参考模板中的每个像素集合对应的滤波模型的参数,进而便于后续在利用与各个匹配块对应的参考模板相同的分类标准对各个匹配块进行分类的情况下,利用每一像素集合对应的滤波模型对当前块中相应像素集合中的像素进行预测,如此不同类别应用对应类别的模型,可以根据像素的具体情况针对性进行预测,有利于提高预测准确率。
[0198] 对参考模板中像素进行分类的方式不受限定,例如可采用下述任一种分类方式对参考模板中像素进行分类。
[0199] 在一具体的实现方式中,可以基于第一阈值对参考模板中像素进行分类。其中,第一阈值可以是预先设定的,也可以是基于参考模板和/或参考模板所对应的匹配块中像素值的统计信息确定的,或者可以是基于参考模板和/或参考模板所对应的匹配块中像素梯度值的统计信息确定的。此外,第一阈值可以有多个,也可以仅有一个。例如,如图11所示,可以将参考模板的所有像素的像素值均值作为第一阈值,或,可以将参考模板和参考模板所对应的匹配块的所有像素的像素值均值作为第一阈值,或,可以将参考模板所对应的匹配块的所有像素的像素值均值作为第一阈值;接着可将参考模板中大于第一阈值的所有像素归为第一个像素集合(例如深色像素集合),将参考模板中小于第一阈值的所有像素归为第二个像素集合(例如显色像素集合),而参考模板中等于第一阈值的所有像素可以归到第一个像素集合、也可以归到第二个像素集合。另例如,可以将参考模板的所有像素的梯度值均值作为第一阈值,或,可以将参考模板及其所对应的匹配块的所有像素的梯度值均值作为第一阈值,或,可以将参考模板所对应的匹配块的所有像素的梯度值均值作为第一阈值;接着可将参考模板中梯度值大于第一阈值的所有像素归为第一个像素集合,将参考模板中梯度值小于第一阈值的所有像素归为第二个像素集合,而参考模板中等于第一阈值的所有像素可以归到第一个像素集合、也可以归到第二个像素集合。又例如,可以计算出参考模板的所有像素的像素值均值,将像素值均值和预设负常数的和作为第一个第一阈值,将像素值均值和预设正常数的和作为第二个第一阈值,将参考模板中小于第一个第一阈值的所有像素归为第一个像素集合,将参考模板中大于第一个第一阈值且小于第二个第一阈值的所有像素归为第二个像素集合,将参考模板中大于第二个第一阈值的所有像素归为第三个像素集合,而参考模板中等于第一个第一阈值的所有像素可以归到第一个像素集合、也可以归到第二个像素集合,参考模板中等于第二个第一阈值的所有像素可以归到第二个像素集合、也可以归到第三个像素集合。当然,在其他的实施例中,像素值的统计信息也可以指像素值的中值等,像素梯度值的统计信息也可以指像素梯度值的中值等。
[0200] 在另一具体的实现方式中,可以基于像素梯度方向对参考模板中像素进行分类。可选地,可以计算参考模板中每一像素的至少两个方向上的梯度值;将每一像素的梯度值/梯度绝对值最大的方向作为每一像素的梯度方向;将参考模板中梯度方向相同的所有像素归为同一个像素集合,将参考模板中梯度方向不同的像素归为不同像素集合,即将每一像素归到其梯度方向对应的像素集合中。例如,可以计算参考模板中每一像素在水平方向上和垂直方向上的梯度值,比较两者绝对值大小,如果水平梯度绝对值大于垂直梯度绝对值,则认为像素梯度方向为水平方向,否则认为像素方向为垂直方向;将梯度方向为水平方向的所有像素点分为一类,梯度方向为垂直方向的所有像素点分为一类;其中,
[0201] 计算水平梯度和垂直梯度的方法可如下所示:
[0202] Gver(x,y)=1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)‑1×L(x‑1,y+1)‑2×L(x,y+1)‑1×L(x+1,y+1);
[0203] Ghor(x,y)=1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1)‑1×L(x+1,y‑1)‑2×L(x+1,y)‑1×L(x+1,y+1);
[0204] 其中,L(x,y)表示位置(x,y)的像素值,Ghor(x,y)为水平梯度项,Gver(x,y)为垂直梯度项。又例如,可以计算出参考模板中每一像素在水平方向上、垂直方向上、左上到右下的方向上、和/或、右上到左下的方向上的梯度值,将每一像素归到其梯度方向对应的像素集合中。
[0205] S302:利用每个像素集合及当前模板中与每个像素集合对应的像素集合,求解出每个像素集合对应的滤波模型的参数。
[0206] 对参考模板中像素进行分类而得到至少两个像素集合后,可以确定出每个像素集合对应的滤波模型的参数。
[0207] 其中,每一像素集合可采用一种滤波模型,也可以采用多种滤波模型。而不同像素集合对应的滤波模型的种类可以相同,也可以不相同。其中,同一种滤波模型是指滤波模型使用的计算公式相同;且在滤波模型包含梯度项的情况下,滤波模型的梯度计算公式也相同;另外在滤波模型的像素值信息项包含位置(x,y)处的像素值以及附近的像素值经过平滑滤波得到的滤波后的像素值的情况下,滤波模型的像素值信息项中的平滑滤波公式也相同。而不同种类的滤波模型是指滤波模型使用的计算公式不相同;和/或,且在滤波模型包含梯度项的情况下,滤波模型的梯度计算公式不相同;和/或,另外在滤波模型的像素值信息项包含位置(x,y)处的像素值以及附近的像素值经过平滑滤波得到的滤波后的像素值的情况下,滤波模型的像素值信息项中的平滑滤波公式不相同。
[0208] 此外,利用每个像素集合及当前模板中与每个像素集合对应的像素集合,求解出每个像素集合对应的滤波模型的参数,是指:将每个像素集合中的多个像素的梯度信息、位置信息和/或像素值信息代入到滤波模型中,并基于这多个像素在当前模板中的值,求解出每个像素集合对应的滤波模型的参数。若存在一像素集合对应有多种滤波模型,则利用每个像素集合及当前模板中与每个像素集合对应的像素集合,求解出每个像素集合对应的滤波模型的参数,是指:将每个像素集合中的多个像素的梯度信息、位置信息和/或像素值信息代入到每一滤波模型中,并基于这多个像素在当前模板中的值,求解出每个像素集合对应的每一滤波模型的参数。
[0209] 示例性地,在步骤S301基于像素梯度方向对参考模板中像素进行分类的情况下,具体地,可计算当前点的水平梯度和垂直梯度,比较两者绝对值大小,如果水平梯度绝对值大于垂直梯度绝对值,则认为像素梯度方向为水平方向,否则认为像素方向为垂直方向。水平方向梯度的像素点为第一类,垂直方向梯度的像素点为第二类。计算水平梯度和垂直梯度的方法如下:
[0210] Gver(x,y)=1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)‑1×L(x‑1,y+1)‑2×L(x,y+1)‑1×L(x+1,y+1);
[0211] Ghor(x,y)=1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1)‑1×L(x+1,y‑1)‑2×L(x+1,y)‑1×L(x+1,y+1);
[0212] 其中L(x,y)表示位置(x,y)的像素值,Ghor(x,y)为水平梯度项,Gver(x,y)为垂直梯度项。
[0213] 第一类和第二类像素可以用不同的公式,如下公式分别为第一类像素点应用的公式和第二类像素点应用的公式:
[0214] y=a×Ghor(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0215] y=a×Gver(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0216] 如此,可以将每个像素集合中的多个像素的梯度信息、位置信息和/或像素值信息代入到每一像素集合对应的滤波模型中,并基于这多个像素在当前模板中的值,求解出每个像素集合对应的每一滤波模型的参数。
[0217] S303:利用与所述参考模板相同的分类标准对参考模板对应的匹配块进行分类,得到参考模板对应的匹配块中的至少两个像素集合。
[0218] 其中,参考模板对应的匹配块和参考模板的分类标准相同。
[0219] 在一个具体的实例中,分类标准相同可以指:在使用像素值统计信息将参考模板中像素分为n类的情况下,也利用像素值统计信息将参考模板对应的匹配块中像素分为n类。但是参考模板中像素分类所依据的像素值统计信息和参考模板对应的匹配块中像素分类所依据的像素值统计信息可以相同,也可以不相同,在此不做限制。
[0220] 例如,如图11所示,将参考模板的所有像素的像素值均值作为第一阈值,而将参考模板对应的匹配块的所有像素的像素值均值作为第二阈值,将参考模板对应的匹配块中大于第二阈值的所有像素归为第一个像素集合(例如深色像素集合),将参考模板对应的匹配块中小于第二阈值的所有像素归为第二个像素集合(例如浅色像素集合),而参考模板对应的匹配块中等于第二阈值的所有像素可以归到第一个像素集合、也可以归到第二个像素集合,如此后续可以利用参考模板中第一个像素集合对应的滤波模型对参考模板对应的匹配块中第一个像素集合中的所有像素进行预测。又例如,将参考模板和参考模板对应的匹配块的所有像素的像素值均值即作为第一阈值、又作为第二阈值,将参考模板对应的匹配块中大于第二阈值的所有像素归为第一个像素集合,将参考模板对应的匹配块中小于第二阈值的所有像素归为第二个像素集合,而参考模板对应的匹配块中等于第二阈值的所有像素可以归到第一个像素集合、也可以归到第二个像素集合,如此后续可以利用参考模板中第一个像素集合对应的滤波模型对参考模板对应的匹配块中第一个像素集合中的所有像素进行滤波,利用参考模板中第二个像素集合对应的滤波模型对参考模板对应的匹配块中第二个像素集合中的所有像素进行滤波。
[0221] 在另一个具体的实例中,分类标准相同可以指:在使用像素梯度值统计信息将参考模板中像素分为n类的情况下,也利用像素梯度值统计信息将参考模板对应的匹配块中像素分为n类。但是参考模板中像素分类所依据的像素梯度值统计信息和参考模板对应的匹配块中像素分类所依据的像素梯度值统计信息可以相同,也可以不相同,在此不做限制。
[0222] 在又一个具体的实例中,分类标准相同也可以指:在使用像素梯度方向将参考模板中像素分为n类的情况下,也利用像素梯度方向将参考模板对应的匹配块中像素分为n类。例如,计算参考模板中每一像素在水平方向上和垂直方向上的梯度值,将每一像素梯度值最大的方向作为每一像素的梯度方向,将参考模板中每一像素归到其梯度方向对应的像素集合中,如此可以得到参考模板中的水平方向像素集合和垂直方向像素集合;同样地,也可以计算参考模板对应的匹配块中每一像素在水平方向上和垂直方向上的梯度值,将每一像素梯度值最大的方向作为每一像素的梯度方向,将参考模板对应的匹配块中每一像素归到其梯度方向对应的像素集合中,如此可以得到参考模板对应的匹配块中的水平方向像素集合和垂直方向像素集合,以便后续利用水平方向对应的滤波模型对参考模板对应的匹配块中水平方向像素集合中每一像素进行滤波,利用垂直方向对应的滤波模型对参考模板对应的匹配块中垂直方向像素集合中每一像素进行滤波。
[0223] 此外,步骤S303的执行顺序不受限定,例如可以在步骤S302之前执行,也可以在步骤S302之后执行……
[0224] S304:利用每一像素所属像素集合对应的滤波模型,对匹配块中每一像素的信息进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块。
[0225] 确定参考模板对应的匹配块中的至少两个像素集合,且确定参考模板中每一像素集合对应的滤波模型后,由于参考模板对应的匹配块和参考模板是使用的相同分类标准进行像素分类的,从而参考模板对应的匹配块的每一像素集合均有一对应的参考模板的像素集合,例如参考模板对应的匹配块中大于第二阈值的像素集合与参考模板中大于第一阈值的像素集合相对应,又例如,参考模板对应的匹配块中小于第二阈值的像素集合与参考模板中小于第一阈值的像素集合相对应……如此就可以将该匹配块的每一像素集合对应的参考模板像素集合对应的滤波模型作为该匹配块的每一像素集合对应的滤波模型,从而在步骤S304中可以利用每一像素所属像素集合对应的滤波模型,对参考模板对应的匹配块中每一像素的信息进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块。
[0226] 在一具体的实例中,步骤S301将参考模板的所有像素的像素值均值作为第一阈值,并利用第一阈值对参考模板中像素进行分类得到两个像素集合,步骤S303将参考模板对应的匹配块的所有像素的像素值均值作为第二阈值,将参考模板对应的匹配块中大于第二阈值的所有像素归为第一个像素集合,将参考模板对应的匹配块中小于第二阈值的所有像素归为第二个像素集合,而参考模板对应的匹配块中等于第二阈值的所有像素可以归到第一个像素集合、也可以归到第二个像素集合,如此可以将参考模板中大于第一阈值的像素所属像素集合对应的滤波模型作为参考模板对应的匹配块中大于第二阈值的像素所属像素集合对应的滤波模型,从而步骤S304可以利用参考模板中大于第一阈值的像素所属像素集合对应的滤波模型对参考模板对应的匹配块中第一个像素集合中的所有像素进行预测,同样地,也可以利用参考模板中小于第一阈值的像素所属像素集合对应的滤波模型对参考模板对应的匹配块中第二个像素集合中的所有像素进行预测。
[0227] 在另一具体的实例中,步骤S301将参考模板的所有像素的像素梯度值均值作为第一阈值,并利用第一阈值对参考模板中像素进行分类得到两个像素集合;步骤S303将参考模板对应的匹配块的所有像素的像素梯度值均值作为第二阈值,将参考模板对应的匹配块中像素梯度值大于第二阈值的所有像素归为第一个像素集合,将参考模板对应的匹配块中像素梯度值小于第二阈值的所有像素归为第二个像素集合,而参考模板对应的匹配块中像素梯度值等于第二阈值的所有像素可以归到第一个像素集合、也可以归到第二个像素集合,如此可以将参考模板中梯度值大于第一阈值的像素所属像素集合对应的滤波模型作为参考模板对应的匹配块中梯度值大于第二阈值的像素所属像素集合对应的滤波模型,从而步骤S304可以利用参考模板中像素梯度值大于第一阈值的像素所属像素集合对应的滤波模型对参考模板对应的匹配块中第一个像素集合中的所有像素进行预测,同样地,也可以利用参考模板中像素梯度值小于第一阈值的像素所属像素集合对应的滤波模型对参考模板对应的匹配块中第二个像素集合中的所有像素进行预测。
[0228] 在又一个具体的实例中,步骤S301计算参考模板中每一像素在水平方向上和垂直方向上的梯度值,将每一像素梯度值最大的方向作为每一像素的梯度方向,将参考模板中每一像素归到其梯度方向对应的像素集合中,如此可以得到参考模板中的水平方向像素集合和垂直方向像素集合;步骤S303也计算参考模板对应的匹配块中每一像素在水平方向上和垂直方向上的梯度值,将每一像素梯度值最大的方向作为每一像素的梯度方向,将参考模板对应的匹配块中每一像素归到其梯度方向对应的像素集合中,如此可以得到参考模板对应的匹配块中的水平方向像素集合和垂直方向像素集合,如此可以将参考模板中梯度方向为水平方向的像素集合对应的滤波模型作为参考模板对应的匹配块中梯度方向为水平方向的像素集合对应的滤波模型,从而步骤S304可以利用水平方向对应的滤波模型对参考模板对应的匹配块中水平方向像素集合中每一像素进行滤波,同样地,也可以利用垂直方向对应的滤波模型对参考模板对应的匹配块中垂直方向像素集合中每一像素进行滤波。
[0229] 在本实施方式中,对参考模板中像素进行分类而得到至少两个像素集合,并且确定出每个像素集合对应的滤波模型的参数,如此可在利用与所述参考模板相同的分类标准对参考模板对应的匹配块进行分类的情况下,利用每一像素集合对应的滤波模型对当前块中相应像素集合中的像素进行预测,从而不同类别应用对应类别的模型,进而可以根据像素的具体情况针对性进行预测,有利于提高预测准确率。即采用本实施方式的方法,可以将区域内的像素点分类,尤其是在有梯度项预测时,可以根据像素点的梯度信息自适应地选择应用的模型,可以更加细化预测的结果,增加预测的准确性。
[0230] 另外,本申请还提出第四种实施方式的帧内滤波预测方法,如图12所示,该实施方式的帧内滤波预测方法可以包括以下步骤。需要注意的是,以下步骤编号仅用于简化说明,并不旨在限制步骤的执行顺序,本实施方式的各步骤可以在不违背本申请技术思想的基础上,任意更换执行顺序。此外,该实施方式的帧内滤波预测方法的相关内容可以和其余实施方式的帧内滤波预测方法进行组合。
[0231] S401:利用参考模板中的至少一个子区域组合及当前模板中与每个子区域组合相对应的区域,求解出每个子区域组合对应的滤波模型的参数,得到至少一个滤波模型。
[0232] 在基于当前块所属图像中的预设搜索范围搜索出当前块的至少一个匹配块之后,可以利用各个匹配块对应的参考模板中的至少一个子区域组合及当前模板中与每个子区域组合相对应的区域,求解出各个匹配块对应的每个子区域组合对应的滤波模型的参数,得到至少一个滤波模型,以便后续利用每个滤波模型,对滤波模型所对应的匹配块中每一像素的信息进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块。
[0233] 其中,子区域组合为参考模板中的至少一个子区域的组合,参考模板包括至少两个子区域。如此在步骤S401之前,可以对参考模板进行划分,得到至少两个子区域。可以理解的是,划分方式不限定。
[0234] 例如,可以基于位置对参考模板进行划分,例如,如图3所示,可以将参考模板划分为上方子区域、左上方子区域和左方子区域。
[0235] 另例如,可以基于像素值统计信息对参考模板进行划分,具体地,可以将参考模板中所有像素的像素值均值作为第一阈值,利用第一阈值将参考模板中所有像素分为大于第一阈值的子区域(可以包含像素值等于第一阈值的像素,也可以不包含像素值等于第一阈值的像素)和小于第一阈值的子区域(可以包含像素值等于第一阈值的像素,也可以不包含像素值等于第一阈值的像素)。
[0236] 又例如,可以基于像素梯度值统计信息对参考模板进行划分,具体地,可以将参考模板中所有像素的像素梯度值均值作为第一阈值,利用第一阈值将参考模板中所有像素分为大于第一阈值的子区域(可以包含像素梯度值等于第一阈值的像素,也可以不包含像素梯度值等于第一阈值的像素)和小于第一阈值的子区域(可以包含像素梯度值等于第一阈值的像素,也可以不包含像素梯度值等于第一阈值的像素)。
[0237] 再例如,可以基于像素梯度方向对参考模板进行划分,具体地,可以将参考模板中属于同一个梯度方向的所有像素归为同一个子区域,将属于不同梯度方向的像素归为不同子区域。
[0238] 基于上述方式对参考模板进行划分得到至少两个子区域后,可以基于子区域组合中的像素确定对应每个子区域组合的至少一个滤波模型。子区域组合由至少两个子区域中的至少一个子区域组合而成。
[0239] 在一示例中,在步骤S401基于位置将参考模板划分为图4所示的子区域A、子区域B和子区域C的情况下,可以通过子区域A和B的组合求解上滤波模型,通过子区域A和C的组合求解左滤波模型、通过子区域B和C的组合求解左和上滤波模型。
[0240] 在另一示例中,在步骤S401基于位置将参考模板划分为图4所示的子区域A、子区域B和子区域C的情况下,可以通过子区域B求解上滤波模型,通过子区域C求解左滤波模型、通过子区域B和C的组合求解左和上滤波模型。
[0241] 在又一示例中,在步骤S401基于阈值将参考模板进行划分的情况下,可以通过至少部分阈值范围中每个阈值范围对应的子区域求解至少部分阈值范围中每个阈值范围对应的滤波模型,以得到至少部分阈值范围对应的滤波模型。在一个具体的例子中,采用基于像素值统计信息划分区域的方法,获得参考模板内的所有像素的像素值均值T,假设T=300,以0.8*T=240为低阈值TL、1.2*T=360为高阈值TH,低于阈值TL的像素用于求解低阈值模型、高于阈值TL的像素用于求解高阈值模型、介于TL和TH之间的像素用于求解中阈值模型。在再一具体的例子中,采用基于像素的梯度阈值划分区域的方法,先根据索贝尔算子计算参考模板内所有像素的梯度值,获得参考模板内的所有像素的梯度均值TG,假设TG=
300,以0.8*TG=240为低梯度阈值TGL、1.2*TG=360为高梯度阈值TGH,梯度值低于梯度阈值TGL的像素用于求解低梯度阈值模型、梯度值高于梯度阈值TGL的像素用于求解高梯度阈值模型、梯度值介于TGL和TGH之间的像素用于求解中梯度阈值模型。在又一个具体的例子中,采用基于像素值统计信息划分区域的方法,获得参考模板内的所有像素的像素值均值T,假设T=300,以0.8*T=240为低阈值TL、1.2*T=360为高阈值TH,低于阈值TL的像素用于求解低阈值模型、介于TL和TH之间的像素用于求解中阈值模型。
[0242] S402:利用每个滤波模型,对滤波模型对应的匹配块中每一像素的信息进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块。
[0243] 通过步骤S401求得至少一个滤波模型后,可以利用每个滤波模型对滤波模型对应的匹配块中所有像素的信息进行运算,得到当前块对应于每一滤波模型的预测块。
[0244] 在本实施方式中,利用至少一个子区域组合及当前模板中与每个子区域组合相对应的区域,求解出每个子区域组合对应的滤波模型的参数,得到至少一个滤波模型,接着利用每个滤波模型,对滤波模型对应的匹配块中每一像素的信息进行运算,得到当前块中对应像素的预测值,以得到当前块的预测块,如此可以允许将参考模板划分为多个子区域,并且每个子区域组合可独立用于模型求解,进而可选择出最佳的子区域组合,即确定出最佳的滤波模型,以适配不同的图像内容,有利于提高预测准确率;且可以选择一部分区域计算模型,一定程度地解决了部分模板区域与块区域纹理不一致的情况下预测的不准确的问题,提高了预测模型的适应性。
[0245] 基于上述内容可知,在不违背第一实施方式的帧内滤波预测方法的原理基础上,可以采用多种帧内滤波预测方法对当前块的至少一个匹配块进行滤波而确定当前块的预测块。也就是说,在不违背第一实施方式的帧内滤波预测方法的原理基础上,可以设置多种候选模式。
[0246] 所采用的多种帧内滤波预测方法可以包括:
[0247] a、以滤波模型的不同计算公式作为不同的帧内滤波预测方法,如此可将滤波模型的多种计算公式作为多个候选模式。
[0248] b、不同方向子区域计算模型的方法作为不同的帧内滤波预测方法,即可将利用不同子区域组合中像素计算滤波模型作为多个候选模式。
[0249] c、单模型方法和第三种实施方式的帧内滤波预测方法可以作为不同种类的帧内滤波预测方法,即可将单模型方法和第三种实施方式的帧内滤波预测方法作为不同的候选模式。
[0250] d、可将当前块的多个匹配块作为多个候选模式。
[0251] f、以上方法的组合情况作为不同模式。具体地,(1)计算公式有h个可选择,(2)用不同方向区域计算模型m种可选择,(3)单模型方法和多模型p(p=2)种方法可选择,(4)匹配块有t种可选择。当(1)~(4)满足多个的时候,可以将其可选择的个数相乘,得到此情况下候选模式数量。
[0252] 在不违背第一实施方式的帧内滤波预测方法的原理基础上,有多种候选模式可选择的情况下,可以采用一些代价比较或统计的方法从这多种候选模式(即选择模式列表)选择出最佳模式进行预测滤波过程。
[0253] 从上述多种候选模式中选择最佳模式的方式不受限制。
[0254] 在第一种示例中,可以利用RDO方法选择出所有候选模式中的最佳模式。具体地,可以采用每种候选模式对当前块进行预测滤波,而得到当前块对应于每种候选模式的预测块;基于每种候选模式的预测块,计算出每种候选模式的率失真代价;基于所有候选模式的率失真代价,从所有候选模式中选出最佳模式。在该示例中,也可以基于当前模板对应于每一候选模式的预测结果计算出每一候选模式的模板代价,基于模板代价对本申请帧内滤波预测方法的所有候选模式进行重排序,也就是基于模板代价对候选模式列表中的索引进行重排,一般来说模板代价小的候选模式预测的当前块的代价也会小些,如此可以使得确定的最佳模式的索引值变小,从而可以有助于降低编码码流量。
[0255] 在第二种示例中,可以利用当前模板的预测结果根据模板代价将本申请帧内滤波预测方法的所有预测模式进行重新排序,再选择其中最优的几种模式进行RDO选择过程。具体地,可以基于当前模板对应于每一候选模式的预测结果计算出每一候选模式的模板代价,基于模板代价从本申请帧内滤波预测方法的所有预测模式选择出最优的几种候选模式;对于选出的最优的几种候选模式,采用每种候选模式对当前块进行预测滤波,而得到当前块对应于每种候选模式的预测块;基于每种候选模式的预测块,计算出每种候选模式的率失真代价;基于选出的最优的几种候选模式的率失真代价,从最优的几种候选模式中选出最佳模式。在本示例中,根据模板代价将所有预测模式进行重新排序,也就是基于模板代价对候选模式列表中的索引进行重排,一般来说模板代价小的候选模式预测的当前块的代价也会小些,如此可以有助于确定的最佳模式的索引值变小,从而可以有助于降低编码码流量。
[0256] 在第三种示例中,当带有不同梯度项的公式作为不同模式时,可以根据像素梯度统计信息将模式进行重新排序,再选择其中最优的几种模式进行RDO选择过程。具体地,可以统计参考模板和/或匹配块中每一梯度方向的像素总数量,基于所有梯度方向的像素总数量从本申请帧内滤波预测方法的所有预测模式选择出至少两个候选模式;对于选出的至少两个候选模式,采用每种候选模式对当前块进行预测滤波,而得到当前块对应于每种候选模式的预测块;基于每种候选模式的预测块,计算出每种候选模式的率失真代价;基于选出的至少两个候选模式的率失真代价,从至少两个候选模式中选出最佳模式。其中,基于所有梯度方向的像素总数量从本申请帧内滤波预测方法的所有预测模式选择出至少两个候选模式可以指,将像素总数量最多的梯度方向的所有候选模式作为选出的至少两个候选模式,或者可以为将像素总数量最多的和次多的梯度方向的所有候选模式作为选出的至少两个候选模式。此外,在本示例中,还可以基于所有梯度方向的像素总数量对所有预测模式进行重新排序,也就是基于所有梯度方向的像素总数量对候选模式列表中的索引进行重排。例如可以将像素总数量最多的梯度方向的所有候选模式排在前面,将像素总数量次多的梯度方向的所有候选模式排在像素总数量最多的梯度方向的所有候选模式的后面,将像素总数量次次多的梯度方向的所有候选模式排在像素总数量次多的梯度方向的所有候选模式的后面……可以有助于确定的最佳模式的索引值变小,从而可以有助于降低编码码流量。
[0257] 在第四种示例中,利用模板区域的预测结果根据模板代价选择模式。具体地,可以基于当前模板对应于每一候选模式的预测结果计算出每一候选模式的模板代价,基于模板代价从本申请帧内滤波预测方法的所有预测模式选择出最佳模式,然后利用最优的候选模式对当前块进行滤波预测,而得到当前块的预测块,如此利用模板区域代价进行模式选择或模式的重新排序的方法可以减少句法的传输。
[0258] 在一具体的例子中,可以设定不同的公式作为不同的模式。采用模板区域的预测结果根据模板代价选择模式。
[0259] 其中,模式1的滤波模式的公式为y=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0260] 其中,G(x,y)=1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1)‑1×L(x+1,y‑1)‑2×L(x+1,y)‑1×L(x+1,y+1)。即模式1的梯度项为水平梯度。
[0261] 模式2的滤波模式的公式为y=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0262] G(x,y)=1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)‑1×L(x‑1,y+1)‑2×L(x,y+1)‑1×L(x+1,y+1)。即模式2的梯度项为垂直梯度。
[0263] 模式3的滤波模式的公式为y=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0264] G(x,y)=1×L(x‑1,y)+2×L(x‑1,y‑1)+1×L(x,y‑1)‑1×L(x+1,y)‑2×L(x+1,y+1)‑1×L(x,y+1)。即模式3的梯度项为左上到右下的斜对角方向。
[0265] 模式4的滤波模式的公式为y=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0266] G(x,y)=1×L(x,y‑1)+2×L(x+1,y‑1)+1×L(x+1,y)‑1×L(x‑1,y)‑2×L(x‑1,y+1)‑1×L(x,y+1)。即模式4的梯度项为右上到左下的斜对角方向。
[0267] 将4种模式作为4种不同的方法,分别进行模型求解,得到4种模式对应的4个模型。将TMP块的模板区域像素作为输入,分别应用4个模型预测得到经过滤波后的模板。计算其与当前模板的损失,这里可以计算SAD,也可以计算SATD等。选择损失最小的模式作为最佳模式。
[0268] 在第五种示例中,当带有不同梯度项的公式作为不同模式时,可以根据像素梯度统计信息决定模式。具体地,可以统计参考模板和/或匹配块中每一梯度方向的像素总数量,将像素总数量最多的梯度方向的候选模式作为最终选择的模式,以利用梯度自适应的方法在减少句法传输的基础上进一步减小解码端的复杂度。在像素总数量最多的梯度方向的候选模式大于或等于2时,可以继续通过模板区域的预测结果确定的模板代价继续选出最佳的候选模式;或者可以通过RDO方式从像素总数量最多的梯度方向的所有候选模式选出最佳的候选模式。
[0269] 在一具体的例子中,可以设定不同的公式作为不同的模式。采用梯度统计信息决定模式进行模式选择。
[0270] 其中,模式1的滤波模式的公式为y=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0271] 其中,G(x,y)=1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1)‑1×L(x+1,y‑1)‑2×L(x+1,y)‑1×L(x+1,y+1)。即模式1的梯度项为水平梯度。
[0272] 模式2的滤波模式的公式为y=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0273] G(x,y)=1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)‑1×L(x‑1,y+1)‑2×L(x,y+1)‑1×L(x+1,y+1)。即模式2的梯度项为垂直梯度。
[0274] 模式3的滤波模式的公式为y=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0275] G(x,y)=1×L(x‑1,y)+2×L(x‑1,y‑1)+1×L(x,y‑1)‑1×L(x+1,y)‑2×L(x+1,y+1)‑1×L(x,y+1)。即模式3的梯度项为左上到右下的斜对角方向。
[0276] 模式4的滤波模式的公式为y=a×G(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0277] G(x,y)=1×L(x,y‑1)+2×L(x+1,y‑1)+1×L(x+1,y)‑1×L(x‑1,y)‑2×L(x‑1,y+1)‑1×L(x,y+1)。即模式4的梯度项为右上到左下的斜对角方向。
[0278] 统计参考区域包括参考模板和匹配块的梯度方向,选择最多的梯度方向,例如最多的方向为水平方向,则选择有水平梯度项的模式1作为最优模式。其中,某点梯度方向的判断方法可以为,计算该点在4个方向梯度算子下的结果,绝对值最大的一个方向就是该点的梯度方向。
[0279] 在另一具体的例子中,预测模型有4个,分别作为4个模式:
[0280] 模式1:
[0281] y=b1×L(x,y)+b2×Lf(x,y‑1)+b3×Lf(x,y+1)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0282] 其中,Lf(x,y‑1)为当前像素上方像素经过水平滤波器{1,2,1}滤波后的值,[0283] Lf(x,y‑1)=(1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1))>>2;
[0284] Lf(x,y+1)为当前点下方像素经过水平滤波器{1,2,1}滤波后的值,
[0285] Lf(x,y+1)=(1×L(x‑1,y+1)+2×L(x,y+1)+1×L(x+1,y+1))>>2。
[0286] 模式2:
[0287] y=b1×L(x,y)+b2×Lf(x‑1,y)+b3×Lf(x+1,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0288] 其中,Lf(x‑1,y)为当前点左侧像素经过垂直滤波器{1,2,1}滤波后的值,[0289] Lf(x‑1,y)=(1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1))>>2;
[0290] Lf(x+1,y)为当前点右侧像素经过垂直滤波器{1,2,1}滤波后的值,
[0291] Lf(x+1,y)=(1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1))>>2。
[0292] 模式3:
[0293] y=b1×L(x,y)+b2×Lf(x‑1,y‑1)+b3×Lf(x+1,y+1)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0294] 其中,Lf(x‑1,y‑1)为当前点左上角侧像素经过滤波器{1,2,1}滤波后的值,[0295] Lf(x‑1,y‑1)=(1×L(x‑1,y)+2×L(x‑1,y‑1)+1×L(x,y‑1))>>2;
[0296] Lf(x+1,y+1)为当前点右下角像素经过滤波器{1,2,1}滤波后的值,
[0297] Lf(x+1,y+1)=(1×L(x+1,y)+2×L(x+1,y+1)+1×L(x,y+1))>>2。
[0298] 模式4:
[0299] y=b1×L(x,y)+b2×Lf(x+1,y‑1)+b3×Lf(x‑1,y+1)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0300] 其中,Lf(x+1,y‑1)为当前点右上角侧像素经过滤波器{1,2,1}滤波后的值,[0301] Lf(x+1,y‑1)=(1×L(x+1,y)+2×L(x+1,y‑1)+1×L(x,y‑1))>>2;
[0302] Lf(x‑1,y+1)为当前点左下角像素经过滤波器{1,2,1}滤波后的值,
[0303] Lf(x‑1,y+1)=(1×L(x‑1,y)+2×L(x‑1,y+1)+1×L(x,y+1))>>2。
[0304] 对于一个CU块,可以通过比较这几种方法在模板区域预测的结果的SAD损失值,选择代价最小的模式作为最优模式。
[0305] 请参阅图13,图13为本申请视频编码方法一实施方式的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图13所示的流程顺序为限。本实施方式中,视频编码方法包括以下步骤:
[0306] S501:基于上述任一种帧内滤波预测方法确定图像中的当前块的预测块。
[0307] S502:基于预测块对当前块进行编码。
[0308] 可选地,在对当前块进行编码时,可以在编码码流中设置第一句法元素的值,第一句法元素不同取值代表是否启用本申请的帧内滤波预测方法,即设置一个开关句法,用于标志本申请的帧内滤波预测方法的使用状态。
[0309] 比如,设置一个CU级别的句法标识gftmp_enable_flag表示当前CU是否使用本申请的帧内滤波预测方法。gftmp_enable_flag等于0表示不使用本提案方法,等于1表示使用本申请的帧内滤波预测方法对当前块的至少一个匹配块进行滤波。
[0310] 可选地,如果本申请的帧内滤波预测方法与其他滤波方法和或TMP预测不滤波方法得到的对当前块的预测结果利用RDO进行选择,则需要新增句法表示是否使用当前的滤波方法。否则,可以不新增句法。具体地,可在所述编码码流中设置第二句法元素,第二句法元素的不同取值代表着不同的模式。
[0311] 例如,当应用本申请帧内滤波预测方法的编解码流程中涉及多个方案或模式选择时,可以用第二句法用于表达最终选择的方案或模式。比如,设置一个CU级别句法标识gftmp_mode_flag表示当前CU在使用本申请的帧内滤波预测方法的情况下,具体选择的模式方法。gftmp_mode_flag传输条件为gftmp_enable_flag等于1。gftmp_mode_flag的取值以及含义如下:gftmp_mode_flag=0表示选择模式1,gftmp_mode_flag=1表示选择模式2。具体地,在通过RDO对本申请的帧内滤波预测方法的多个模式进行选择时,则可以添加上述的第二句法,表示在采用RDO选择的模式中最终选择的模式。若对本申请的帧内滤波预测方法的多个模式进行选择时未采用RDO方法,则可以不传输第二句法。
[0312] 例如:在步骤S501中,设定用不同的区域计算模型作为不同的模式,具体地可采用上方子区域进行滤波模型的计算,采用左方子区域进行滤波模型的计算,如此可将采用上方子区域进行滤波模型的计算且基于计算的滤波模型进行当前块的滤波作为一种候选模式,而将采用左方子区域进行滤波模型的计算且基于计算的滤波模型进行当前块的滤波作为另一种候选模式,且采用直接RDO方法进行模式选择。如此可将只用上边像素计算模型参数的模式(模式1)和只用左边像素计算模型参数的模式(模式2)进行RDO比较,选择出最优模式。如此在步骤S502中,设置一个CU级别的句法标识gftmp_enable_flag表示当前CU是否使用本申请的帧内滤波预测方法。gftmp_enable_flag等于0表示不使用本提案方法,等于1表示使用本提案方法对得到的TMP块进行滤波。另外,设置一个CU级别句法标识gftmp_mode_flag表示当前CU在使用本申请的帧内滤波预测方法的情况下,具体选择的模式方法。gftmp_mode_flag传输条件为gftmp_enable_flag等于1。gftmp_mode_flag的取值以及含义如下:gftmp_mode_flag=0表示选择模式1,gftmp_mode_flag=1表示选择模式2。
[0313] 又例如:既使用多个公式,又使用单模型方法(即直接采用参考模板进行滤波模型参数的计算)和多模型方法(即第三种实施方式的帧内滤波预测方法)。本例中,采用模板区域预测结果对模式进行排序,选择其中最优的2种用RDO方法进行模式选择。将具体组合方法作为几种不同的模式。本例中,单模型方法有4种公式,多模型方法有1种公式(在其他例子中,也可以采用1个公式下既有单模型又有多模型,另一个公式下只有单模型等方法)。
[0314] 模式1:单模型方法:
[0315] y=a×G1(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0316] G1(x,y)=1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1)‑1×L(x+1,y‑1)‑2×L(x+1,y)‑1×L(x+1,y+1)。
[0317] 模式2:单模型方法:
[0318] y=a×G2(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0319] G2(x,y)=1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)‑1×L(x‑1,y+1)‑2×L(x,y+1)‑1×L(x+1,y+1)。
[0320] 模式3:单模型方法:
[0321] y=a×G3(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0322] G3(x,y)=1×L(x‑1,y)+2×L(x‑1,y‑1)+1×L(x,y‑1)‑1×L(x+1,y)‑2×L(x+1,y+1)‑1×L(x,y+1)。
[0323] 模式4:单模型方法:
[0324] y=a×G4(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0325] G4(x,y)=1×L(x,y‑1)+2×L(x+1,y‑1)+1×L(x+1,y)‑1×L(x‑1,y)‑2×L(x‑1,y+1)‑1×L(x,y+1)。
[0326] 模式5:多模型方法,按照梯度方向分为2类,分别用不同的计算公式;
[0327] 一种计算公式为:y=a×Gver(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0328] Gver(x,y)=1×L(x‑1,y‑1)+2×L(x,y‑1)+1×L(x+1,y‑1)‑1×L(x‑1,y+1)‑2×L(x,y+1)‑1×L(x+1,y+1);
[0329] 另一种计算公式为:y=a×Ghor(x,y)+b×L(x,y)+c1×((x+8)×8)+c2×((y+8)×8)+d×bias;
[0330] Ghor(x,y)=1×L(x‑1,y‑1)+2×L(x‑1,y)+1×L(x‑1,y+1)‑1×L(x+1,y‑1)‑2×L(x+1,y)‑1×L(x+1,y+1);
[0331] 对于一个CU块,通过比较这几种方法在模板区域预测的结果的代价值(例如SAD损失值),将以上模式进行从优到劣的排列,分别为模式1、模式5、模式2、模式3、模式4。
[0332] 模式1和模式5作为新的模式1和新的模式2,经过RDO比较,选出最优的模式。
[0333] 设置一个CU级别的句法标识gftmp_enable_flag表示当前CU是否使用本申请的帧内滤波预测方法。gftmp_enable_flag等于0表示不使用本提案方法,等于1表示使用本提案方法对得到的TMP块进行滤波。
[0334] 另外,设置一个CU级别句法标识gftmp_mode_flag表示当前CU在使用本申请的帧内滤波预测方法的情况下,具体选择的模式方法。gftmp_mode_flag传输条件为gftmp_enable_flag等于1。gftmp_mode_flag的取值以及含义如下:gftmp_mode_flag=0表示选择模板代价比较下效果最优的模式,gftmp_mode_flag=1表示选择模板代价比较下效果次优的模式。
[0335] 请参阅图14,图14为本申请视频解码方法一实施方式的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图14所示的流程顺序为限。本实施方式中,视频解码方法包括以下步骤:
[0336] S601:基于上述任一种帧内滤波预测方法确定图像中的当前块的预测块;
[0337] S602:基于预测块对当前块进行解码。
[0338] 请参阅图15,图15是本申请编码器一实施方式的结构示意图。本编码器10包括处理器12,处理器12用于执行指令以实现上述预测方法和视频编码方法。具体实施过程请参阅上述实施方式的描述,在此不再赘述。
[0339] 处理器12还可以称为CPU(Central Processing Unit,中央处理单元)。处理器12可能是一种集成电路芯片,具有信号的处理能力。处理器12还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器12也可以是任何常规的处理器等。
[0340] 编码器10还可进一步包括存储器11,用于存储处理器12运行所需的指令和数据。
[0341] 处理器12用于执行指令以实现上述本申请预测方法和视频编码方法任一实施例及任意不冲突的组合所提供的方法。
[0342] 请参阅图16,图16是本申请解码器一实施方式的结构示意图。本解码器20包括处理器22,处理器22用于执行指令以实现上述预测方法和视频解码方法。具体实施过程请参阅上述实施方式的描述,在此不再赘述。
[0343] 处理器22还可以称为CPU(Central Processing Unit,中央处理单元)。处理器22可能是一种集成电路芯片,具有信号的处理能力。处理器22还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器22也可以是任何常规的处理器等。
[0344] 解码器20还可进一步包括存储器21,用于存储处理器22运行所需的指令和数据。
[0345] 处理器22用于执行指令以实现上述本申请预测方法和视频解码方法任一实施例及任意不冲突的组合所提供的方法。
[0346] 请参阅图17,图17为本申请实施方式中计算机可读存储介质的结构示意图。本申请实施例的计算机可读存储介质30存储有指令/程序数据31,该指令/程序数据31被执行时实现本申请预测方法、视频解码方法和视频编码方法任一实施例以及任意不冲突的组合所提供的方法。在一实施例中,该指令/程序数据31可以形成程序文件以软件产品的形式存储在上述存储介质30中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质30包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
[0347] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0348] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0349] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0350] 以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页 第1页 第2页 第3页
相关技术
视频解码相关技术
视频编码相关技术
张雪发明人的其他相关专利技术