一种视频编码方法
技术领域
本发明涉及一种视频编码方法。
背景技术
随着多媒体信息技术的发展,视频越来越广泛地应用于移动终端、网络直播、家庭影院和远程监控等各个领域,视频分辨率逐步从标清(SD)向高清(HD)、超高清(UHD)进行转变,分辨率的提高意味着对网络带宽的要求也越来越高,如何提升视频编码压缩效率来减少网络带宽压力是视频技术发展的一个关键。与此同时,传统视频编码技术中评价视频质量所采用的峰值信噪比(Peak Signal Noise Ratio,PSNR)只能表示重建值与原始值的失真度,与主观感知质量并不成正比。
因此,如何从人眼主观感知角度来进行视频编码,使编码出的视频更加符合人们的观看感受具有重要的意义。
如何在有限的带宽下提高视频质量,需要通过码率(比特率)控制技术来解决。码率控制属于编码的一个模块,它通过获取视频信源特性(如运动剧烈程度、图像纹理复杂度等)和可用网络带宽来计算视频中每一帧图像和该图像中的各个CU(Coding Unit,编码单元)应该分配的比特数,指导编码器对视频进行编码,使输出的码流符合信道的传输。
编码器将一个视频分为若干个GOP,每个GOP包含若干帧,每一帧包括包含若干个CU,码率控制算法基本可以分为三层:GOP(Group of Picture)层码率控制、帧层码率控制和CU层码率控制。
GOP层码率控制目的就是根据视频特性和网络带宽计算各个GOP的目标码率;
帧层码率控制将一个GOP的目标码率划分到GOP中的各个帧,根据各帧的特性计算各帧的目标码率;
CU层码率控制的核心是率失真优化,它需要使各个CU的编码失真尽可能小,又必须使消耗的码率尽可能小,而编码失真和码率之间的关系是反相关,只有码率越大,编码失真才越小,因此码率和编码失真之间需要进行权衡,才能使率失真代价J达到最小:
min{J},where J=λR+DSSE。
其中λ为拉格朗日因子,R代表编码码率,DSSE代表编码失真,传统拉格朗日率失真优化中采用的编码失真通常是SSE(Sum of Squared Error),它代表编码预测值相对于原始数据值的失真,但是它不能很好地描述人眼感知的视频失真的大小。
人类视觉系统(Human Visual System,HVS)具有主观选择性,对于同一帧图像,人眼对于各个区域的敏感程度并不一样,比如运动区域、纹理复杂区域、前景区域则容易吸引人眼的注意。
因此,对于人眼较敏感的区域,可以分配更多的码率,对于人眼较不敏感的区域,可以相对分配较少的码率,从而在总码率不变的情况下提升整体的主观质量。
目前,以主观感知为指导的码率控制研究主要集中在感兴趣区域(Region ofInterest,ROI)、显著性特征(Saliency)、恰可察觉失真(Just Noticeable Difference,JND)和结构相似度(Structural Similarity,SSIM)。
一篇来自NCBI的文献“Gradient Magnitude Similarity Deviation:A HighlyEfficient Perceptual Image Quality Index,IEEE Transactions on ImageProcessing,2013,23(2):684-95”提出了一种基于梯度幅值相似度GMSD(GradientMagnitude Similarity Deviation)的图像质量评价指标,证明了一帧图像中梯度的失真容易引起人眼的察觉,且比SSIM更加符合人眼感知,而如何利用它指导码率控制尚未有人研究。该文献中描述的GMS(Gradient Magnitude Similarity,梯度幅值相似度)表示了各像素点的梯度幅值失真:
其中c是一个常数,md(i)和mr(i)分别表示失真图像和参考图像在像素点i处的梯度幅值,求取方式为:
其中r和d分别表示参考图像和失真图像的亮度值,hx和hy分别是用Prewitt边缘检测算子求取的在水平和竖直方向的梯度。
发明内容
本发明的目的在于克服现有技术中的不足而提供一种视频编码方法。
为实现上述目的,一方面,本发明提供的一种视频编码方法,包括如下步骤:
在GOP层码率控制阶段,计算出各个GOP的目标码率RGOP;
在帧层码率控制阶段,利用第i帧和第i-1帧的梯度幅值相似性的平均值来表示第i帧和第i-1帧之间的复杂度变化值GMSF(i);
在CU层码率控制阶段,用Canny边缘检测算子代替原Prewitt边缘检测算子,求取第j个CU的失真值和参考值的梯度幅值mdj(x,y)和mrj(x,y),并进一步求取第j个CU的平均梯度幅值失真GMSB(j)。
优选地,在帧层码率控制阶段的步骤中,通过公式
计算第i帧和第i-1帧之间的复杂度变化值GMSF(i),其中公式中mi(x,y)和mi-1(x,y)分别表示第i帧和第i-1帧在像素点(x,y)处的梯度幅值,H和W分别表示帧的高度和宽度,c为一个常数。
优选地,在GOP层码率控制阶段的步骤中,通过公式
计算当前帧的目标码率,其中N为当前GOP中的帧数,α为帧复杂度调整因子。
优选地,α通过公式
可得,α用于表示帧间复杂度的相对变化。
优选地,通过公式
计算平均梯度幅值失真GMSB(i),其中公式中HB和WB分别表示当前CU的高度和宽度,c是一个常数。
优选地,定义第j个CU的感知失真度为
DGMS(j)=1-GMSB(j),
定义感知率失真模型为
J=λR+βDGMS(j),
其中J代表率失真代价,λ为拉格朗日因子,R为当前CU的码率,β为感知失真度调整因子。
8、优选地,感知率失真模型中的感知失真度调整因子β根据
β=wpβp+wlβl+wuβu+wulβul
计算,其中公式中βp、β1、βu、βul分别表示前一帧相同位置、当前CU的左边、当前CU的上边、当前CU的左上边的CU的感知失真度调整因子,wp、wl、wu、wul分别表示βp、βl、βu、βul的权重,且满足
wp+wl+wu+wul=1。
根据本发明提供的一种视频编码方法,采用帧间梯度幅值相似度的指标,更确切地描述帧间变化,解决帧间剧烈变化带来的编码质量下降问题;利用Canny边缘检测算子求取梯度,除了提取边缘,还能够较好的保护纹理区域,从而使GMS更完整的表示梯度幅值失真;建立一种感知率失真模型,利用当前CU的梯度幅值失真来取代传统编码失真SSE,使失真值更加符合人眼感知失真,因此本发明结合人眼感知失真特性,改善了现有码率的控制方法,提升了视频编码的主观质量。
具体实施方式
下面详细描述本发明的实施例。
本发明以H265为实施例提供了一种视频编码方法,但可以理解这并不局限于H265,还可应用于MPEG2、H264、AVS、AVS+等编码器。
本实施例的视频编码方法包括码率控制、GOP层计算各GOP目标码率、帧层根据帧间梯度幅值相似度衡量帧间复杂度,调整每帧目标码率、CU层利用CU梯度幅值失真值取代SSE,修改率失真模型,选择率失真代价最小的模式等四个流程。
具体地,包括如下步骤:
1、在GOP层码率控制阶段,计算出各个GOP的目标码率RGOP;
2、在帧层码率控制阶段,利用第i帧和第i-1帧的梯度幅值相似性的平均值来表示第i帧和第i-1帧之间的复杂度变化值GMSF(i);
3、在CU层码率控制阶段,用Canny边缘检测算子代替原Prewitt边缘检测算子,求取第j个CU的失真值和参考值的梯度幅值mdj(x,y)和mrj(x,y),并进一步求取第j个CU的平均梯度幅值失真GMSB(j)。
根据上述步骤,在帧层码率控制,现有方法通常采用帧差法检测帧间变化剧烈程度,但是该类方法会将不易引起察觉的平坦区域的变化和大量噪点也计算入内,造成较大的误差。而本发明提出一种帧间梯度相似度(Gradient Magnitude Similarity betweenFrames,GMSF)的指标,根据当前帧和前一帧的梯度幅值相似性来衡量帧间变化剧烈程度,能够更确切的描述帧间变化。在码率分配方案上,帧间变化越大则分配更多的码率,反之则分配较少的码率,能够较好的解决帧间剧烈变化带来的编码质量下降问题。
具体地,在帧层码率控制阶段的步骤中,通过公式
计算第i帧和第i-1帧之间的复杂度变化值GMSF(i),其中公式中mi(x,y)和mi-1(x,y)分别表示第i帧和第i-1帧在像素点(x,y)处的梯度幅值,H和W分别表示帧的高度和宽度,c为一个常数。
根据上述算法,在GOP层码率控制阶段的步骤中,通过公式
计算当前帧的目标码率,其中N为当前GOP中的帧数,α为帧复杂度调整因子。
特别地,α通过公式
可得,α用于表示帧间复杂度的相对变化。
在CU层码率控制,原始GMS求取中所用的Prewitt边缘检测算子虽然能够较好的提取边缘,但是大部分纹理区域都不能有效提取,本发明利用Canny边缘检测算子求取梯度,除了提取边缘,还能够较好的保护纹理区域,从而使GMS更完整的表示梯度幅值失真。
具体地,在CU层码率控制阶段的步骤中,通过公式
计算平均梯度幅值失真GMSB(i),其中公式中HB和WB分别表示当前CU的高度和宽度,c是一个常数。
在CU层码率控制,由于传统拉格朗日率失真优化中采用的编码失真SSE不能很好地描述人眼感知的视频失真的大小,本发明建立一种感知率失真模型,利用当前CU的梯度幅值失真来取代传统编码失真SSE,使失真值更加符合人眼感知失真,对于人眼越敏感的区域,则分配较多的码率,反之则分配较少的码率
具体地,定义第j个CU的感知失真度为
DGMS(j)=1-GMSB(j),
定义感知率失真模型为
J=λR+βDGMS(j),
其中J代表率失真代价,λ为拉格朗日因子,R为当前CU的码率,β为感知失真度调整因子。
9、根据上述算法,感知率失真模型中的感知失真度调整因子β根据
β=wpβp+wlβl+wuβu+wulβul
计算,其中公式中βp、βl、βu、βul分别表示前一帧相同位置、当前CU的左边、当前CU的上边、当前CU的左上边的CU的感知失真度调整因子,wp、wl、wu、wul分别表示βp、βl、βu、βul的权重,且满足
wp+wl+wu+wul=1。
由于本发明面向提升主观感知质量,将本发明方法与x265方法各自编码9个视频,其中3个为运动缓慢视频,3个为运动适中视频,3个为运动剧烈视频,并邀请5个非专业人士进行主观打分,在对比之下,如果认为好的记1分,不好的记0分,可得一得分结果:
|
运动缓慢(共15分) |
运动适中(共15分) |
运动剧烈(共15分) |
x265方法 |
7 |
4 |
6 |
本方法 |
8 |
11 |
9 |
由该结果可见,本方法对于原x265方法有较大提升,能够更加符合人眼视觉感知,尤其是对于运动适中的场景,本发明效果更佳。
综上,根据本发明提供的一种视频编码方法,采用帧间梯度幅值相似度的指标,更确切地描述帧间变化,解决帧间剧烈变化带来的编码质量下降问题;利用Canny边缘检测算子求取梯度,除了提取边缘,还能够较好的保护纹理区域,从而使GMS更完整的表示梯度幅值失真;建立一种感知率失真模型,利用当前CU的梯度幅值失真来取代传统编码失真SSE,使失真值更加符合人眼感知失真,因此本发明结合人眼感知失真特性,改善了现有码率的控制方法,提升了视频编码的主观质量。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。