具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
为了实现本发明之目的,本发明公开了一种视频编码复杂度控制模型的形成方法,图1示出了该方法的框图,结合图1和图2所示,包括如下步骤:
A1:输入宏块数据。
向视频编码器中输入宏块数据。
A2:对宏块数据进行帧内预测复杂度映射及帧间预测复杂度映射,对帧内预测及帧间预测的预测模式进行分组,对帧间预测的每组预测模式进行整象素运动估计复杂度映射和亚象素运动估计复杂度映射。
具体的说,帧内预测编码就是用周围邻近的象素值来预测当前的象素值,然后对预测误差进行编码。这种预测是基于块的,对于亮度分量(luma),块大小可以在16×16和4×4之间选择,16×16块有4种预测模式,4×4块有9种预测模式。除了均值预测外,其它每种预测模式对应不同方向上的预测。H.264参考软件JM采用穷尽式策略通过计算各种预测模式的代价函数值选择最优编码模式,时间复杂度非常高。
在本实施例中,帧内预测模式采用4×4亮度预测模式。4×4亮度预测模式:如图3中的(a)所示,4×4子块的预测块P由16个点a-p组成,当左边和上边的采样点A-M已经重建好后,它们就能作为预测象素生产参考子块。如图3中的(b)所示,4×4块共有9种预测方式,分别为:垂直预测,水平预测,均值预测,左下对角预测,右下对角预测,垂直向右预测,水平向下预测,垂直向左预测,水平向上预测。
从各视频序列的最终模式统计结果来看,各模式被选择为最优模式的比例之间相差不大,只是Diagonal_Down_left,Vertical_Left,Vertical,Vertical_Right占比稍高。由此,对帧内预测的9种预测模式做一个总体分组,共分4组。
第一组IG1:Diagonal_Down_left,Vertical_Left,Vertical,Vertical_Right;
第二组IG2:Diagonal_Down_left,Vertical_Left,Vertical,Vertical_Right,DC;
第三组IG3:Diagonal_Down left,Vertical_Left Vertical,Vertical_Right,DC,Diagonal_Down_Right,Horizontal;
第四组IG4:Diagonal_Down left,Vertical_Left,Vertical,Vertical_Right,DC,Diagonal_Down_Right,Horizontal,Horizontal_Down,Horizontal_Up。
在本实施例中,帧内预测模式16×16亮度预测模式分为垂直预测(Vertical)、水平预测(Horizontal)、均值预测(DC)和平面预测(Plane)4种模式。如图4中所示,垂直预测,宏块上方各子块的采样值被用作宏块对应一整列的预测值;水平预测,宏块左边各子块采样值被用作宏块对应一整行的预测值;均值预测,宏块上方与左边各子块采样值的均值被用作宏块预测值;平面预测,宏块预测值右上方和左边各子块采样值用作宏块预测值。各种模式的插值方法。
综合考虑帧内预测的各模式复杂度及其对编码效率的贡献,将帧内预测的所有模式分为四类,分别对应表1中所示的电源水平(Power Mode)。其中,电源水平与计算复杂度水平呈线性正比关系。如表1中所示,电源水平为High表示当前电源电量充足;电源水平为Normal表示当前电源电量正常;电源水平为Low表示当前电源处于低电量状态;电源水平为Ultra-Low表示电源处于极低电量状态。
表1
电源水平 |
帧内预测模式分组 |
High |
Diagonal_Down left,Vertical_Left,Vertical,Vertical_Right,DC,Diagonal_Down_Right,Horizontal,Horizontal_Down,Horizontal_Up,Intra_16×16 |
Normal |
Diagonal_Down_left,Vertical_Left,Vertical,Vertical_Right,DC,Diagonal_Down Right,Horizontal,Intra_16×16 |
Low |
Diagonal_Down_left,Vertical_Left,Vertical,Vertical_Right,DC,Intra_16×16 |
Ultra-Low |
Diagonal_Down_left,Vertical_Left,Vertical,Vertical_Right,Intra_16×16 |
对于帧间预测模式,将H.264/AVC的7种块大小模式以及SKIP模式作为帧间预测的全部模式。按其算法复杂度及对编码效率的贡献,将所有模式分为4组。
第一组PG1:SKIP与Inter16×16。若帧间预测只选取该组的两种模式,计算复杂度则急剧降低,但同时编码效率也较低;
第二组PG2:SKIP,Inter16×16,Inter16×8,Inter8×16。该组增加了两种模式,可大大提高编码效率,同时算法的计算复杂性有所提高;
第三组PG3:SKIP,Inter16×16,Inter16×8,Inter8×16,Inter8×8,事实上该组编码效率与选取全部模式相近,但算法复杂度与全模式相比又较低;
第四PG4:SKIP,Inter16×16,Inter16×8,Inter8×16,Inter8×8,Inter8×4,Inter4×8,编码效率最高,同时计算法复杂度也最高。
根据上述帧间预测模式的分组,对各个模式的分组采用整象素运动估计和亚象素运动估计。
具体的说,整象素运动估计复杂度映射的代表性快速算法包括,TSS算法(Three Step Search,三步搜索算法),DS算法(Diamond search,菱形搜索算法),FSS算法(Four step search,四步搜索算法),NTSS算法(New Three stepsearch新三步搜索算法)、HEX算法(Hexagon search,六边形搜索算法)和UMH算法(Unsymmetrical-cross Muti-hexagon Search,非对称十字型多层次六边形格点搜索算法)等。
其中,DS算法(Diamond search,菱形搜索算法)利用运动矢量的统计特性和采用了大钻石和小钻石两种搜索块模式。NTSS算法(New Three stepsearch新三步搜索算法)利用运动矢量基于中心分布的特性和采用判断块为静止或是接近静止的中途停止策略。此外,HEX算法(Hexagon search,六边形搜索算法),PMVFAST算法(Predictive Motion Vector Field Adaptive SearchTechnique)等算法为当较为成功的运动估计算法。
其中,DIA算法搜索点数最少,因此其速度最快,且其编码效率也损失不大与其他算法也非常接近,为通常情况下最常被采用的运动估计算法。EXA算法最为耗时,同时对于提升PSNR贡献不显著。因此,综合考虑编码效率与算法的时间计算复杂度,DIA算法、HEX算法及UMH算法成为较优选择,上述算法可在基本不损失PSNR性能的前提下大幅提高速度。
在实际视频序列中运动物体的位移很少正好是整数倍象素,因此需要采用亚象素运动估计。亚象素运动估计同样采样上述TSS算法(Three Step Search,三步搜索算法),DS算法(Diamond search,菱形搜索算法),FSS算法(Fourstep search,四步搜索算法),NTSS算法(New Three step search新三步搜索算法)、HEX算法(Hexagon search,六边形搜索算法)和UMH算法(Unsymmetrical-cross Muti-hexagon Search,非对称十字型多层次六边形格点搜索算法)。
在本实施例中,为进一步节省搜索时间,采用先通过整象素运动估计确定起始点,然后在最优位置进行深度精细搜索来确定最终的最优点。根据模式选择后的精细化搜索,发现最佳位置后,在此位置周边再进行基于预定亚像素搜索次数的深度搜索。通过本方法进行亚象素运动估计,将在算法保持快速的前提下有效提高搜索准确度,提高编码效率。
具体地说,结合图5和图6所示,亚象素运动估计复杂度映射包括以下步骤:在经过上述整象素运动估计后,确定亚象素运动估计的起始点1。根据上述起始点做运动估计并进行模式选择;根据每种模式下的亚像素搜索次数(SME ITERATION TIME)和亚像素精细搜索次数(SME REFINEMENT),对起始点1的周边进行基于所述亚像素搜索次数的搜索。在起始点1的周边位置搜索1/2象素点,得到1/2象素点2,以点2为起始点在其周边位置搜索1/4象素点,得到1/4象素点3。
结合表2所示,表中数据定义了1/2、1/4象素的亚像素搜索次数及亚像素精细搜索次数。亚像素搜索次数(SME ITERATION TIME)表明对任何一种模式,都将按定义的次数进行搜索。亚象素精细搜索次数(SMEREFINEMENT)定义了在按目前的模式搜索到最优点后,再在其周围搜索的点数。由不同的SME ITERATION TIME和SME REFINEMENT次数,构成了亚象素的复杂度水平以及编码效率。总体来说,SME_LEVEL越低,搜索点数越少的话,算法复杂度越低,编码效率也会最低。如表2中所示,亚象素运动估计水平从1到7排列,算法复杂度和编码效率同步增加。
表2
亚象素运动估计水平 |
亚象素搜索次数(1/2象素,1/4象素) |
模式选择 |
亚象素精细搜索次数(1/2象素,1/4象素) |
1 |
(0,0) |
SAD |
(1,1) |
2 |
(1,0) |
SATD |
(0,1) |
3 |
(1,1) |
SATD |
(0,0) |
4 |
(1,1) |
SATD |
(0,1) |
5 |
(1,2) |
SATD |
(0,1) |
6 |
(2,2) |
SATD |
(0,0) |
7 |
(2,2) |
SATD+RDO |
(0,0) |
优选的,在帧间预测模式中,视频编码标准采用多个前向参考帧,从而增加运动矢量中时间轴的运动估计帧数。通过在多个参考帧中进行运动估计,寻找当前编码块的最佳匹配。采用多参考帧运动估计可以提高编码效率以及容错性能。在一些特定的场合比如存在周期运动、快速场景切换、物体存在遮蔽现象时,多参考帧的使用会有较好的效果,但与此同时也增加了缓存容量以及编码器复杂度。不同电源模式下的多参考帧数量如表3所示。如表3中所示,当电源模式为High时,选取多参考帧数量为5;当电源模式为Normal时,选取多参考帧数量为3;当电源模式为Low时,选取多参考帧数量为2;当电源模式为Ultra-Low时,选取多参考帧数量为1。
表3
电源水平 |
参考帧数量 |
High |
5 |
Normal |
3 |
Low |
2 |
Ultra-Low |
1 |
对于参考帧数目,可选取一个以上的个数。但根据统计结果,参考帧数目大于5对于提高编码效率的意义不大。
本发明实施例涉及的视频编码复杂度控制模型采用了可变块大小运动补偿模式的复杂度映射。
具体的说,由于基于块的运动模型假设块内的所有象素都做了相同的平移,在运动比较剧烈或者运动物体的边缘处这一假设会与实际出入较大,从而导致较大的预测误差,此时减小运动补偿的块大小可以使假设依然成立。另外小的块模式所造成的块效应相对也小,所以一般来说小的块模式可以改善预测效果。
为此,H.264/AVC将每个宏块按4种方式进行分割:1个16×16,或2个16×8,或2个8×16或4个8×8。其运动补偿也相应有4种。每个8×8子宏块还可以进一步以4种方式进行分割:1个8×8,或2个8×4,或2个4×8,或4个4×4。编码器按照图像内容在参考帧中进行搜索,找到与原始块最佳匹配的块进行编码传输。对于图像中变化平缓的区域,采用较大的分块尺寸比较合适;对于细节丰富的区域,采用较小的尺寸比较合适。
这种多模式的灵活、细微的宏块划分,更加切合图像中的实际运动物体的形状,大大提高了运动估计的精确度。与仅采用16×16宏块预测的传统方法相比,使用7种不同大小和形状的块可以节省码率15%以上。但块模式的增加也大大增加的编码器的计算复杂度,试验数据也表明,不同块模式在最终选择的模式中所占的比例也是存在非常大的差距的。总体来看,16×16模式使用最为频繁,而8×8以下的几种块模式使用频率较低,在运动较小,图像纹理不复杂的场景中很少用到。据此,如表4所示本发明提出了通过采用不同块模式组合来调节编码器复杂度的目的。
表4
分组索引号 |
帧间预测模式分组 |
模式分组 |
1 |
SKIP,Inter16×16 |
PG1 |
2 |
SKIP,Inter16×16,Inter8×8 |
PG2 |
3 |
SKIP,Inter16×16,Inter16×8,Inter8×16 |
PG2 |
4 |
SKIP,Inter 16×16,Inter 16×8,Inter 8×16,Inter 8×8 |
PG3 |
5 |
SKIP,Inter 16×16,Inter 16×8,Inter8×16,Inter8×8,Inter4×4 |
PG4 |
6 |
SKIP,Inter16×16,Inter16×8,Inter8×16,Inter8×8,Inter8×4,Inter4×8,Inter4×4 |
PG4 |
A3:根据上述帧内预测和帧间预测的模式分组,进行交叉分组测试,得到每组的计算复杂度和编码效率。
具体的说,根据步骤A2的不同算法和分组,进行交叉分组测试。
在本实施例中,交叉分组测试通过编码器实现,通过编码器输出每组的计算复杂度和编码效率。
A4:根据计算复杂度和编码效率,当计算复杂度相等时,判断该组是否为编码效率最高的组,如果是,则保留编码效率最高的组,否则剔除该组。
结合图1和图2所示,根据步骤A3中交叉分组测试得到的计算复杂度和编码效率。首先选出计算复杂度相等的组,在同等计算复杂度的前提下,如果只对应一组,则保留该组。如果对应有多个不同的算法组合,则判断该组是否为编码效率最高的组,如果是,则保留该组,剔除其他编码效率较低的组。
在本实施例中,计算复杂度通过在同等测试条件下所需的时钟周期计量。
由此,通过上述步骤得到相对于各个计算复杂度下编码效率最高的组合。
A5:对计算复杂度进行归一化,将归一化的计算复杂度值由低到高进行编号,得到计算复杂度水平,生成对应于各个计算复杂度下的编码效率最高的组合的C-R-D表。
根据步骤A4中得到的各个计算复杂度下的编码效率最高的组,将上述计算复杂度进行归一化。在所有分组中选取计算复杂度最高的一组,以该计算复杂度为基准,对计算复杂度进行归一化。将所有得到的归一化的复杂度值由低到高进行编号,得到计算复杂度水平(Complexity Level)。根据上述数据生成对应于不同算法组合的计算复杂度由低到高的C-R-D表。表5示出了上述C-R-D表。如表5中所示,C-R-D表包括计算复杂度水平(Complexity Level)、运动补偿块模式(MD Level)、亚象素运动估计水平(SME Level)、平均峰值信噪比差值(BDPSNR)以及归一化计算复杂度值(Normalized Complexity)。其中,BDPSNR为与基准组为依据计算得到的平均PSNR之差。基准组即为计算复杂度最高的一组。上述编码效率通过BDPSNR计量。
表5
计算复杂度水平 |
运动补偿块模式分组 |
亚象素运动估计水平 |
BDPSNR(dB) |
归一化后的复杂度值 |
0 |
SKIP |
|
|
0 |
1 |
1 |
1 |
-0.76 |
0.228 |
2 |
2 |
1 |
-0.59 |
0.246 |
3 |
3 |
1 |
-0.46 |
0.265 |
4 |
4 |
1 |
-0.44 |
0.283 |
5 |
6 |
1 |
-0.53 |
0.359 |
6 |
3 |
2 |
-0.3 |
0.397 |
7 |
4 |
2 |
-0.26 |
0.438 |
8 |
3 |
3 |
-0.2 |
0.491 |
9 |
3 |
4 |
-0.18 |
0.528 |
10 |
3 |
5 |
-0.16 |
0.544 |
11 |
4 |
3 |
-0.15 |
0.577 |
12 |
4 |
4 |
-0.13 |
0.614 |
13 |
4 |
5 |
-0.12 |
0.637 |
14 |
5 |
3 |
-0.12 |
0.707 |
15 |
5 |
4 |
-0.1 |
0.745 |
16 |
5 |
5 |
-0.08 |
0.775 |
17 |
6 |
3 |
-0.03 |
0.918 |
18 |
6 |
4 |
-0.02 |
0.955 |
19 |
6 |
5 |
0 |
1 |
|
|
|
|
|
A6:根据归一化的计算复杂度值和计算复杂度水平拟合曲线,根据上述曲线计算所述视频编码复杂度控制模型的参数,得到视频编码复杂度控制模型。
根据归一化复杂度值和计算复杂度水平拟合曲线,如图7所示,横轴为计算复杂度水平,纵轴为归一化的复杂度。根据上述拟合曲线计算视频编码复杂度控制模型的参数。
设视频编码复杂度控制模型为y=ax+b,其中a,b为视频编码复杂度控制模型参数。在本实施例中,根据图7中拟合曲线进行计算,得到a=0.045,b=0.1389,由此可以得到视频编码复杂度控制模型为y=0.045x+0.1389。
根据得到的视频编码复杂度控制模型,当输入计算复杂度水平x时,可以计算得到归一化的计算复杂度值y。
优选的,在不同的平台下,通过本实施例涉及的方法得到的拟合曲线,参数a和b亦可实施为其他值,由此得到视频编码复杂度控制模型仍属于本发明的保护范围。
由于计算复杂度水平与电源水平呈线性关系,通过上述方法得到的控制模型,亦可以表示在电源水平(Power)下的视频编码复杂度控制模型,即P-R-D模型。
图8为视频编码复杂度控制模型的Foreman测试序列性能图。如图8中所示,横轴为平均节省的CYCLE数,单位为%;纵轴为BDPSNR,单位为dB。图8中示出了四种模式下的测试序列性能。菱形点构成的曲线为本发明涉及的P-R-D模型下的测试序列性能,方形点构成的曲线为整象素运动估计下的测试序列性能;三角形点构成的曲线为亚象素运动估计下的测试序列性能;十字形点构成的曲线为整象素运动估计及亚象素运动估计下的测试序列性能。从图8中可以看出,在平均节省的CYCLE数相等的情况下,P-R-D模型下的测试序列性能的BDPSNR最高,即损失最小。
图9为视频编码复杂度控制模型的Paris测试序列性能图。如图9中所示,横轴为平均节省的CYCLE数,单位为%;纵轴为BDPSNR,单位dB。图9中示出了四种模式下的测试序列性能。菱形点构成的曲线为本发明涉及的P-R-D模型下的测试序列性能,方形点构成的曲线为整象素运动估计下的测试序列性能;三角形点构成的曲线为亚象素运动估计下的测试序列性能;十字形点构成的曲线为整象素运动估计及亚象素运动估计下的测试序列性能。从图9中可以看出,在平均节省的CYCLE数相等的情况下,P-R-D模型下的测试序列性能的BDPSNR最高,即损失最小。
综上,可以发现本发明实施例提供的P-R-D模型相对其他视频编码模型在平均节省的CYCLE数相等的情况下,损失失真最小。
通过本发明的实施例,在手持设备等存在电源约束的应用下,通过采用不同的整象素运动估计算法或亚象素运动估计算法、参考帧数以及宏块模式等编码器内部参数来调整视频编码器复杂度,使其与当前的电源供电状态达到匹配,从而在电源供电不足、必须降低视频编码复杂度时仍可保证获得最佳的重建视频质量。
本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。