本发明涉及图像通信领域中的视频编码码率控制问题,尤其是涉及新一代高清视频编码标准hevc的帧间码率控制算法。
背景技术:
近年来,随着高清、超高清视频的不断涌现,原有的视频编码标准h.264/avc已逐渐满足不了人们对于视频质量的要求。为了解决这个问题,vceg和mpeg组建了视频编码联合小组(jct-vc),联手制定了新一代视频编码标准——hevc。由于在很多模块中加入了新的编码技术,hevc实现了在保证相同视频质量的基础上,相比于h.264,将压缩效率提高一倍。
尽管hevc的压缩效率大大提高,但在现有实时传输视频的环境中,信道带宽仍难以得到满足。为了在带宽受限的情况下,保证视频的传输质量,并且不造成时延,我们需要对视频的编码过程进行码率控制。所谓码率控制,就是通过合理的比特分配和精确的qp预测,使得视频编码后的比特率满足所需要的速率限制,编码失真也尽可能的小。
hevc先后采用了三种码控模型:r-q模型、r-ρ模型、r-lambda模型。r-q模型对于码率r的计算没有包含头比特,且在计算量化步长的时候存在著名的“蛋鸡悖论”问题。r-ρ模型适用于固定大小的变换块,而hevc编码所采用的变换块大小是可变的。r-lambda模型能够在率失真优化过程之前确定量化参数qp,大大降低了编码复杂度,且包含了头比特,不需要考虑变换块大小问题,较之r-q模型和r-ρ模型更为优秀。目前hevc标准代码采用的是r-lambda模型。
目前关于如何使实际比特更接近于目标比特、输出码率更平稳且主观质量更好的改进算法已有很多。huilingzhao等人提出了在hevc码率控制lcu层比特分配过程中用ssim(结构相似度)替代编码复杂度成为分配权重的方案,实验结果表明所提方案获得了更好的主观质量效果。jiangtaowen等人提出了在hevc码率控制的比特分配之前,用预编码的16×16的cu(编码单元)块信息去估计64×64lcu(最大编码单元)块的复杂度信息,从而作为比特分配的权重,实验结果表明,与标准算法比较,所提方法的比特率误差更小。miaohuiwang等人提出了改进的基于帧内容复杂度的hevc帧内码率控制比特分配方案,即根据用梯度来衡量的帧内容复杂度来分配目标比特,实验结果表明,所提方案比标准算法的比特率误差更小,输出码率更平稳且主客观质量更好。
技术实现要素:
针对新一代视频压缩编码标准hevc码率控制过程中存在不能快速适应设定的带宽和编码复杂度与hvs(人类视觉系统)不一致的问题,本发明提出了一种基于sobel算子和线性回归的高清视频编码码率控制算法,大幅降低了比特率误差,有效降低了时延,且提高了视频的主观和客观质量,在带宽受限的实时编码传输过程中具有良好的应用前景。
本发明的基本思想:1、利用已学习的线性回归模型为编码的第一帧找到最佳初始qp(量化参数),从而使编码过程快速适应设定的带宽。2、利用sobel算子产生帧内和帧间的一阶梯度信息,然后自适应选择最优梯度信息取代编码复杂度成为lcu层比特分配的权重。
本发明针对hevc视频编码标准提供了一种基于sobel算子和线性回归的高清视频编码码率控制算法。该算法主要包括最佳初始qp的确定和lcu层比特分配方案的改进。对于第一帧,利用已学习的线性回归模型输出最佳初始qp,用以帧层的码率控制,使编码过程快速适应设定的带宽。在lcu层比特分配中,利用sobel算子产生帧内和帧间的一阶梯度信息,对于i帧,直接采用帧内梯度作为最优梯度信息,对于非i帧,采用帧内和帧间梯度的较小值作为最优梯度信息,然后根据当前lcu在当前帧未编码lcu中的权重确定分配的比特。具体主要包括以下过程步骤:
(1)收集标准视频序列第一帧像素点的平均目标比特、平均梯度和相应最佳初始qp作为训练集,并对训练集进行归一化;
(2)放入待学习的线性回归模型进行训练,获得已学习的线性回归模型;
(3)根据设定的目标码率、帧率、gop大小和已编码实际比特,分配gop层比特;
(4)根据当前帧占所在gop的权重及缓冲区状态,分配帧层比特;
(5)判断当前编码帧是否为第一帧,若为第一帧,利用所分配的帧层比特获得第一帧像素点的平均目标比特,利用sobel算子获得第一帧像素点的平均帧内梯度,进行归一化,然后输入已学习的线性回归模型,模型输出最佳初始qp,直接用以进行帧层的码率控制。若不是第一帧,则执行步骤(6);
(6)判断当前编码帧是否为i帧,若为i帧,利用sobel算子产生lcu的帧内梯度作为最优梯度信息,并遍历当前帧,累加得到帧层总梯度。若不为i帧,利用sobel算子产生lcu的帧内和帧间梯度,取两者的较小值作为最优梯度信息,并遍历当前帧,累加得到帧层总梯度;
(7)根据当前lcu梯度占当前帧未编码lcu梯度之和的权重,分配目标比特,并进行实际编码;
(8)根据当前lcu目标和实际比特的偏差进行参数更新。判断是否遍历当前帧,若未遍历,则执行步骤(7)。若已遍历,则执行步骤(9);
(9)根据当前帧目标和实际比特的偏差调整缓冲区状态。判断是否遍历当前gop(图像组),若未遍历,则执行步骤(4)。若已遍历,则执行步骤(10);
(10)判断是否已编码完成,若未完成,则执行步骤(3)。若已完成,则执行步骤(11);
(11)结束。
在本发明的上述技术方案中,所述线性回归模型为描述第一帧像素点的平均目标比特、平均梯度和相应最佳初始qp之间的关系模型,即向线性回归模型中输入平均目标比特和平均梯度,模型输出预测的最佳初始qp。线性回归模型的具体计算公式为:
qpinitialbest=9.4973·gradave-23.0407·bpptar+29.965(1)
其中,bpptar为每个像素点获得的平均比特数,gradave为第一帧每个像素点的平均梯度值,qpinitialbest为预测的最佳初始qp。
在本发明的上述技术方案中,所述对训练集进行归一化为对训练集中的数据进行等比例缩放,将数据都缩放到[0,100]的范围内。归一化的具体计算公式为:
其中,xnorm为归一化后的数据,x为原始的数据,xmax和xmin分别为原始数据集的最大值和最小值。
在本发明的上述技术方案中,所述帧内梯度为当前lcu除边缘点外每个像素点经过sobel算子计算得到亮度值的累加,具体计算公式为:
其中,sh为一个lcu除边缘点外所有像素点的横向梯度值的总和,sv为一个lcu除边缘点外所有像素点的纵向梯度值的总和,gintra(i,j,k)为第k帧以(i,j)为起始点的lcu帧内梯度值,m和n分别为视频序列的长和宽。
在本发明的上述技术方案中,所述帧间梯度为当前lcu除边缘点外每个像素点与参考帧相同位置像素点之间的亮度差值经过sobel算子计算得到的值的累加,具体计算公式为:
r(x,y)=if(x,y)-ir(x,y)(6)
其中,if(x,y)为当前像素点的亮度值,ir(x,y)为参考帧中相对应像素点的亮度值,r(x,y)为当前像素点与参考像素点亮度值之差,ginter(i,j,k)为第k帧以(i,j)为起始点的lcu帧间梯度值。
在本发明的上述技术方案中,所述非i帧lcu的最优梯度信息为利用sobel算子计算得到的帧内和帧间梯度的较小值。
在本发明的上述技术方案中,所述当前lcu的权重为当前lcu梯度占当前帧未编码lcu梯度之和的比例。
根据本发明的上述方法可以编制执行上述基于sobel算子和线性回归的高清视频编码码率控制算法的hevc视频编码器。
本发明是基于以下思路分析而完成的:
第一帧的初始qp对带宽有着很大的影响,一方面,初始qp过大会降低第一帧的psnr,浪费了带宽,另一方面,初始qp过小又可能会使得后续帧在进行编码的时候出现缓冲区上溢,跳帧等情况,极大影响了码控的性能,因此需要选择一个合适的初始qp。而标准hevc码率控制算法对于相同分辨率的不同视频序列,在目标码率相同时采用的初始qp是一样的,这显然会对码控的性能产生不良的影响,因为不同的视频序列具有不同的内容复杂度,需要用不同的初始qp进行编码,才能使编码过程快速适应设定的带宽。理论已经证明,线性回归能够利用数理统计中的回归分析来确定两种或两种以上变量间相互依赖的定量关系。因此,本发明通过将测试序列的第一帧像素点的平均目标比特和平均梯度放入已学习线性回归模型,可自适应输出最佳初始qp,从而使编码过程快速适应设定的带宽。
标准hevc码率控制算法在lcu层比特分配的时候,采用参考帧中相对应lcu的mad(绝对均值误差)来表征编码复杂度,其并没有考虑hvs(人类视觉系统)与编码复杂度之间存在不一致的问题,即编码复杂度高的区域,人眼可能对其失真并不敏感,从而造成了比特的浪费和比特率误差变大等问题,而且在场景切换的时候,参考帧中相对应lcu的mad无法用来表征当前lcu的编码复杂度,导致了psnr的下降。理论已经证明,梯度信息可以很好地表征复杂度信息,且与hvs保持一致。sobel算子不仅对噪声具有平滑作用,而且可以在图像的任何一点产生相应的梯度矢量,因此本发明采用sobel算子来获得像素点的梯度信息,从而利用梯度信息作为权重来分配lcu层比特。
与标准的hevc视频编码码率控制方法相比,本发明的方法比特率误差更小,输出码率更平稳且主客观质量更好。本发明的方法利用线性回归模型自适应计算出最佳初始qp,使得编码过程快速适应设定的带宽,从而减少了比特率误差。本发明的方法利用基于sobel算子的梯度信息替代编码复杂度成为lcu层比特分配的权重,在人眼失真敏感的区域分配了更多的比特,从而有效提高了视频的主客观质量。通过本发明方法,可以大幅减少比特率误差,使编码输出比特更加平稳,同时改善视频主客观质量。
附图说明
图1为本发明的基于sobel算子和线性回归的高清视频编码码率控制算法的流程图。
图2~图3为本发明方法与标准k0103提案的码率平稳对比图,其中图2为序列blowingbubbles在目标码率为3603kbps时的每帧编码的实际比特对比;图3为序列bqsquare在目标码率为2584kbps时的每帧编码的实际比特对比。
图4~图5为本发明方法与标准k0103提案的率失真性能对比图,其中图4为序列bqmall的率失真曲线;图5为kimono1序列的率失真曲线。
图6~图7为本发明方法与标准k0103提案的主观质量对比图,其中图6为标准k0103提案得到的序列bqmall在目标码率为10007kbps时的第197帧重构图像;图7为本发明方法得到的序列bqmall在目标码率为10007kbps时的第197帧重构图像。
具体实施方式
下面结合实施例对本发明作进一步的详细说明,有必要指出的是,以下的实施例只用于对本发明做进一步的说明,不能理解为对本发明保护范围的限制,所属领域技术熟悉人员根据上述发明内容,对本发明做出一些非本质的改进和调整进行具体实施,应仍属于本发明的保护范围。
本发明的基于sobel算子和线性回归的高清视频编码码率控制算法,与hevc标准参考代码hm10.0的帧间编码方法比较过程如下:
1、打开标准hm10.0参考代码,配置文件为lowdelay_p_main,将不采用码率控制方法进行编码得到的输出码率作为该比较过程的目标码率。
2、本发明方法将与标准hevc参考代码hm10.0的码率控制方法k0103提案进行比较。同时打开本发明方法和标准方法的程序,设置好相同的配置文件,特别需要注意,必须开启码率控制和初始qp设定,然后进行编码过程。对四种视频编码性能:比特率误差、psnr(峰值信噪比)、每帧实际编码输出比特以及主观质量(其中比特率误差代表码率控制的精度,psnr体现编码视频的客观质量,每帧实际编码输出比特代表码率的平稳度)进行比较分析,比较性能的差距用以下三个指标进行评价:
δpsnr=psnrproposed-psnrk0103(11)
其中,bract为实际码率,brtar为目标码率,psnrproposed为本发明方法得到的峰值信噪比,psnrk0103为标准k0103提案得到的峰值信噪比,δbrerror为本发明方法与标准k0103提案的实际码率与目标码率的码率偏差百分率,δpsnr为本发明方法与标准k0103提案的峰值信噪比的差值。
3、编码对象为hevc的标准视频序列,它们的名称、分辨率和帧率分别为:blowingbubbles(416x240,50帧/秒)、bqsquare(416x240,60帧/秒)、flowervase(416x240,30帧/秒)和bqmall(832x480,60帧/秒)、racehorses(832x480,30帧/秒)、basketballdrill(832x480,50帧/秒)和vidyo1(1280x720,60帧/秒)、fourpeople(1280x720,60帧/秒)、vidyo4(1280x720,60帧/秒)和kimono1(1920x1080,24帧/秒)、cactus(1920x1080,50帧/秒)、bqterrace(1920x1080,60帧/秒)。
4、输入2个相同的视频测试序列;
5、利用标准k0103提案对标准视频序列在hm10.0参考代码中进行视频编码;
6、利用本发明方法对标准视频序列在hm10.0参考代码中进行视频编码;
7、两个程序分别输出视频编码后的码率和psnr,上述2个指标的结果如表1~表2所示。实验结果表明,本发明方法与标准k0103提案的比特率误差平均降低约0.67%,峰值信噪比平均提高约0.44db。本实验采用不同分辨率的12个标准视频序列进行测试,本发明方法的上述两个指标均超过标准k0103提案,充分证明了本发明方法的普适性。
表1本发明方法与标准k0103提案的比特率误差对比
表2本发明方法与标准k0103提案的psnr值对比