一种基于H264/AVC视频的PSNR盲估计方法与流程

文档序号:14869628发布日期:2018-07-06 20:32阅读:611来源:国知局

本发明涉及多媒体质量评价领域,具体涉及一种基于H264/AVC视频的PSNR盲估计方法。



背景技术:

随着数字信息处理技术的发展以及各种视频摄像设备的普及,数字视频越来越多地出现在我们的生活里,逐步成为人们获取信息的重要途径。这给人们带来方便与娱乐的同时,也带来了其他的一些问题。比如视频质量问题逐渐引起人们的注意。很多时候人们是在线观看视频,因此很注重视频的质量与播放的流畅性。视频质量的评估可以监控视频系统性能,同时实时进行反馈使系统调整参数达到视频质量与播放流畅程度之间的平衡。PSNR是质量评价的重要参数,然而其计算需要原始视频与编解码之后的视频,因此对其进行盲估计显得很有必要。由于视频DCT系数满足一定特性,因此通过利用该特性以及相应的编码技术特性进行比较精确的PSNR盲估计成为可能。



技术实现要素:

本发明的目的是提出一种基于H264/AVC视频的PSNR盲估计方法,通过该方法可以较准确的估计视频每帧的PSNR值。

为了实现上述目的,本发明的技术方案为:

一种基于H264/AVC视频的PSNR盲估计方法,具体步骤如下:

1)提取每一帧的DCT系数以及宏块信息;

2)根据宏块信息对宏块进行分类;

3)对分类后的宏块分别计算噪声并进一步得到PSNR估计值。

具体的各步骤的实现方式为:

步骤1)的实现方式为:利用H264/AVC的解码器JM对H264/AVC视频码流进行解码,以宏块为单位提取DCT系数以及每个宏块的预测信息。

所述步骤2)根据宏块信息对宏块进行分类的实现方式为:根据宏块预测信息对每一帧进行区域的划分,若该帧为I帧,则分为平坦区域与非平坦区域,若该帧为P帧或者B帧,则分为帧内预测区域,SKIP区域,以及普通帧间预测区域。

具体是:若该帧为I帧,则将每个宏块通过滤波器,识别出每个宏块是否属于平坦区域;滤波器是根据每个宏块及其相邻宏块的预测方式进行设计的,若该宏块以及相邻的宏块中至少有一个宏块是采用帧内16×16预测方式,则该宏块属于平坦区域;由此将该帧分成平坦区域与非平坦区域;若该帧为P帧或者B帧,则根据宏块信息将所有宏块分为3类,第一类为帧内预测宏块,即采用帧内预测方式的宏块,第二类为SKIP宏块,即采用SKIP预测方式的宏块,剩下的为第三类,即普通的帧间预测宏块。

所述步骤3)对分类后的宏块分别计算噪声,并进一步得到PSNR估计值,对帧内的不同区域分别进行噪声的估计,将每个区域的相加得到的总和作为该帧的总的噪声,并进一步得到估计的PSNR。

具体是:

若该帧为I帧,则对于非平坦区域的DCT系数使用PSNR计算方法计算非平坦区域的噪声,若量化因子小于20,则对平坦区域使用PSNR计算方法计算平坦区域的噪声,并与非平坦区域的噪声相加作为总的噪声,否则仅使用非平坦区域的噪声作为总的噪声;

若该帧为P帧或者B帧,则对于帧内预测区域以及普通帧间预测区域分别使用PSNR计算方法进行计算,得到帧内预测区域的噪声以及普通帧间预测区域的噪声,而对于SKIP预测宏块,如果SKIP预测宏块所占本帧总宏块的比例小于10%,则使用SKIP预测宏块左边、上边或者右上边的宏块的噪声作为SKIP预测宏块的噪声,其中优先级顺序为左边好于上边,上边好于右上边,否则,使用参考帧平均像素噪声作为SKIP宏块每个像素点的噪声,并计算得到SKIP预测宏块的噪声,将三者相加得到该帧总的噪声;

得到总的噪声后根据PSNR计算公式得到估计的PSNR值。

基于原始的PSNR计算方法做了改进,原始的PSNR计算方法如下:

PSNR的计算公式如下:

其中,(2n-1)2表示图像可能的最大的亮度值的平方,n表示每个亮度值所占的比特数,MSE表示原始图像与编解码之后的图像之间的均方误差。

MSE的计算公式如下:

其中,Yori表示原始图像,Ydec表示经过编码和解码后图像,a*b表示原始图像的大小,szong表示原始图像与编解码之后图像之间的总误差。这是在像素域的表示,一般的,在解码端不能得到原始视频图像Yori。

此处选取DCT系数分布满足拉普拉斯分布,拉普拉斯分布的密度公式如下:

其中只有σ一个为未知参数,拉普拉斯分布以0为中心左右对称,σ越小,分布越向中间集中,反之,分布越向两边扩散。在解码端可以得到量化后的DCT系数,本发明利用量化后的DCT系数分布,可以计算出量化成0的DCT系数占所有DCT系数的概率,而这个概率就应该等于拉普拉斯分布密度函数在量化成0的区间内所做的积分,即

其中,Nzero表示量化成0的DCT系数的个数,Ntotal表示这个频率中DCT系数的个数,[-Qstep,Qstep]表示量化成0的区间,解这个积分方程我们便可以得到拉普拉斯分布密度函数的未知参数如下:

如上所示对于普通的DCT变换而言,假设输入信号为X,DCT变换后信号变成T,经过量化和反量化过程信号变成T',最后经过反DCT变换后成为输出信号Y。在H.264视频编码标准中,输入信号X经过整数DCT变换后信号变成W,

经过量化和反量化过程后信号变成W',再经过反DCT变换后成为输出信号Y。

根据前面介绍的H.264视频编码标准,T和W之间相差一个系数矩阵E,T'和W'之间相差一个系数矩阵Ef,结果如下:

T=W*E

W'=T'*Ef

那么对于一个编码端的DCT系数W来说,经过量化和反量化的过程后,

W'=((|W|*MF+f)>>qbits)*MF'<<qbits'

其中,MF'为反量化的查表参数,qbits'为反量化的左移数。

所以这个DCT系数所对应的像素域域误差就可以表示为

所以可以得到这个频率的总误差为

其中,num表示这个频率内DCT系数为W时的个数,ρ(W)表示拉普拉斯分布密度函数。

进一步的,可以得到16个频率的总误差为

这样,得到了总的误差后,再结合MSE的计算公式和PSNR的计算公式就可以求得PSNR的估计值了。

与现有技术相比,本发明的有益效果为:本发明分析了帧内预测与帧间预测对视频编码质量的影响,通过对DCT系数分布特性以及宏块的分析,对宏块进行分类,分别计算其误差进而求得总的误差后,能够得到更加精确的PSNR估计值。本发明方法能大幅度提高H264/AVC视频的PSNR估计准确值,尤其在P帧与B帧方面。

附图说明

图1是本发明的实现流程示意图。

图2是某帧视频图像的各频点处的DCT系数分布图。

图3是某帧具有大量平坦区域的视频图像。

图4是图3中非平坦区域的DCT系数分布情况。

图5是图3中平坦区域的DCT系数分布情况。

图6是某P帧图像中SKIP宏块中的一个4x4块以及该块的参考块的噪声情况。

图7-图10是改进前算法与改进后算法的效果比较。

具体实施方式

下面结合附图对该发明进行详细说明。

一种基于H264/AVC视频的PSNR盲估计方法过程如附图1所示,对于原始的H264码流,在经过解码器进行解码时提取相关信息,之后再对提取得到的信息进行处理最终得到估计的PSNR值。

本发明对基于H264/AVC视频的PSNR盲估计方法,其具体实施方式如下:

1)提取每一帧的DCT系数以及宏块信息;

是对于一个H264编码码流,采用H264/AVC的解码器JM对其进行解码,同时以宏块为单位提取每个宏块的DCT系数,以及每个宏块的预测模式。

2)根据宏块信息对宏块进行分类;具体是:

若该帧为I帧,则将该帧划分为两个区域:平坦区域与非平坦区域。对于每个宏块,首先通过相关宏块的预测模式对其进行分类。若待分类宏块采用帧内4x4预测或者帧内8x8预测,则将其归为非平坦区域;若待分类宏块采用帧内16x16预测,则考察其相邻宏块预测模式,若相邻宏块中存在至少一个宏块采用16x16预测,则将该宏块归为平坦区域,否则归为非平坦区域。

若该帧为P帧或者B帧,则将该帧划分为三个区域:帧内预测区域,SKIP区域以及普通帧间预测区域。对于每个宏块,若采用帧内预测模式则将其归为帧内预测区域,若采用SKIP预测模式则将其归为SKIP区域,若采用其他预测模式则将其归为普通帧间预测区域。

3)对分类后的宏块分别计算噪声并进一步得到PSNR估计值,具体是:

由于原始视频每个频点处的DCT系数集合满足拉普拉斯分布,因此对于每个频点,可以通过量化后的零值DCT系数来估计该频点处DCT系数所满足的拉普拉斯分布的参数,进而得到该拉普拉斯分布的概率密度函数,并利用信息论知识估算噪声。

对于I帧,首先运用上述算法对非平坦区域进行噪声估计,若该帧的量化因子大于20,则将非平坦区域的噪声作为该帧近似的总噪声,否则也对平坦区域的噪声运用上述算法进行噪声估计,并将平坦区域的噪声与非平坦区域的噪声相加作为整帧图像的总噪声。

对于P帧与B帧,首先对于帧内预测区域与普通帧间预测区域分别使用上述算法进行噪声估计,对于SKIP区域的噪声,如果SKIP预测宏块所占本帧总宏块的比例小于10%,则使用SKIP预测宏块左边、上边或者右上边的宏块的噪声作为SKIP预测宏块的噪声,其中优先级顺序为左边好于上边,上边好于右上边,否则,使用参考帧平均像素噪声作为SKIP宏块每个像素点的噪声,并计算得到SKIP预测宏块的噪声,最后将帧内预测区域,SKIP区域,以及普通帧间预测区域的噪声相加作为该帧图像的总噪声。

得到估计的噪声后,利用PSNR计算公式得到该帧图像的估计的PSNR值。

本发明方法的原理是:原始视频每个频点处的DCT系数满足拉普拉斯分布,如图2所示,因此可以通过确定每个频点处的分布概率密度函数来确定每个频点处的噪声,所有频点处的噪声之和为总的噪声。然而,由于H264/AVC中使用预测编码的模块,因此需要先对提取得到的信息进行处理。对于I帧来说,实际上不同区域的DCT系数满足不同的分布函数,特别是当图像中存在大片的平坦区域的时候对最终计算的结果造成的影响较大,主要原因是平坦区域存在大量的零值系数,使得平坦区域的系数分布与总体的分布情况存在较大差异,图3为一帧存在大片平坦区域的图像,图4与图5分别为该图像非平坦区域与平坦区域的DCT系数分布。而对于P帧与B帧来说,由于可同时存在帧内预测与帧间预测,因此需要对两种预测方式分开进行计算。而对于帧间预测方式还存在一种特殊的形式即SKIP宏块预测,采用该预测方式将不携带任何残差信息,然而并不代表噪声为0,实际上SKIP宏块噪声与其参考块噪声相似,这个特点可用来估算SKIP宏块的噪声,图6显示SKIP宏块中的4x4块与相应参考块的噪声。针对上述特性,我们通过参考宏块的预测模式信息对算法进行了相应的改进,使得最终的结果更为精确。

下面给出本发明方法的实验结果,图7,图8,图9,图10中黑色表示现有算法效果,灰色表示本发明的效果,可见,对于I帧来说估计效果略有提升,而对于P帧与B帧来说,估计效果则得到了大大的提高,说明改进后的算法有效地解决了原始算法存在的一些问题。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1