一种视频编码的编码模式选择方法及装置技术领域
本发明涉及视频编码领域,特别涉及一种视频编码的编码模式选择方法及装置。
背景技术
SVC(Scalable Video Coding,可伸缩视频编码)技术的研究已有近20年的历史,在
SVC编码中可包括多个空间层,每层为一个SVC编码器。例如,可以包括三个空间层:基础
层、第一增强层和第二增强层,输入序列在进入每个编码器前都经过下采样以支持多空间分
辨率。对每一个空间层来说,用于预测的参考图像可以是同一层中时间上相邻的图像,也可
以是经过空间上采样之后的低层重构图像,这是因为层与层之间存在着显而易见的相关性。
为了提高增强层的编码效率,可以采用一种层间预测机制来重用低层图像的纹理、运动、以
及残差信息。当低层图像需要上采样为不同空间分辨率时,这种预测模型需进行插值运算,
SVC在不同空间层之间支持非二值的空间分辨率比例。时域预测方面视频编码标准H.264采
用了等级预测结构来支持时间可伸缩性,为了更高的编码效率,运动补偿时域滤波结构作为
预处理工具被采用。
在H.264/AVC(Advanced Video Coding,高级视频编码)标准中,根据生成的预测信号
的自由度的不同将编码图像分成了三种类型:1)I帧,支持空域的帧内预测编码;2)P帧,
支持帧内预测编码和单向的帧间预测编码;3)B帧,支持帧内预测编码和双向权重帧间预测
编码。
在现有SVC快速编码算法标准上进行视频编码时,主要通过比较层间与层内的运动信息
选择是否使用层间预测模式。首先在增强层内的参考帧中获取当前宏块的最佳匹配块,并求
出相应的层内运动矢量,然后根据当前宏块的左上角像素计算相应的基础层参考宏块,并得
到基础层参考宏块的运动矢量,再根据基础层与增强层之间的比例将基础层参考宏块的运动
矢量缩放到增强层,作为其层间预测运动矢量。比较层内运动矢量与层间预测运动矢量的大
小,若两者一致则使用层间预测模式,否则使用层内预测模式。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
一般只针对小尺寸两层图像进行设计,应用于高清视频多层编码将导致编码性能较大的
下降,最大可达到20%,并且只针对帧间模式或者只针对帧内模式选择进行优化,编码效果
较差。
发明内容
为了解决现有视频编码技术中存在的问题,本发明实施例提供了一种视频编码的编码模
式选择方法及装置。所述技术方案如下:
一种视频编码的编码模式选择方法,所述方法包括:
判断当前帧是否为I帧;
当所述当前帧是I帧时,获取所述当前帧的图像的相对复杂度,并对所述当前帧的增强
层进行编码预测,得到帧内最优编码模式;
当所述当前帧不是I帧时,对所述当前帧的增强层依次使用预设的最大概率编码模式集
合中的所有编码模式进行编码预测,得当前最佳编码模式,根据所述当前帧的当前宏块编码
时使用的编码量化步长和所述当前帧的前一个I帧的图像的相对复杂度计算得到所述当前最
佳编码模式的提前终止条件,如果所述当前最佳编码模式的率失真代价满足所述提取终止条
件,则将所述当前最佳编码模式作为帧间最优编码模式。
一种视频编码的编码模式选择装置,所述装置包括:
判断模块,用于判断当前帧是否为I帧;
第一获取模块,用于当所述判断模块判断得出所述当前帧是I帧时,对所述当前帧基础
层进行编码,获取所述当前帧的图像的相对复杂度;
第一编码确定模块,用于当所述判断模块判断得出所述当前帧是I帧时,对所述当前帧
的增强层使用快速模式选择算法,得到帧内最优编码模式;
预测模块,用于当所述判断模块判断得出所述当前帧不是I帧时,对所述当前帧的增强
层依次使用预设的最大概率编码模式集合中的所有编码模式进行编码预测,得当前最佳编码
模式;
条件计算模块,用于根据所述当前帧的当前宏块编码时使用的编码量化步长和所述当前
帧的前一个I帧的图像的相对复杂度计算得到所述当前最佳编码模式的提前终止条件;
第二编码确定模块,用于当所述当前最佳编码模式的率失真代价满足所述提前终止条件
时,将所述当前最佳编码模式作为帧间最优编码模式。
本发明提供的技术方案带来的有益效果是:针对帧内和帧间模式的编码选择进行了优化,
使用前一个I帧的图像相对复杂度结合编码量化步长确定提前终止条件,能够快速选择编码
模式,并且能够自适应编码参数以及图像复杂度变化,能够有效提高编码效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附
图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域
普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1中提供的一种视频编码的编码模式选择方法的流程示意图;
图2是本发明实施例2中提供的一种视频编码的编码模式选择方法的流程示意图;
图3是本发明实施例3中提供的一种视频编码的编码模式选择装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进
一步地详细描述。
实施例1
由图1所示,本实施例提供了一种视频编码的编码模式选择方法,包括:
101、判断当前帧是否为I帧,如果是,执行102,如果不是,执行103;
102、获取当前帧的图像的相对复杂度,并对当前帧的增强层进行快速编码,得到帧内最
优编码模式;
103、对当前帧的增强层依次使用预设的最大概率编码模式集合中的所有编码模式进行编
码预测,得当前最佳编码模式,根据当前帧的当前宏块编码时使用的编码量化步长和当前帧
的前一个I帧的图像的相对复杂度计算得到当前最佳编码模式的提前终止条件,如果当前最
佳编码模式的率失真代价满足提前终止条件,则将当前最佳编码模式作为帧间最优编码模式。
本发明实施例所提供的视频编码的编码模式选择方法,针对帧内和帧间模式的编码选择
进行了优化,使用前一个I帧的图像相对复杂度结合编码量化步长确定提前终止条件,能够
快速选择编码模式,并且能够自适应编码参数变化,能够有效提高编码效率。
实施例2
由图2所示,本实施例提供了一种视频编码的编码模式选择方法,是在实施例1的基础
之上进行了改进,在本方法中,执行主体为编码器,其中,该编码器可以为JSVM9.19编码
器。
需要说明的是,在实施例中所使用的编码模式均在现有协议中有规定,如下:
在帧内预测编码模式中,共提供了22种宏块帧内预测编码模式,其中有9种属于Intra
4×4模式,用于4×4子块;有9种属于Intra 8×8模式,用于8×8子块;另外4种则属
于Intra 16×16类型,用于整个16×16宏块。可伸缩性编码使用帧内预测模式进行编码时,
除了H.264/AVC中定义的帧内预测模式之外,SVC还新定义了一种INTRA_BL宏块模式。
对于Intra 4×4类型来说,宏块首先被划分为16个子块,然后每个4×4亮度子块都使
用在空间上与之相邻的子块像素值来预测。
对于Intra 8×8类型来说,宏块首先被划分为4个子块,然后每个8×8亮度子块都使用
在空间上与之相邻的子块像素值来预测。
对于Intra 16×16类型来说,整个16×16宏块被与之相邻的宏块预测编码。其预测模
式顺序排列为:垂直预测(模式0)、水平预测(模式1)、DC预测(模式2)和平面预测(模
式3)。
在P帧和B帧中,宏块被划分成为16x16,16x8,8x16,8x8块,并且当宏块被划分为
8x8块时,它还可以进一步划分成为8x4,4x4,4x8三种子宏块。使用帧内预测编码模式时,
P帧和B帧的预测模式包含了I帧中所使用的帧内预测编码模式。使用帧间预测时,对于P
帧而言,每一个块只能有一个运动矢量,而对于B帧而言,每一个块则可有两个运动矢量。
待编码宏块的参考图像可以是16x16,16x8,8x16,8x8块中的一种。此外,H.264/AVC还提
供了两种特殊的模式:直接模式以及跳过模式。P帧只可使用跳过模式,而B帧可以使用直
接模式和跳过模式两种。直接模式和跳过模式都不传送运动矢量以及参考索引,而是从前面
已传送的信息获得当前块的运动矢量和参考索引。
SVC还提供了层间残差预测编码模式。层间残差预测编码模式的使用范围比较广泛:只
要宏块使用了帧间预测——无论是传统的帧间预测还是新增加的层间帧间预测——都可以使
用层间残差预测。
低分辨率层是由高分辨率层剪裁、下采样得到的,增强层中的宏块不一定都能够找到对
应的基础层宏块。因此这部分宏块将采用传统的H.264/AVC模式选择算法进行模式选择。
基于上述SVC提供的多种编码模式,一种视频编码的编码模式选择方法具体包括如下步
骤:
201、判断当前帧是否为I帧,如果是,执行步骤202,如果不是,执行步骤205;
202、对当前帧的基础层进行编码,并获取当前帧的图像的相对复杂度λ;
其中,由于基本层的编码模式决策算法与H.264/AVC中相同,因此这里不再赘述对当前
帧的基础层进行编码的方法。
在现有的H.264编码框架中,I帧只采用帧内预测的方式进行编码,最能体现图像的复
杂度信息。并且在本发明中,I帧的基础层按照现有标准的模式选择方式最先开始编码,最
能体现视频序列的复杂度信息。因此,利用I帧的基础层编码信息进行序列复杂度估计。在
不同的应用场景中,图像复杂度的评价标准选取方法各有不同。在本发明中,MAD(Mean
Absolute Difference,平均绝对差)表征了原始图像和预测图像之间的差值,用于描述图像
复杂度,本发明采用宏块预测后的MAD值估计图像复杂度。
相应地,获取当前帧的图像的相对复杂度λ的方法,具体包括:
202-1、获取预设的训练序列的I帧的基础层宏块编码的MAD均值MADref;
需要说明的是,预设的训练序列可以为与当前需编码的视频无关的一个视频序列,该视
频序列用以计算一般情况下I帧的基础层宏块编码的MAD均值MADref。
在本实施例中,步骤202-1具体包括:
a.对预设的训练序列的I帧的基础层宏块编码的MAD均值使式1进行函数拟合,得到拟
合系数α,β和γ;
MADref(QP)=α·eβ·QP+γ (式1)
其中,QP为预设的训练序列的I帧的基础层宏块的编码量化步长,MADref(QP)为在QP
下预设的训练序列的I帧的基础层宏块编码的MAD均值;
b.当对当前帧的基础层进行编码时,将当前帧的当前宏块所使用的编码量化步长QP′使
用式2计算得到MADref;
MADref=α·eβ·QP′+γ (式2)
202-2、获取当前帧的基础层的宏块的MAD均值MADcur;
202-3、根据式3计算得到当前帧的图像的相对复杂度λ。
λ = MAD ref MAD cur ]]>(式3)
其中,λ为当前帧的图像的相对复杂度,MADref表示预设的训练序列的I帧的基础层
宏块编码的MAD均值,MADcur表示当前帧的基础层的宏块的MAD均值。
203、对当前帧的增强层进行编码预测,得到帧内最优编码模式,并执行步骤204;
进一步地,本步骤203具体包括:
203-1、编码器接收当前帧的增强层的当前宏块的数据输入;
203-2、判断当前帧的增强层为质量增强层还是空域增强层,如果是质量增强层,执行步
骤203-3,如果是空域增强层,执行步骤203-4;
203-3、判断当前帧的增强层的当前宏块对应的基础层宏块是否采用INTRA_BL的编码
模式进行预测,如果是,执行步骤203-5,如果不是,执行步骤203-6;
203-4、判断当前帧的增强层的当前宏块对应的基础层宏块是否采用帧内预测编码,如果
是,则当前帧的增强层采用INTRA_BL进行编码预测,执行步骤203-6,如果不是,执行步骤
203-9;
203-5、判断当前帧的增强层对应的基础层宏块是否采用4x4变换的编码方式进行编码预
测,如果是,则将4x4变换的编码方式作为帧内最优编码模式,如果不是,则将8x8变换的
编码方式作为帧内最优编码模式;
203-6、判断当前帧的增强层的当前宏块的残差数据的4×4子宏块的hadamard(哈达玛)
变换和是否小于当前帧的增强层当前宏块的残差数据的8×8子宏块的hadamard变换和与
(1+α8)的乘积,如果是,则将4x4变换的编码方式作为帧内最优编码模式,如果不是,执
行步骤203-7;
其中,α8为8×8变换编码模式的预测系数,在本实施例中为0.1。
进一步地,通过对编码残差数据进行hadamard变换,来判断是否进行4x4和8x8变换编
码预测,可以有效的降低编码复杂度;
因此,判断当前帧的增强层的当前宏块的残差数据的4×4子宏块的hadamard变换和是
否小于前帧的增强层当前宏块的残差数据的8×8子宏块的hadamard变换和与(1+α8)的乘
积,具体包括:
a.设当前帧的增强层的当前宏块的原数据为Ms,其对应的基础层宏块解码数据为Mp,
则根据式4得到当前帧的增强层的当前宏块的残差数据M为:
M=Ms-Mp (式4)
b.令M的每个4×4子宏块为M4,每个8×8子宏块为M8,分别根据式5、式6、式7
和式8对M4和M8宏块做hadamard变换。
M4′=H4×M4×H4 (式5)
M8′=H8×M8×H8 (式6)
H 4 = 1 1 1 1 1 1 - 1 - 1 1 - 1 - 1 - 1 1 - 1 1 - 1 ]]>(式7)
H 8 = 1 1 1 1 1 1 1 1 1 - 1 1 - 1 1 - 1 1 - 1 1 1 - 1 - 1 1 1 - 1 - 1 1 - 1 - 1 1 1 - 1 - 1 1 1 1 1 1 - 1 - 1 - 1 - 1 1 - 1 1 - 1 - 1 1 - 1 1 1 1 - 1 - 1 - 1 - 1 1 1 1 - 1 - 1 1 - 1 1 1 - 1 ]]>(式8)
其中,其中,M4′和M8′分别为子宏块M4和子宏块M8的hadamard变换结果,H4和H8
分别hadamard变换矩阵,具体如式7和式8所示。
c.根据式9和式10计算得到M4′和M8′的hadamard变换和;
L 4 = Σ i = 0 16 M 4 i ′ ]]>(式9)
L 8 = Σ i = 0 4 M 8 i ′ ]]>(式10)
其中,M4i′和M8i′分别为第i个子宏块M4′和M8′所有系数绝对值之和,L4和L8分别为子
宏块M4′和子宏块M8′的hadamard变换和。
d.判断L4是否小于L8×(1+α8),如果是,则将4x4变换的编码方式作为帧内最优编码模
式,如果不是,执行步骤203-7。
203-7、判断当前帧的增强层的当前宏块残差数据的8×8子宏块的hadamard变换和是否
小于当前帧的增强层的当前宏块残差数据的4×4子宏块的hadamard变换和与(1+α4)的乘
积,如果是,则将8x8变换的编码方式作为帧内最优编码模式,如果不是,执行步骤203-8;
其中,α4为4×4变换编码模式的预测系数,在本实施例中为0.1。
203-8、分别计算编码模式为4×4变换和8×8变换时的率失真代价,根据编码模式为4
×4变换和8×8变换时的率失真代价确定帧内最优编码模式;
203-9、依次进行Intra 16×16、Intra 4×4和Intra 8×8,INTRA_BL和PCM(Pulse-Code
Modulation)模式的预测编码,并计算得到上述Intra 16×16、Intra 4×4和Intra 8×8,
INTRA_BL和PCM模式的率失真代价,选择上述Intra 16×16、Intra 4×4和Intra 8×8,
INTRA_BL和PCM模式中的率失真代价的最小的模式作为帧内最优编码模式。
204、使用帧内最优编码模式对当前帧进行编码并输出;
205、对当前帧的增强层依次使用预设的最大概率编码模式集合中的所有编码模式进行编
码预测,得当前最佳编码模式;
需要说明的是,预设的最大概率编码模式集合为根据经验数据得出的对于增强层最常用
的编码模式,对于空域增强层,BL_SKIP,DIRCT/SKIP以及MODE_16x16的中的一种的概率占
到了90%。因此选择增强层的当前最佳编码模式时,本发明拟优先检查这四种模式,特别地,
而对于质量增强层,只检查BL_SKIP模式,略去其他模式的检查。因此,在本实施例中,预
设的最大概率编码模式集合包括:BLSKIP,DIRCT/SKIP以及MODE_16x16。
相应地,对当前帧的增强层依次使用预设的最大概率编码模式集合中的所有编码模式进
行编码预测,得当前最佳编码模式,具体包括:
对当前帧的增强层依次使用预设的最大概率编码模式集合中的所有编码模式进行编码,
并计算各编码模式的率失真代价,将其中率失真代价最高的作为当前最佳编码模式。
206、根据当前帧的当前宏块编码时使用的编码量化步长和当前帧的前一个I帧的图像的
相对复杂度λ计算得到当前最佳编码模式的提前终止条件;
在本实施例中,本步骤具体的包括:
根据当前帧的当前宏块编码时使用的编码量化步长QP和当前帧的前一个I帧的图像的
相对复杂度λ使用式11计算得到第一率失真代价门限TH′b,e;
TH′b,e=λ·RDb,e(QP) (式11)
其中,RDb,e(QP)为通过公式RDb,e(QP)=a·ek·QP+d计算得到的在QP下预设的
训练序列的条件模式率失真代价均值,a、k和d为拟合系数,条件模式率失真代价为在
预设的训练序列的当前宏块对应的基础层宏块采用b模式进行编码的情况下,预设的训练序
列的当前宏块采用e模式进行编码计算得到的率失真代价。
进一步地,对于上述式11,a、k和d通过使用预设的训练序列使用式12进行拟合得
到:
RD′b,e(QP)=a·ek·QP+d (式12)
其中,RD′b,e(QP)为根据QP计算得到的预设的训练序列的条件模式率失真代价均值。
207、判断当前最佳编码模式的率失真代价是否满足提前终止条件如果不是,执行步骤
208,如果是,执行步骤209;
对于步骤206中提供的方法,本步骤具体的为:
判断当前最佳编码模式的率失真代价是否小于第一率失真代价门限。
例如,假设当前最佳编码模式为e,当前帧的图像的基础层的参考图像所使用的最优编
码模式为b,则当前最佳编码模式的率失真代价为RDb,e,根据本步骤判断RDb,e是否小于
TH′b,e,如果不是,执行步骤208,如果是,执行步骤209。
208、对当前帧的增强层使用除预设的最大概率编码模式集合之外的其他所有编码模式进
行编码预测,得到帧间最优编码模式;
需要说明的是,使用除预设的最大概率编码模式集合之外的其他所有编码模式进行编码
预测采取现有编码预测方式,这里不再赘述。
209、将当前最佳编码模式作为帧间最优编码模式进行编码并输出。
本发明实施例所提供的视频编码的编码模式选择方法,针对帧间模式的编码选择进行了
优化,且对帧内模型的编码选择有效,使用前一个I帧的图像相对复杂度结合编码量化步长
确定提前终止条件,能够快速选择编码模式,并且能够自适应编码参数变化,能够有效提高
编码效率。
实施例3
如图3所示,本发明实施例提供了一种视频编码的编码模式选择装置,该装置包括:
判断模块301,用于判断当前帧是否为I帧;
第一获取模块302,用于当判断模块301判断得出当前帧是I帧时,获取当前帧的图像
的相对复杂度;
第一编码确定模块303,用于当判断模块302判断得出当前帧是I帧时,对当前帧的增
强层进行编码预测,得到帧内最优编码模式;
预测模块304,用于当判断模块301判断得出当前帧不是I帧时,对当前帧的增强层依
次使用预设的最大概率编码模式集合中的所有编码模式进行编码预测,得当前最佳编码模式;
条件计算模块305,用于根据当前帧的当前宏块编码时使用的编码量化步长和当前帧的
前一个I帧的图像的相对复杂度计算得到当前最佳编码模式的提前终止条件;
第二编码确定模块306,用于当当前最佳编码模式的率失真代价满足提前终止条件时,
将当前最佳编码模式作为帧间最优编码模式。
本发明实施例所提供的视频编码的编码模式选择装置,针对帧间模式的编码选择进行了
优化,且对帧内模型的编码选择有效,使用前一个I帧的图像相对复杂度结合编码量化步长
确定提前终止条件,能够快速选择编码模式,并且能够自适应编码参数变化,能够有效提高
编码效率。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,
也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之
内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。