掌桥专利:专业的专利平台
掌桥专利
首页

视频处理的方法及装置

文献发布时间:2023-06-19 11:55:48


视频处理的方法及装置

技术领域

本发明实施例涉及图像处理领域,并且更具体地,涉及一种视频处理的方法及装置。

背景技术

随着通信和互联网技术的发展,视频业务的需求量急剧增加,人们对视频分辨率的要求也越来越高。视频分辨率的提高意味着数据量的增加,为保证在有限带宽下视频数据能够进行存储和传输,需要对视频数据进行更加高效的压缩。

高效率视频编码(High Efficiency Video Coding,HEVC)是国际标准化组织/国际电工委员会(International Organization for Standardization/InternationalElectrotechnical Commission,ISO/IEC)的动态图像专家组(Moving Picture ExpertsGroup,MPEG)和国际电信联盟电信标准分局(International Telecommunication Union-Telecommunication Standardization Sector,ITU-T)的视频编码专家组(Video CodingExperts Group,VCEG)联合提出的视频编码标准,相比上一代视频编码标准高级视频编码(Advanced Video Coding,AVC),在同等视频质量下,比特率减少50%。

高效率视频编码(High Efficiency Video Coding,HEVC)帧内预测包含35种预测模式,是通过当前块的左侧相邻列与上侧相邻行的已编码像素值按照一定的规则对当前块做出的不同预测方式。其中包括33种角度预测模式和2种非角度预测模式,非角度预测包括直流(DC)预测和平面(Planar)预测。

目前帧内预测模式选择过程一般分为三个步骤:对35种模式进行粗选择,得到候选模式;构造最可能模式(Most Probable Mode,MPM),加入到候选模式中,并去除重复模式;对所有候选模式进行率失真优化(Rate Distortion Optimization,RDO),选出率失真代价最小的模式作为最优模式。

由于HEVC的基本编码单元是尺寸为64×64的编码单元(Coding Unit,CU),经过划分之后,该CU可能包含较大数量的预测单元(Prediction Unit,PU),而每个PU需要从35种帧内预测模式中选出最优模式,需要生成每一种模式的预测结果,因此在编码一个64×64的CU时需要计算的预测次数是巨大的,因而对硬件资源和时间的消耗也是非常巨大的,该过程复杂度高,效率低。

发明内容

本发明实施例提供了一种视频处理的方法及装置,降低了模式选择的复杂度,提高了处理的效率。

第一方面,提供了一种视频处理的方法,所述方法包括:

根据当前编码块的像素值的梯度信息,从预先构建的多个模式分组中选择第一分组,其中,每个分组中包括一种或多种帧内预测模式;

根据所述当前编码块从所述第一分组中选择第一帧内预测模式;

获取与所述第一帧内预测模式相邻的一种或多种帧内预测模式;

基于所述第一帧内预测模式和所述相邻的一种或多种帧内预测模式,确定将第二帧内预测模式作为所述当前编码块的帧内预测模式。

第二方面,提供了一种视频处理的装置,包括:存储器和处理器,其中,

所述存储器,用于存储计算机指令;

所述处理器,用于调用所述计算机指令,当所述计算机指令被执行时,用于执行:

根据当前编码块的像素值的梯度信息,从预先构建的多个模式分组中选择第一分组,其中,每个分组中包括一种或多种帧内预测模式;

根据所述当前编码块从所述第一分组中选择第一帧内预测模式;

获取与所述第一帧内预测模式相邻的一种或多种帧内预测模式;

基于所述第一帧内预测模式和所述相邻的一种或多种帧内预测模式,确定将第二帧内预测模式作为所述当前编码块的帧内预测模式。

第三方面,提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面或任一实施例所述方法的步骤。

本申请中在确定当前编码块的帧内预测模式时,采用的是分阶段快速选择方法,首先基于当前编码块梯度信息从多个模式分组中选择第一分组,并从第一分组中选出该分组中的较优的第一帧内预测模式,随后再基于第一帧内预测模式及其相邻帧内预测模式,进行细化搜索选出最终模式。通过应用本方法,可以减少帧内预测模式选择中搜索的模式数,减少预测值计算的计算资源和时间开销。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是HEVC采用基于块的发送端的混合编码框架;

图2是与图1对应的接收端的解码框架;

图3是HEVC的帧内预测模式的示意图;

图4示出了帧内预测模式选择过程的一般步骤;

图5是划分CU的一个示意图;

图6是本发明实施例的视频处理的方法的一个示意性流程图;

图7是将当前编码块划分为多个子块的一个示意图;

图8是在图7的基础上将当前编码块进一步划分的一个示意图;

图9是本发明实施例的视频处理的方法的另一个示意性流程图;

图10是当前编码块的已编码相邻块的一个示意图;

图11是本发明实施例的视频处理的方法的再一个示意性流程图;

图12是本发明实施例的视频处理的装置的一个框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

一般地,在视频处理过程中,会对视频中的图像进行编解码处理。例如,HEVC采用基于块的混合编码框架如图1所示,编码时会对输入的视频进行四叉树划分,得到图像块,然后基于每一个图像块进行预测、变换、量化、熵编码等处理。

预测包括帧内预测和帧间预测两大类:帧内预测是指利用视频空域相关性,使用当前图像块左侧和上方的已编码块的像素生成当前图像块的预测值;帧间预测是指利用视频时域相关性,使用邻近已编码帧的图像生成当前图像块的预测值。完成预测后,将当前图像块的原始值与预测值相减得到残差,残差会作为变换模块的输入,进行后续编码处理。

变换是指对残差进行变换处理,例如离散余弦变换(Discrete CosineTransform,DCT),将空域图像转换到其他域,实现能量的相对集中,达到去除空间冗余的目的。经过变换后的残差会得到变换系数,将继续进行量化操作,得到量化系数。

量化系数将与帧内预测模式或运动矢量信息等编码模式信息一起进行熵编码,例如头信息编码以及基于上下文的自适应二进制算术编码(Context-based AdaptiveBinary Arithmetic Coding,CABAC),最终得到输入码流(比特流),进行存储或发送到解码端。

如图2所示,解码端会对收到的比特流进行熵解码,例如头信息解码以及CABAC解码,得到对应的残差及帧内预测模式或运动矢量信息等编码模式信息,根据具体模式生成对应的预测图像,与残差图像相加得到重构图像。

HEVC以预测单元(Prediction Unit,PU)为基本单元进行帧内预测,PU通过将编码单元(Coding Unit,CU)作为根节点进行四叉树划分得到。HEVC支持35种帧内预测模式,包括33种角度模式和2种非角度模式,如图3所示。其中,角度预测模式的系数为2~34,如图3中依次从左下角到右上角,索引为2-34;而DC模式和Planar模式的系数分别为0和1。

帧内预测模式选择过程一般可分为三个步骤,如图4所示,三个步骤具体处理如下:

步骤一:对35种模式进行粗选择(Rough Mode Decision,RMD),利用哈达玛(Hadamard,HAD)变换计算代价,选出一组候选模式。该候选模式中的模式的数量与PU的尺寸有关,对于尺寸为4×4和8×8的PU选出8种候选模式,尺寸大于8×8的PU选出3种候选模式。

步骤二:构造最可能模式(Most Probable Mode,MPM),加入到候选模式中,并去除重复模式。其中,MPM是HEVC标准利用相邻块之间的较强相关性建立的存储相邻上方及左侧PU预测模式的候选列表。

步骤三:对所有候选模式进行率失真优化(Rate Distortion Optimization,RDO),选出率失真代价最小的模式作为最优模式。

这样,通过图4的方式选出的最优模式将作为最终的帧内预测模式,其残差会输出给后续编码模块进行变换、量化及熵编码等处理。

然而,图4的方式存在如下明显的缺陷。HEVC中的基本编码单元是尺寸为64×64的CU,经过划分之后,该CU可能包含1个64×64的PU,或者4个32×32的PU,或者16个16×16的PU,或者64个8×8的PU,或者256个4×4的PU,或者若干不同尺寸PU的组合。作为一例,若将图5(a)所示的64×64的CU进行划分,划分后的PU如图5(b)所示,其包括1个32×32PU,10个16×16PU,7个8×8PU和4个4×4PU。为了得到如图5(b)的这一最优划分结构,实际编码时需要生成1+4+16+64+256=341个PU的预测结果,再依次决定最优的划分结构。而每个PU需要从35种帧内预测模式中选出最优模式,需要生成每一种模式的预测结果,因此在编码一个64×64的CU时需要计算35×341=11935次预测,该方法对硬件资源和时间的消耗非常巨大。此外,每个PU在生成预测结果时,都依赖于其左侧和上方的相邻像素的重建值,因此每个PU(图像边缘处的PU除外)都必须等待其左侧和上方块完成编码后才能进行预测。因此相邻块之间存在很强的依赖性,可能会导致编码延迟。

本发明实施例提供了一种视频处理的方法,如图6所示为视频处理的方法的一个示意性流程图,应当注意的是,该方法不仅适用于如上所述的HEVC,也适用于H266等其他的视频标准。图6所示的方法可以包括:

S110,根据当前编码块的像素值的梯度信息,从预先构建的多个模式分组中选择第一分组,其中,每个分组中包括一种或多种帧内预测模式;

S120,根据当前编码块从第一分组中选择第一帧内预测模式;

S130,获取与第一帧内预测模式相邻的一种或多种帧内预测模式;

S140,基于第一帧内预测模式和相邻的一种或多种帧内预测模式,确定将第二帧内预测模式作为当前编码块的帧内预测模式。

本发明实施例中,多个模式分组可以是基于N种帧内预测模式预先构建的,并且多个模式分组所包含的所有帧内预测模式的数量可以等于或者小于N,N为正整数。

示例性地,多个模式分组可以对应于多个不同的预测方向,并且不同的模式分组所包含的帧内预测模式的数量可以相等或者不相等。

示例性地,在S110之前,可以包括:基于N种帧内预测模式预先构建多个模式分组。不同的模式分组中所包含的帧内预测模式的数量可以相等,或者,不同的模式分组所包含的帧内预测模式的数量可以不相等。

在一种实现方式中,N种帧内预测模式包括N1种角度预测模式,即N=N1。在另一种实现方式中,N种帧内预测模式包括N1种角度预测模式和N2种非角度预测模式,即N=N1+N2。

可选地,多个模式分组所包含的所有非重复的帧内预测模式的数量可以等于N,也就是说,N种帧内预测模式中的任一帧内预测模式至少存在于一个模式分组中,可选地,N种帧内预测模式中的某一种帧内预测模式可以同时处于一个或多个不同的分组中,本发明对此不限定。

可选地,多个模式分组所包含的所有非重复的帧内预测模式的数量可以小于N,也就是说,N种帧内预测模式中的某一帧内预测模式可以不存在于任一模式分组中。在该示例中,多个模式分组所包含的所有非重复的角度预测模式的数量小于N1。

假设不同的帧内预测模式具有不同的索引,那么,多个模式分组所包含的所有非重复的角度预测模式的索引按照从大到小或者从小到大排序之后可以满足:每两个相邻的索引的间隔为预设数值(举例来说,2或4或其他数值)。其中可理解,若每两个相邻的索引的间隔为2,说明多个模式分组所包含的所有角度预测模式的索引为奇数或者为偶数。

应当理解的是,本发明实施例对多个模式分组的构建过程不做限定,例如在S110之前,可以(a)先将N1个角度预测模式划分成多个初始分组,再保留各个初始分组中的部分预测模式,从而得到多个模式分组;或者可以(b)先保留N1个角度预测模式中的部分预测模式,例如只保留奇数(或偶数),然后再将保留的部分预测模式划分为多组,得到多个模式分组。

可选地,如果N种帧内预测模式还包括N2种非角度预测模式,那么可以在上一段所描述的多个模式分组的每一个模式分组中均包含N2种非角度预测模式。在该示例中,多个模式分组所包含的所有非重复的角度预测模式的数量小于N1,多个模式分组所包含的所有非重复的预测模式的数量小于N。

这样,本发明实施例预先将N种帧内预测模式分为多个模式分组,能够先通过初筛选择第一分组,避免从N种帧内预测模式中直接选择所需的帧内预测模式,能够减小选择范围,减少计算预测值的计算量和时间开销。进一步地,多个模式分组所包括的所有的非重复的角度预测模式的数量可以小于N1,如此能够进一步地减少计算计算量和时间开销,提高处理效率。

为了描述的方便,本发明以下实施例以HEVC场景为例进行详细阐述。相应地,N1=33,N2=2。但是应当理解是,下述实施例并不是限制,例如可以应用于H266场景,N1=65等。下面以N1=33,N2=2为例,结合多种不同的实施例对图6所示的方法进行详细阐述。

在一种实现方式中:

N种帧内预测模式包括N1种角度预测模式,即N=N1=33。

可选地,基于N种帧内预测模式预先构建多个模式分组,可以包括:先按照多个不同的预测方向将N种帧内预测模式进行划分,得到多个初始分组,然后再保留初始分组中的部分预测模式,从而得到多个模式分组。

换句话说,多个模式分组可以是N种帧内预测模式基于预设准则进行划分后得到的,其中,预设准则为:按照预测方向进行划分并保留划分后的部分预测模式。

也就是说,多个初始分组可以是依据多个不同的预测方向进行划分的,并且N种帧内预测模式中的任一个帧内预测模式存在于至少一个初始分组中,多个初始分组中所包含的所有的非重复的帧内预测模式的集合为N种帧内预测模式。但是,在经过“保留部分”之后,多个模式分组中所包含的所有非重复的帧内预测模式的集合小于N种帧内预测模式。

可选地,某一种帧内预测模式可以不存在于任一模式分组中,或者某一种帧内预测模式可以仅存在于一个模式分组中,或者,某一帧内帧预测模式可以同时存在于两个甚至更多个模式分组中。

可选地,假设N种帧内预测模式具有不同的索引,其中所保留的部分预测模式满足以下任意一种:(1)索引为偶数,(2)索引为奇数,(3)索引为4的倍数,或者,(4)索引从小到大排序后每4个中的1个。应当理解的是,此处罗列的“保留部分”的方式只是示意性的,本领域技术人员在此基础上也可以得到其他的“保留部分”的方式,均在本申请的保护范围之内。例如,可以保留索引为3的倍数,或者保留索引从小到大(或从大到小)排序后每2个中的1个,等等。

示例性地,多个模式分组为P个模式分组,每个分组中包括的帧内预测模式的数量小于M1,其中,M1=[N1/P],[·]表示取整。其中,取整可以是上取整或者下取整。以上取整为例,

举例来说,以上取整为例,P=4,

假设多个不同的预测方向为0°、45°、90°和135°,那么,可以先按照0°、45°、90°和135°这4个不同的预测方向将N种帧内预测模式划分为4个初始分组,每个初始分组包括9个帧内预测模式。然后再保留初始分组中的部分预测模式,从而得到4个模式分组。其中,所保留的部分预测模式满足以下任意一种:(1)索引为偶数,(2)索引为奇数,(3)索引为4的倍数,或者,(4)索引从小到大排序后每4个中的1个。

结合图3,N1种角度帧内预测模式包括索引为2至34的33种角度预测模式,那么:4个初始分组所包括的帧内预测模式的索引集合可以分别为:{6,7,8,9,10,11,12,13,14}、{2,3,4,5,30,31,32,33,34}、{22,23,24,25,26,27,28,29,30}和{14,15,16,17,18,19,20,21,22}。

随后,所保留的部分预测模式可以满足:(1)索引为偶数,那么得到的4个模式分组所包括的帧内预测模式的索引集合分别为,如表1所示:

表1

上述得到的4个模式分组,每个分组包含5个(小于M1=9)帧内预测模式。并且,这4个模式分组所包含的所有非重复的帧内预测模式构成的集合中,集合中元素的数量小于N。如上述列出的4个模式分组所包含的所有非重复的帧内预测模式构成的集合为{2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34},该集合中的元素的个数为17,小于N(N=33)。某一种帧内预测模式可以不存在于任一个模式分组中,或者某一种帧内预测模式可以仅存在于一个模式分组中,或者,某一种帧内预测模式可以同时存在于两个甚至更多个模式分组中。例如,索引为奇数的帧内预测模式不存在于上述4个模式分组中的任一分组中;例如,索引为6的帧内预测模式只存在于上述4个模式分组中的第1个模式分组中;例如,索引为14的帧内预测模式同时存在于上述4个模式分组中的第1个模式分组和第4个模式分组中。

或者随后,所保留的部分预测模式可以满足:(4)索引从小到大排序后每4个中的1个,那么得到的4个模式分组所包括的帧内预测模式的索引集合分别为,如表2所示:

表2

上述得到的4个模式分组中,每个分组包含3个(小于M1=9)帧内预测模式。并且,这4个模式分组所包含的所有非重复的帧内预测模式构成的集合中,集合中元素的数量小于N。如上述列出的4个模式分组所包含的所有非重复的帧内预测模式构成的集合为{2,6,10,14,18,22,26,30,34},该集合中的元素的个数为9,小于N(N=33)。某一种帧内预测模式可以不存在于任一个模式分组中,或者某一种帧内预测模式可以仅存在于一个模式分组中,或者,某一种帧内预测模式可以同时存在于两个甚至更多个模式分组中。例如,索引为3的帧内预测模式不存在于上述4个模式分组中的任一分组中;例如,索引为6的帧内预测模式只存在于上述4个模式分组中的第1个模式分组中;例如,索引为14的帧内预测模式同时存在于上述4个模式分组中的第1个模式分组和第4个模式分组中。

可理解,也可以按照其他的准则来保留初始分组中的部分预测模式,这里不再一一罗列。

再举例来说,P=8,

假设多个不同的预测方向为-22.5°、0°、22.5°、45°、67.5°、90°、112.5°和135°,那么,可以先按照-22.5°、0°、22.5°、45°、67.5°、90°、112.5°和135°这8个不同的预测方向将N种帧内预测模式划分为8个初始分组,每个初始分组包括5个帧内预测模式。然后再保留初始分组中的部分预测模式,从而得到8个模式分组。其中,所保留的部分预测模式满足以下任意一种:(1)索引为偶数,(2)索引为奇数,(3)索引为4的倍数,或者,(4)索引从小到大排序后每4个中的1个。

结合图3,N种帧内预测模式包括索引为2至34的33种角度预测模式,那么:8个初始分组所包括的帧内预测模式的索引集合可以分别为:

{4,5,6,7,8}、{8,9,10,11,12}、{12,13,14,15,16}、{16,17,18,19,20}、{20,21,22,23,24}、{24,25,26,27,28}、{28,29,30,31,32}和{2,3,32,33,34}。

随后,所保留的部分预测模式可以满足:(1)索引为偶数,那么得到的8个模式分组所包括的帧内预测模式的索引集合分别为,如表3所示:

表3

上述得到的8个模式分组中,每个分组包含3个(小于M1=5)帧内预测模式。并且,这8个模式分组所包含的所有非重复的帧内预测模式构成的集合中,集合中元素的数量小于N。如上述列出的8个模式分组所包含的所有非重复的帧内预测模式构成的集合为{2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34},该集合中的元素的个数为17,小于N(N=33)。某一种帧内预测模式可以不存在于任一个模式分组中,或者某一种帧内预测模式可以仅存在于一个模式分组中,或者,某一种帧内预测模式可以同时存在于两个甚至更多个模式分组中。例如,索引为奇数的帧内预测模式不存在于上述8个模式分组中的任一分组中;例如,索引为6的帧内预测模式只存在于上述8个模式分组中的第1个模式分组中;例如,索引为8的帧内预测模式同时存在于上述8个模式分组中的第1个模式分组和第2个模式分组中。

或者随后,所保留的部分预测模式可以满足:(3)索引为4的倍数,那么得到的8个模式分组所包括的帧内预测模式的索引集合分别为,如表4所示:

表4

上述得到的8个模式分组中,前7个分组包含2个(小于M1=5)帧内预测模式,最后一个分组包含1个(小于M1=5)帧内预测模式。可见,不同的模式分组可以包含不同数量的帧内预测模式。并且,这8个模式分组所包含的所有非重复的帧内预测模式构成的集合中,集合中元素的数量小于N。如上述列出的8个模式分组所包含的所有非重复的帧内预测模式构成的集合为{4,8,12,16,20,24,28,32},该集合中的元素的个数为8,小于N(N=33)。某一种帧内预测模式可以不存在于任一个模式分组中,或者某一种帧内预测模式可以仅存在于一个模式分组中,或者,某一种帧内预测模式可以同时存在于两个甚至更多个模式分组中。例如,索引为奇数的帧内预测模式不存在于上述8个模式分组中的任一分组中;例如,索引为4的帧内预测模式只存在于上述个模式分8组中的第1个模式分组中;例如,索引为8的帧内预测模式同时存在于上述个模式分8组中的第1个模式分组和第2个模式分组中。

可理解,也可以按照其他的准则来保留初始分组中的部分预测模式,这里不再一一罗列。

可选地,基于N种帧内预测模式预先构建多个模式分组,可以包括:保留所述N1种角度帧内预测模式中的部分角度帧内预测模式,然后将保留的部分角度帧内预测模式按照多个不同的预测方向进行划分,从而得到多个模式分组。其中,保留的部分角度帧内预测模式的索引从大到小或者从小到大排序之后满足:每两个相邻的索引的间隔为预设数值。举例来说,该预设数值可以为2或4或其他数值。或者,也可以按照其他的准则来保留部分角度帧内预测模式。

作为一例,保留的部分角度帧内预测模式的索引为偶数,即索引从大到小或者从小到大排序之后满足:每两个相邻的索引的间隔为2。然后再按照4个(或8个)不同的预测方向进行划分,得到4个(或8个)模式分组,如表1(或表3)所示。

作为一例,保留的部分角度帧内预测模式的索引从大到小或者从小到大排序之后满足:每两个相邻的索引的间隔为4。例如2,6,10,14,18,22,26,30,34,然后再按照4个不同的预测方向进行划分,得到4个模式分组,如表2所示。再如4,8,12,16,20,24,28,32,然后再按照8个不同的预测方向进行划分,得到8个模式分组,如表4所示。

可选地,基于N种帧内预测模式预先构建多个模式分组,可以包括:按照多个不同的预测方向将N1种角度帧内预测模式进行划分,得到多个模式分组。

多个模式分组中,不同的分组可以包括相同数量的帧内预测模式,或者可以包括不同数量的帧内预测模式。

可选地,每个分组可以包括相同数量的帧内预测模式。示例性地,多个模式分组为P个模式分组,每个分组中包括的帧内预测模式的数量等于M1,其中,M1=[N1/P],[·]表示取整。其中,取整可以是上取整或者下取整。以上取整为例,

举例来说,以上取整为例,P=4,

假设多个不同的预测方向为0°、45°、90°和135°,那么,可以按照0°、45°、90°和135°这4个不同的预测方向将N1种角度帧内预测模式划分为4个模式分组,每个模式分组包括9个帧内预测模式。

结合图3,N1种角度帧内预测模式包括索引为2至34的33种角度预测模式,那么:4个模式分组所包括的帧内预测模式的索引集合可以分别为,如表5所示:

表5

上述得到的4个模式分组,每个分组包含9个帧内预测模式。并且,这4个模式分组所包含的所有非重复的帧内预测模式构成的集合中,集合中元素的数量等于N。某一种帧内预测模式可以仅存在于一个模式分组中,或者,某一种帧内预测模式可以同时存在于两个甚至更多个模式分组中。例如,索引为6的帧内预测模式只存在于上述4个模式分组中的第1个模式分组中;例如,索引为14的帧内预测模式同时存在于上述4个模式分组中的第1个模式分组和第4个模式分组中。

再举例来说,P=8,

假设多个不同的预测方向为-22.5°、0°、22.5°、45°、67.5°、90°、112.5°和135°,那么,可以按照-22.5°、0°、22.5°、45°、67.5°、90°、112.5°和135°这8个不同的预测方向将N1种角度帧内预测模式划分为8个模式分组,每个模式分组包括5个帧内预测模式。

结合图3,N1种角度帧内预测模式包括索引为2至34的33种角度预测模式,那么:8个模式分组所包括的帧内预测模式的索引集合可以分别为,如表6所示:

表6

上述得到的8个模式分组中,每个分组包含5个帧内预测模式。并且,这8个模式分组所包含的所有非重复的帧内预测模式构成的集合中,集合中元素的数量等于N。某一种帧内预测模式可以仅存在于一个模式分组中,或者,某一种帧内预测模式可以同时存在于两个甚至更多个模式分组中。例如,索引为6的帧内预测模式只存在于上述8个模式分组中的第1个模式分组中;例如,索引为8的帧内预测模式同时存在于上述8个模式分组中的第1个模式分组和第2个模式分组中。

应当注意的是,按照不同的预测方向对N1个角度预测模式的划分方式并不是固定的,也可以采取其他的方法进行划分,如两个不同的模式分组中不存在相同的预测模式。应当注意的是,模式分组的数量不限于4或8,可以更多或更少,本申请对此不限定。还应当注意的是,上述的表1至表6示出的仅是此种实现方式下的多种模式分组的一些实施例,不应解释为限制。

在另一种实现方式中:

N种帧内预测模式包括N1种角度预测模式和N2种非角度预测模式,即N=N1+N2=33+2=35。

可选地,基于N种帧内预测模式预先构建多个模式分组,可以包括:先按照多个不同的预测方向将N1种角度帧内预测模式进行划分,得到多个初始分组,然后再保留初始分组中的部分预测模式,并在每个初始分组中都添加N2种非角度预测模式,从而得到多个模式分组。其中所保留的部分预测模式满足以下任意一种:(1)索引为偶数,(2)索引为奇数,(3)索引为4的倍数,或者,(4)索引从小到大排序后每4个中的1个。应当理解的是,此处罗列的“保留部分”的方式只是示意性的,本领域技术人员在此基础上也可以得到其他的“保留部分”的方式,均在本申请的保护范围之内。

可选地,基于N种帧内预测模式预先构建多个模式分组,可以包括:保留所述N1种角度帧内预测模式中的部分角度帧内预测模式,然后将保留的部分角度帧内预测模式按照多个不同的预测方向进行划分,并在划分后的每个组中都添加N2种非角度预测模式,从而得到多个模式分组。其中,保留的部分角度帧内预测模式的索引从大到小或者从小到大排序之后满足:每两个相邻的索引的间隔为预设数值。举例来说,该预设数值可以为2或4或其他数值。或者,也可以按照其他的准则来保留部分角度帧内预测模式。

作为一例,多个模式分组为P个模式分组,每个分组中包括的帧内预测模式的数量小于M2,其中,M2=[N1/P]+N2,[·]表示取整。其中,取整可以是上取整或者下取整。以上取整为例,

可选地,基于N种帧内预测模式预先构建多个模式分组,可以包括:按照多个不同的预测方向将N1种角度帧内预测模式进行划分,并在划分后的每个组中都添加N2种非角度预测模式,从而得到多个模式分组。

作为一例,多个模式分组为P个模式分组,每个分组中包括的帧内预测模式的数量等于M2,其中,M2=[N1/P]+N2,[·]表示取整。其中,取整可以是上取整或者下取整。以上取整为例,

示例性地,该种实现方式得到的多个模式分组可以认为是:上一种实现方式得到的多个模式分组的基础上,每个分组中添加N2种非角度预测模式。

结合图3,N2种非角度预测模式包括索引为0的平面预测模式和索引为1的DC预测模式。那么,在该种实现方式中,所得到的多个模式分组例如为4个或8个,所包括的帧内预测模式的索引的一些实施例可以为,如下表7至表12所示:

表7

表8

表9

表10

表11

表12

在该实现方式的上述实施例中,每个模式分组中至少包括一个角度预测模式和N2种非角度预测模式,也就是说,每个模式分组至少包括三个帧内预测模式,并且不同的模式分组对应于不同的预测方向,具体地,不同的模式分组中所包括的角度预测模式对应于不同的预测方向。然而应当注意的是,本发明实施例对此不作限定,例如某个模式分组可以不包括非角度预测模式,这里不再一一列举。

下面将结合图7和图8描述S110。

如上所述,多个模式分组对应于多个不同的预测方向。示例性地,S110可以包括:根据多个不同的预测方向将当前编码块划分为多个子块;计算多个子块之间沿多个不同的预测方向的多个梯度信息;确定多个梯度信息中的最小梯度信息;将与最小梯度信息具有相同预测方向的模式分组确定为第一分组。

其中,计算多个子块之间沿多个不同的预测方向的多个梯度信息,可以包括:计算多个子块的每个子块中的所有像素的像素值的均值;针对多个不同的预测方向的每个预测方向,通过计算沿预测方向的不同子块之间的均值的差值,来计算沿预测方向的梯度信息。

作为一例,若多个模式分组为4个模式分组,且所对应的4个不同的预测方向为0°、45°、90°和135°。那么,可以按照如图7所示的方式将当前编码块划分为多个子块,如图7中为5个子块,分别为A、B、C、D和E。随后可以计算4个不同的预测方向(0°、45°、90°和135°)的梯度信息(Gradient Information),得到4个梯度信息。

其中,每个子块的大小都是当前编码块的1/4。A、B、C、D分别是当前编码块的左上、右上、左下、右下的子块,E是当前编码块的中心位置处的子块(如图7中虚线所示)。

针对A、B、C、D和E这5个子块中的每一个子块,可以计算其中的所有像素的像素值的平均值,这里的平均值可以为算术平均、几何平均、或者其他方式得到的均值,本发明对此不限定。假设A、B、C、D和E这5个子块的像素值的平均值分别可以表示为a、b、c、d和e,那么可以计算0°、45°、90°和135°这4个不同的预测方向的梯度信息依次为:

GI1=|b-a|+|d-c|,

GI2=|c-e|+|e-b|,

GI3=|c-a|+|d-b|,

GI4=|d-e|+|e-a|。

然后,可以比较这四个梯度信息GI1、GI2、GI3和GI4,确定其中哪一个最小。

假设最小的梯度信息为GI1,其对应的预测方向为0°,则S110中选择的第一分组是多个模式分组中与预测方向为0°对应的模式分组。例如,若多个模式分组如表1所示,那么第一分组包含的帧内预测模式的索引集合为{6,8,10,12,14}。再例如,若多个模式分组如表8所示,那么第一分组包含的帧内预测模式的索引集合为{0,1,6,10,14}。

假设最小的梯度信息为GI4,其对应的预测方向为135°,则S110中选择的第一分组是多个模式分组中与预测方向为135°对应的模式分组。例如,若多个模式分组如表2所示,那么第一分组包含的帧内预测模式的索引集合为{14,18,22}。再例如,若多个模式分组如表11所示,那么第一分组包含的帧内预测模式的索引集合为{0,1,14,15,16,17,18,19,20,21,22}。

作为另一例,若多个模式分组为8个模式分组,且所对应的8个不同的预测方向为-22.5°、0°、22.5°、45°、67.5°、90°、112.5°和135°。那么,将当前编码块划分为多个子块可以包括将当前编码块划分为9个子块,除了如图7所示的5个子块A、B、C、D和E之外,还包括如图8所示的F、G、H、I这4个子块。

其中,每个子块的大小都是当前编码块的1/4。F和I分别位于当前编码块的中心位置的上方和下方,其中F如图8中的阴影区域(具有灰色的底色)所示。类似地,G和H分别位于当前编码块的中心位置的左方和右方。

类似地,可以针对9个子块中的每一个子块,计算其中的所有像素的像素值的平均值,这里的平均值可以为算术平均、几何平均、或者其他方式得到的均值,本发明对此不限定。将这9个子块的像素值的平均值依次表示为a、b、c、d、e、f、g、h和i,那么随后可以计算8个不同的预测方向的梯度信息。

其中,可以在图7中的5个子块的基础上与上例类似地得到0°、45°、90°和135°这4个不同的预测方向的4个梯度信息,即GI1、GI2、GI3和GI4。并且,可以结合在图7和图8中所示的子块进一步类似地得到-22.5°、22.5°、67.5°和112.5°这4个不同的预测方向的4个梯度信息,依次为:

GI5=|b-g|+|h-c|,

GI6=|d-g|+|h-a|,

GI7=|d-f|+|i-a|,

GI8=|c-f|+|i-b|。

然后,可以比较这8个梯度信息GI1、GI2、GI3、GI4、GI5、GI6、GI7和GI8,确定其中哪一个最小。

假设最小的梯度信息为GI2,其对应的预测方向为45°,则S110中选择的第一分组是多个模式分组中与预测方向为45°对应的模式分组。例如,若多个模式分组如表4所示,那么第一分组包含的帧内预测模式的索引集合为{16,20}。再例如,若多个模式分组如表9所示,那么第一分组包含的帧内预测模式的索引集合为{0,1,16,18,20}。

假设最小的梯度信息为GI7,其对应的预测方向为67.5°,则S110中选择的第一分组是多个模式分组中与预测方向为67.5°对应的模式分组。例如,若多个模式分组如表6所示,那么第一分组包含的帧内预测模式的索引集合为{20,21,22,23,24}。再例如,若多个模式分组如表10所示,那么第一分组包含的帧内预测模式的索引集合为{0,1,20,24}。

应当理解的是,本发明实施例对当前编码块的划分方式不限于如图7和图8所示的子块,本领域技术人员在此基础上可以通过其他的划分方式得到多个子块,本发明对此不限定。

下面将结合图9和图10描述S120。

示例性地,S120可以包括:从第一分组确定第一帧内预测模式。

作为一例,如果S110所选择的第一分组只包括一种帧内预测模式,那么第一帧内预测模式为该第一分组所包括的那一种帧内预测模式。

也就是说,若第一分组中的帧内预测模式的数量为一个,则第一帧内预测模式为该第一分组中所包含的帧内预测模式。参照图9,这种情况下,无需再进行选择。

作为另一例,如果S110所选择的第一分组包括多种帧内预测模式,那么在S120中从第一分组所包括的多种帧内预测模式中选择其中一种作为第一帧内预测模式。

具体地,可以采用第一分组中的多种帧内预测模式对当前编码块进行帧内预测,确定多种帧内预测模式对应的编码代价;根据多种帧内预测模式对应的编码代价,从第一分组中的多种帧内预测模式选择第一帧内预测模式。

假设第一分组包括N0种帧内预测模式,那么可以得到与N0种帧内预测模式一一对应的N0个编码代价。其中,针对N0种帧内预测模式中第三帧内预测模式,可以通过下述方式得到与第三帧内预测模式对应的编码代价:采用第三帧内预测模式,根据当前编码块的已编码相邻块的像素值,得到当前编码块的预测值;计算当前编码块的像素值与当前编码块的预测值之间的差值,得到预测残差;根据预测残差,得到与第三帧内预测模式对应的编码代价。

示例性地,若当前编码块为n×n编码块,那么已编码相邻块为其周围4×n+1个相邻块。以n=4为例,如图10所示,已编码相邻块为周围17个相邻块。其中,图10中由黑粗线所圈示的是4×4编码块,位于上方和左方的具有淡灰底色的是17个相邻块。

具体地,假设第三帧内预测模式的索引为m,可以采用第三帧内预测模式,通过下式:

Prediction

得到当前编码块的预测值,其中,f

可选地,已编码相邻块的像素值可以是已编码相邻块的重构像素值,这样能够保证得到的预测值更加准确。

可选地,已编码相邻块的像素值可以是已编码相邻块的原始像素值。由于S120中选择的第一帧内预测模式不一定作为当前编码块的最终帧内预测模式,因此对预测值的准确性要求不高,使用原始像素值来得到当前编码块的预测值,能够大大计算并行度,降低计算复杂度,从而提升处理的效率。

示例性地,根据预测残差得到编码代价,可以包括如下任一种:对预测残差进行哈达玛(Hadamard,HAD)变换,将变换系数的绝对值和与表示预测模式的比特数进行结合计算,得到编码代价;或者,将预测残差的平方和或绝对值和作为编码代价;或者,对预测残差做离散正弦或离散余弦变换后再求和,得到编码代价。

举例来说,HAD变换是一种常见的二维矩阵变换,将变换系数的绝对值和与表示第三帧内预测模式的比特数结合,计算出第三帧内预测预测模式的编码代价。

其中,表示帧内预测模式的比特数如下表所示,

这样,类似地,可以得到与N0种帧内预测模式一一对应的N0个编码代价,其中,可以通过下式得到N0个编码代价:

cost

其中,λ为加权系数,可以由HEVC的参考软件HM中的指定算法计算得到,这里不再详细阐述。

应当理解的是,可以通过其他的方式得到编码代价,这里不再详细阐述。

在得到与第一分组中的N0种帧内预测模式一一对应的N0个编码代价之后,可以比较这N0个编码代价的大小,选择其中最小的那个编码代价,将其对应的帧内预测模式确定为第一帧内预测模式。

下面将结合图9和图11描述S130。

具体地,S130可以包括:若第一帧内预测模式为角度预测模式,则可以获取与第一帧内预测模式相邻的一种或多种帧内预测模式。

不同的角度预测模式具有不同的索引,例如图3中示出的33种角度预测模式的索引的范围为2至34。与第一帧内预测模式相邻的帧内预测模式可以是指:索引与第一帧内预测模式的索引之差小于预设值(如2或4等)的角度预测模式。

例如,若第一帧内预测模式的索引为k1,2

再例如,若第一帧内预测模式的索引为2,那么与其相邻的帧内预测模式可以包括索引为3的角度预测模式,或者,与其相邻的帧内预测模式可以包括索引为3和4的角度预测模式,或者,与其相邻的帧内预测模式可以包括索引为3和33的角度预测模式,或者,与其相邻的帧内预测模式可以包括索引为3、4、32和33的角度预测模式。

再例如,若第一帧内预测模式的索引为34,那么与其相邻的帧内预测模式可以包括索引为33的角度预测模式,或者,与其相邻的帧内预测模式可以包括索引为32和33的角度预测模式,或者,与其相邻的帧内预测模式可以包括索引为3和33的角度预测模式,或者,与其相邻的帧内预测模式可以包括索引为3、4、32和33的角度预测模式。

本发明实施例中,S130中所获取的相邻的一种或多种帧内预测模式的数量与S110中的多个模式分组中包含的帧内预测模式的索引的方式相关。具体地,与多个模式分组中包含的所有角度预测模式的索引的方式有关。换句话说,S130中所获取的相邻的一种或多种帧内预测模式的数量与S110中多个模式分组的构建方式有关。

作为一种实现方式,假设第一帧内预测模式的索引为Mode(M)。若多个模式分组中包含的所有角度预测模式的索引按照从大到小或者从小到大排序之后满足每两个相邻的索引的间隔为2,则S130中所获取的相邻的一种或多种帧内预测模式的数量为两个,且包括索引为Mode(M+1)的帧内预测模式和索引为Mode(M-1)的帧内预测模式。

其中,Mode(M+1)=(Mode(M)-1)%32+2,Mode(M-1)=(Mode(M)+29)%32+2,其中%表示取余数。

也就是说,如果多个模式分组中包含的所有角度预测模式是:索引为偶数的角度预测模式,或者,索引为奇数的角度预测模式,那么,在S130中,获取左相邻的一个角度预测模式和右相邻的一个角度预测模式。

举例来说,如果多个模式分组如上述表1、表3、表7或表9所示,且S120中所选择的第一帧内预测模式为角度预测模式(表7或表9的情形需要判断),那么,S130中可以获取与第一帧内预测模式相邻的两种角度预测模式。

作为另一种实现方式,假设第一帧内预测模式的索引为Mode(M)。多个模式分组中包含的所有角度预测模式的索引按照从大到小或者从小到大排序之后满足每两个相邻的索引的间隔为4,则S130中所获取的相邻的一种或多种帧内预测模式的数量为四个,且包括索引为Mode(M+1)的帧内预测模式、索引为Mode(M-1)的帧内预测模式、索引为Mode(M+2)的帧内预测模式、索引为Mode(M-2)的帧内预测模式。

也就是说,如果多个模式分组中包含的所有角度预测模式是:索引从大到小或从小到大排序后每4个中的一个的角度预测模式,那么,在S130中,获取左相邻的两个角度预测模式和右相邻的两个角度预测模式。

举例来说,如果多个模式分组如上述表2、表4、表8或表10所示,且S120中所选择的第一帧内预测模式为角度预测模式(表8或表10的情形需要判断),那么,S130中可以获取与第一帧内预测模式相邻的四种角度预测模式。

作为再一种实现方式,假设第一帧内预测模式的索引为Mode(M)。若多个模式分组中包含的所有角度预测模式的索引按照从大到小或者从小到大排序之后满足每两个相邻的索引的间隔为1,则S130中所获取的相邻的一种或多种帧内预测模式的数量为一个或者零个或两个。

也就是说,多个模式分组中包含所有角度预测模式,即索引为2至34的33种角度预测模式。则S130中获取的是与第一帧内预测模式位于不同模式分组中的相邻预测模式。

如果第一帧内预测模式是第一分组中的角度预测模式中分组边界中索引最小的,那么S130中可以获取相邻的一个角度预测模式或者两个角度预测模式,且应当满足该相邻的一个角度预测模式或者两个角度预测模式不位于第一分组中。举例来说,如果多个模式分组如上述表5或表11所示,S110中选择的第一分组为0°的模式分组,S120中所选择的第一帧内预测模式的索引为6(即第一分组中所包含的角度预测模式与其他分组的分组边界(6和14)索引最小的),由于其左相邻的角度预测模式是索引为5(和索引为4)的角度预测模式,且不位于第一分组中,那么在S130中可以获取索引为5(和索引为4)的角度预测模式。再举例来说,如果多个模式分组如上述表5或表11所示,S110中选择的第一分组为45°的模式分组,S120中所选择的第一帧内预测模式的索引为5(即第一分组中所包含的角度预测模式与其他分组的分组边界中索引最大的分组边界),由于其右相邻的角度预测模式是索引为6(和索引为7)的角度预测模式,并且索引为6(和索引为7)的角度预测模式不位于第一分组中,那么在S130中可以获取的相邻预测模式的数量为一个或两个。再举例来说,如果多个模式分组如上述表5或表11所示,S110中选择的第一分组为45°的模式分组,S120中所选择的第一帧内预测模式的索引为2,由于其左相邻的角度预测模式是索引为34(和索引为33)的角度预测模式,其右相邻的角度预测模式是索引为3(和索引为4)的角度预测模式,并且索引为34(和索引为33)、索引为3(和索引为4)的角度预测模式均位于第一分组中,那么在S130中可以获取的相邻预测模式的数量为零个,即S130中不获取相邻预测模式。

类似地,如果第一帧内预测模式是第一分组中的角度预测模式中分组边界中索引最大的,那么S130中可以获取相邻的一个角度预测模式或者两个角度预测模式,且应当满足该相邻的一个角度预测模式或者两个角度预测模式不位于第一分组中。举例来说,如果多个模式分组如上述表5或表11所示,S110中选择的第一分组为0°的模式分组,S120中所选择的第一帧内预测模式的索引为14(即第一分组中所包含的角度预测模式与其他分组的分组边界中索引最大的),由于其右相邻的角度预测模式是索引为15(和索引为16)的角度预测模式,且不位于第一分组中,那么在S130中可以获取索引为15(和索引为16)的角度预测模式。再举例来说,如果多个模式分组如上述表5或表11所示,S110中选择的第一分组为45°的模式分组,S120中所选择的第一帧内预测模式的索引为30(即第一分组中所包含的角度预测模式与其他分组的分组边界中索引最大的),由于其左相邻的角度预测模式是索引为29(和索引为28)的角度预测模式,索引为29(和索引为28)的角度预测模式不位于第一分组中,那么在S130中可以获取的相邻预测模式的数量为一个或两个。再举例来说,如果多个模式分组如上述表5或表11所示,S110中选择的第一分组为45°的模式分组,S120中所选择的第一帧内预测模式的索引为34,由于其左相邻的角度预测模式是索引为33(和索引为32)的角度预测模式,其右相邻的角度预测模式是索引为3(和索引为4)的角度预测模式,并且索引为33(和索引为32)、索引为3(和索引为4)的角度预测模式均位于第一分组中,那么在S130中可以获取的相邻预测模式的数量为零个,即S130中不获取相邻预测模式。

由此可见,S130可以包括:若第一帧内预测模式为角度预测模式,则可以获取与第一帧内预测模式相邻的且不位于第一分组中的一种或多种帧内预测模式。

作为一个特例,若与第一帧内预测模式相邻的两种或四种帧内预测模式均位于第一分组中,则S130中不获取相邻的帧内预测模式。

或者,具体地,若S120中选择的第一帧内预测模式为非角度预测模式,如第一帧内预测模式为DC预测模式或者为Planar预测模式,那么可以获取预设帧内预测模式。

如图11所示是第一帧内预测模式为非角度预测模式的实施例的一个流程图,包括:

S210,根据当前编码块的像素值的梯度信息,从预先构建的多个模式分组中选择第一分组,其中每个模式分组包括N2个非角度预测模式。

S220,从第一分组确定第一帧内预测模式。

S230,若第一帧内预测模式为非角度预测模式,则获取预设帧内预测模式。

S240,基于第一帧内预测模式和预设帧内预测模式,确定将第二帧内预测模式作为当前编码块的帧内预测模式。

其中,S210中的多个模式分组可以参见上述结合表7至表12所描述的内容;S220可以参见上述S120的相关描述;为避免重复,这里不再赘述。

具体地,S230中,若第一帧内预测模式为非角度预测模式,例如第一帧内预测模式的索引为0或1,则可以获取预设帧内预测模式。其中,预设帧内预测模式的数量可以为一种或多种。

示例性地,可以根据具体的应用场景、编码需求等各个因素设定预设帧内预测模式。例如,预设帧内预测模式可以为33种角度预测模式中的一种或多种。

在一个实施例中,可以为不同的非角度预测模式设定不同的预设帧内预测模式。例如,若第一帧内预测模式的索引为0,则获取第一预设帧内预测模式;若第一帧内预测模式的索引为1,则获取第二预设帧内预测模式。

在该实施例中,可以认为S130包括:若第一帧内预测模式为非角度预测模式,则获取预设帧内预测模式作为与第一帧内预测模式相邻的一种或多种帧内预测模式。

这样,本发明实施例在第一帧内预测模式的基础上,再考虑其相邻的帧内预测模式,能够避免由于多个模式分组的构建缺陷导致的选择结果的不准确,同时考虑第一帧内预测模式和其相邻的帧内预测模式,能够确保最终确定的帧内预测模式更加准确。

下面将结合图9和图11描述S140。

在一种实现方式中,如果S110中的多个模式分组包括角度预测模式,不包括非角度预测模式,如上面结合表1至表6所描述的。那么,S140可以包括:构建候选预测模式集,该候选预测模式集包括第一帧内预测模式、相邻的一种或多种帧内预测模式和N2种非角度预测模式;从候选预测模式集中选择第二帧内预测模式作为当前编码块的帧内预测模式。

例如,如果S130获取的与第一帧内预测模式相邻的一种或多种帧内预测模式的数量为两个,则S140中是从5种帧内预测模式中选择第二预测模式。再例如,如果S130获取的与第一帧内预测模式相邻的一种或多种帧内预测模式的数量为四个,则S140中是从7种帧内预测模式中选择第二预测模式。又例如,如果S130获取的与第一帧内预测模式相邻的一种或多种帧内预测模式的数量为零个,则S140中是从3种帧内预测模式中选择第二预测模式。

其中,选择第二帧内预测模式可以包括:采用候选预测模式集中的各个帧内预测模式对当前编码块进行帧内预测,确定候选预测模式集中的各个帧内预测模式对应的编码代价;将最小编码代价对应的第二帧内预测模式,确定为当前编码块的帧内预测模式。

示例性地,从候选预测模式集选择第二帧内预测模式的方式与S120从第一分组中选择第一帧内预测模式的方式是类似的,这里不再详细地阐述。

在另一种实现方式中,如果S110中的多个模式分组既包括角度预测模式,又包括非角度预测模式,如上面结合表7至表12所描述的。那么,S140可以包括:如果第一帧内预测模式为角度预测模式,则从第一帧内预测模式和相邻的一种或多种帧内预测模式中选择第二预测模式;如果第一帧内预测模式为非角度预测模式,则从第一帧内预测模式和预设帧内预测模式中选择第二帧内预测模式(如图9和图11中S240所示的)。

示例性地,在该种实现方式中,S140可以包括:构建候选预测模式集;从候选预测模式集中选择第二帧内预测模式作为当前编码块的帧内预测模式。其中,如果第一帧内预测模式为角度预测模式,则候选预测模式集包括第一帧内预测模式和相邻的一种或多种帧内预测模式。如果第一帧内预测模式为非角度预测模式,则候选预测模式集包括第一帧内预测模式和预设帧内预测模式。

可选地,作为一个特例,如果S110中的多个模式分组既包括角度预测模式又包括非角度预测模式,S120中选择的第一帧内预测模式为角度预测模式,S130中获取的与第一帧内预测模式相邻的帧内预测模式的数量为零(即与第一帧内预测模式相邻的帧内预测模式位于第一分组中),那么在S140中可以直接将第一帧内预测模式作为第二帧内预测模式。

但是应该注意的是,S140中计算编码代价的方式与S120中计算编码代价的方式可以相同或者不相同。另外,由于在S120已经得到了与第一帧内预测模式对应的编码代价,因此在S140中可以复用S120得到的编码代价,而无需在S140中进行重复计算,如此能够减小计算量,提高处理效率。

另外,在S140中任一实现方式中,在上述实施例的基础上,候选预测模式集还可以包括预先设定的待选帧内预测模式。具体地,可以预先设定待选帧内预测模式,例如待选帧内预测模式包括索引为10和索引为26的角度预测模式。那么在构建候选预测模式集时,如果该待选帧内预测模式不位于第一分组中,则可以在候选预测模式集进一步包括该待选帧内预测模式。

这样,本发明实施例结合图6描述了为当前编码块确定帧内预测模式的方法流程,进一步地,在S140之后,可以应用所确定帧内预测模式对当前编码块进行预测,从而得到预测值。参照图1,随后可以根据预测值和原始值计算残差,并将残差输出到后续变换量化、熵编码等模块进一步编码处理。

基于上述结合图6至图11的实施例的描述,本申请中在确定当前编码块的帧内预测模式时,采用的是分阶段快速选择方法,首先基于当前编码块梯度信息从多个模式分组中选择第一分组,并从第一分组中选出该分组中的较优的第一帧内预测模式,随后再基于第一帧内预测模式及其相邻帧内预测模式,进行细化搜索选出最终模式。通过应用本方法,可以减少帧内预测模式选择中搜索的模式数,减少预测值计算的计算资源和时间开销。

作为一例,假如多个模式分组如表1所示,在S120中从第一分组中的5个角度预测模式中选择第一帧内预测模式,随后在S140中从第一帧内预测模式、两个相邻的帧内预测模式、2个非角度预测模式这5个中选择第二帧内预测模式。可见,在该例中只需要进行9次预测值计算,这样极大地减小了计算量和时间开销,提升了处理效率。

另外,本发明实施例还提供了一种视频处理的装置,如图12所示,该装置200包括存储器220和处理器240。其中,存储器220用于存储计算机指令;处理器240用于调用计算机指令,当该计算机指令被执行时,用于执行:

根据当前编码块的像素值的梯度信息,从预先构建的多个模式分组中选择第一分组,其中,每个分组中包括一种或多种帧内预测模式;

根据当前编码块从第一分组中选择第一帧内预测模式;

获取与第一帧内预测模式相邻的一种或多种帧内预测模式;

基于第一帧内预测模式和相邻的一种或多种帧内预测模式,确定将第二帧内预测模式作为当前编码块的帧内预测模式。

示例性地,多个模式分组中,不同分组所包含的帧内预测模式的数量相等或者不相等。

示例性地,多个模式分组是基于N种帧内预测模式预先构建的,并且多个模式分组所包含的所有帧内预测模式的数量等于或者小于N,N为正整数。

示例性地,不同的帧内预测模式具有不同的索引,多个模式分组所包含的所有角度预测模式的索引按照从大到小或者从小到大排序之后满足:每两个相邻的索引的间隔为预设数值。举例来说,该预设数值可以为2或4或其他数值。

在一种实现方式中,N种帧内预测模式包括N1种角度预测模式,其中,N等于N1。

示例性地,多个模式分组为P个模式分组,每个分组中包括的帧内预测模式的数量小于M1,其中,M1=[N1/P],[·]表示取整,M1和P为小于N1的正整数。

示例性地,多个模式分组为P个模式分组,每个分组中包括的帧内预测模式的数量等于M1,其中,M1=[N1/P],[·]表示取整,M1和P为小于N1的正整数。

在另一种实现方式中,N种帧内预测模式包括N1种角度预测模式和N2种非角度预测模式,其中,N等于N1与N2之和。

示例性地,多个模式分组为P个模式分组,每个分组中包括的帧内预测模式的数量等于M2,其中,M2=[N1/P]+N2,[·]表示取整,M2和P为小于N1的正整数。

示例性地,多个模式分组为P个模式分组,每个分组中包括的帧内预测模式的数量小于M2,其中,M2=[N1/P]+N2,[·]表示取整,M2和P为小于N1的正整数。

示例性地,多个模式分组的每个模式分组都包括所述N2种非角度预测模式。

应当理解的是,各个示例中的取整可以是上取整或者下取整,本发明对此不限定。

示例性地,多个模式分组中所包含的角度预测模式是将N1种角度预测模式基于预设准则进行划分后得到的,其中,预设准则为:按照预测方向对所述N1种角度预测模式进行划分并保留划分后的部分角度预测模式。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:构建候选预测模式集,该候选预测模式集包括第一帧内预测模式、相邻的一种或多种帧内预测模式和N2种非角度预测模式;从该候选预测模式集中选择第二帧内预测模式作为当前编码块的帧内预测模式。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:采用该候选预测模式集中的各个帧内预测模式对所述当前编码块进行帧内预测,确定该候选预测模式集中的各个帧内预测模式对应的编码代价;将最小编码代价对应的第二帧内预测模式,确定为当前编码块的帧内预测模式。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:当第一帧内预测模式为N1种角度预测模式之一时,获取与第一帧内预测模式相邻的一种或多种帧内预测模式。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:从第一帧内预测模式和相邻的一种或多种帧内预测模式中选择第二帧内预测模式,作为当前编码块的帧内预测模式。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:采用第一帧内预测模式和相邻的一种或多种帧内预测模式对当前编码块进行帧内预测,确定第一帧内预测模式和相邻的一种或多种帧内预测模式对应的编码代价;将最小编码代价对应的第二帧内预测模式,确定为当前编码块的帧内预测模式。

示例性地,N2=2,N2种非角度预测模式包括直流DC预测模式和平面预测模式。可选地,N1=33。

示例性地,如果第一分组中的帧内预测模式的数量为一个,则第一帧内预测模式为第一分组中所包含的帧内预测模式。

示例性地,如果第一分组包括多种帧内预测模式,在所述计算机程序代码被处理器240运行时执行以下步骤:采用第一分组中的多种帧内预测模式对当前编码块进行帧内预测,确定多种帧内预测模式对应的编码代价;根据多种帧内预测模式对应的编码代价,从第一分组中的多种帧内预测模式选择第一帧内预测模式。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:采用第一分组中的第三帧内预测模式,根据当前编码块的已编码相邻块的像素值,得到当前编码块的预测值;计算当前编码块的像素值与当前编码块的预测值之间的差值,得到预测残差;根据预测残差,得到与第三帧内预测模式对应的编码代价。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:根据预测残差,得到与第三帧内预测模式对应的编码代价,包括如下任一种:对预测残差进行哈达玛变换,将变换系数的绝对值和与表示预测模式的比特数进行结合计算,得到编码代价;或将预测残差的平方和或绝对值和作为编码代价;或对预测残差做离散正弦或离散余弦变换后再求和,得到编码代价。

示例性地,当前编码块的像素值为当前编码块的原始像素值,已编码相邻块的像素值为已编码相邻块的原始像素值或者重构像素值。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:确定与多种帧内预测模式对应的编码代价中的最小编码代价;将最小编码代价对应的帧内预测模式确定为第一帧内预测模式。

示例性地,多个模式分组对应于多个不同的预测方向,在所述计算机程序代码被处理器240运行时执行以下步骤:根据多个不同的预测方向将当前编码块划分为多个子块;计算多个子块之间沿多个不同的预测方向的多个梯度信息;确定多个梯度信息中的最小梯度信息;将与最小梯度信息具有相同预测方向的模式分组确定为第一分组。

示例性地,在所述计算机程序代码被处理器240运行时执行以下步骤:计算多个子块的每个子块中的所有像素的像素值的均值;针对多个不同的预测方向的每个预测方向,通过计算沿预测方向的不同子块之间的均值的差值,来计算沿预测方向的梯度信息。

示例性地,相邻的一种或多种帧内预测模式的数量与多个模式分组中包含的帧内预测模式的索引的方式相关。

示例性地,不同的帧内预测模式具有不同的索引,第一帧内预测模式的索引为Mode(M)。若多个模式分组中包含的所有角度预测模式的索引按照从大到小或者从小到大排序之后满足每两个相邻的索引的间隔为2,则相邻的一种或多种帧内预测模式的数量为两个,且包括索引为Mode(M+1)的帧内预测模式和索引为Mode(M-1)的帧内预测模式。

示例性地,不同的帧内预测模式具有不同的索引,第一帧内预测模式的索引为Mode(M)。若多个模式分组中包含的所有角度预测模式的索引按照从大到小或者从小到大排序之后满足每两个相邻的索引的间隔为4,则相邻的一种或多种帧内预测模式的数量为四个,且包括索引为Mode(M+1)的帧内预测模式、索引为Mode(M+1)的帧内预测模式、索引为Mode(M+2)的帧内预测模式、索引为Mode(M-2)的帧内预测模式。

其中,多个模式分组是在N1种角度预测模式的基础上构建的,且N1=33,那么,Mode(M+1)=(Mode(M)-1)%32+2,Mode(M-1)=(Mode(M)+29)%32+2,其中%表示取余数。

需要说明的是,图12中的装置可以是编码器、编码设备(包括但不限于:相机、手机等)。

图12所示的装置能够用于实现前述结合图6至图11所描述的用于视频处理的方法的各个步骤,为避免重复,这里不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

另外,本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序。当所述计算机程序由处理器执行时,可以实现前述图6或图9或图11等所示的视频处理的方法的步骤。例如,该计算机存储介质为计算机可读存储介质。

在一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行以下步骤:根据当前编码块的像素值的梯度信息,从预先构建的多个模式分组中选择第一分组,其中,每个分组中包括一种或多种帧内预测模式;根据当前编码块从所述第一分组中选择第一帧内预测模式;获取与第一帧内预测模式相邻的一种或多种帧内预测模式;基于第一帧内预测模式和相邻的一种或多种帧内预测模式,确定将第二帧内预测模式作为当前编码块的帧内预测模式。

计算机存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。

另外,本发明实施例还提供了一种计算机程序产品,其包含指令,当该指令被计算机所执行时,使得计算机执行上述图6或图9或图11等所示的视频处理的方法的步骤。

在一个实施例中,当该指令被计算机所执行时,使得计算机执行:根据当前编码块的像素值的梯度信息,从预先构建的多个模式分组中选择第一分组,其中,每个分组中包括一种或多种帧内预测模式;根据当前编码块从所述第一分组中选择第一帧内预测模式;获取与第一帧内预测模式相邻的一种或多种帧内预测模式;基于第一帧内预测模式和相邻的一种或多种帧内预测模式,确定将第二帧内预测模式作为当前编码块的帧内预测模式。

本申请中在确定当前编码块的帧内预测模式时,采用的是分阶段快速选择方法,首先基于当前编码块梯度信息从多个模式分组中选择第一分组,并从第一分组中选出该分组中的较优的第一帧内预测模式,随后再基于第一帧内预测模式及其相邻帧内预测模式,进行细化搜索选出最终模式。通过应用本方法,可以减少帧内预测模式选择中搜索的模式数,减少预测值计算的计算资源和时间开销。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理器中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 视频处理装置、视频处理装置的IC电路、视频处理方法和视频处理程序
  • 视频处理方法、视频处理装置和视频处理设备
技术分类

06120113104835