编码压缩带来的几种效应和原因

吉布斯效应

先来简要回顾一下吉布斯效应。

对于Gibbs现象,百度百科解释为:吉布斯现象(又叫吉布斯效应):将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。

下面是百度百科配的图。

个人感觉不够直观,所以引用了另一篇博文的图:

这个比较明显,也就是说,用纯粹的傅里叶变换(有限多个正弦和余弦)去逼近带有棱角的曲线,会在频率剧烈变化处产生吉布斯效应,也就是产生了一个凸起。

 

对于二维的情况,振铃效应在百度百科上引用的图如下:

比较明显的是红色圈圈的地方,这种现象是发生在一张图像内灰度变化剧烈的地方,在使用大的量化步长后,图像的低频分量被完全保存,高频分量被完全移去,经过反变换后,会有很多类似于sinc函数那样的周期震荡在空间域内,因此会低通滤波器在模糊图像的同时,会将灰度剧烈变化的那些震荡铺满整个恢复的图像。
 

通过自己做的一个图像,演示一下振铃现象和块效应:

先将图像分为4*4的小块,在各个子图像的边沿,认为是像素跳变,类似于然后每块子图像过滤掉95%的高频分量,恢复后发现,红色区域,脸部有明显的震荡细纹,这些震荡细纹来自右侧的横向灰度剧烈变化的头发。而黄色的圆圈,在子图像的边缘,由于两个子图像的频谱不相同,因此滤波后恢复出的子图像边沿无法保持一致,因此出现块效应。


块效应:

(1)概念:

主要是由视频图像采用基于块的编码方式和量化造成相邻块之间存在明显差异的现象,在视频编码中人眼察觉到的小块边界处的不连续。

(2)产生原因:

1、编码过程中对残差进行DCT变换是基于块的,使得块与块之间的相关性被忽略了;

2、对DCT系数进行量化,不同的图像块做了不同的处理。

(3)解决方案:

在视频编码中,为了解决或减小块效应,很多视频编码标准(H264,H265,SVAC)中采用了去块滤波Deblock的方案。

振铃效应:

(1)概念:

图像处理中,对一幅图像进行滤波处理,若选用的频域滤波器具有陡峭的变化,则会使滤波图像产生“振铃”,所谓“振铃”,就是指输出图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。

(2)产生原因:

主要是由于DCT变换后对高频分量进行滤波操作导致。产生振铃效应的原因就在于,理想低通滤波器在频率域下的分布十分线性(在D0处呈现出一条垂直的线,在其他频率处呈现出一条水平的线),那么不难想象出对应的h(x,y)将会有类似于sinc函数那样周期震荡的空间分布特性。正是由于理想低通滤波器的空间域表示有类似于sinc函数的形状,位于正中央的突起使得理想低通滤波器有模糊图像的功能,而外层的其他突起则导致理想低通滤波器会产生振铃效应。

(3)解决方案:

在视频编码中,为了解决或减小振铃效应,H265和SVAC2中采用了SAO样点滤波偏移的方案。

呼吸效应:

(1)概念:

视频编码中的呼吸效应是指由于I帧的插入造成图像质量忽然变好,切换到P帧后又忽然变差。

一般情况下,我们都会将I帧调的比较大,一个GOP内,离I帧越远的P帧,编码误差越大,图像降质也越严重,当下一个I帧出现时,图像又立即变得清楚起来,纵观整个视频流,就会周期性出现清楚到模糊的突变,我们称这种现象为呼吸效应。

呼吸效应在静止的场景下比较容易观察出来,运动场景中,大部分的图像内容都在变化,不容易发现。

(2)分析:

呼吸效应在静止的场景下比较容易观察出来,运动场景中,大部分的图像内容都在变化,不容易发现。尤其在低码率的视频监控场景下,呼吸效应比较明显。

产生的主要原因:I帧和P帧的编码模式和编码质量的不同,导致视觉上图像不连续。

(3)解决方案:

一般情况下,CBR(固定码率)码控方式比CQP(固定QP)的呼吸效应更加严重。因此将码控模式修改为CQP方式在一定程度上可以减弱呼吸效应。
H264/5可以调节I帧P帧直接qp的偏差,控制I帧和P帧的大小比例关系,I帧的qp越小,I帧越大,图像越清楚,在一定程度上提升了整体图像质量,呼吸效应在一定程度上可以得到缓解;但是I帧也不能调的过大,在CBR模式下,I帧把全部带宽都吃掉了,P帧就只能编的更模糊一些,反而加重了呼吸效应;在实际调节过程中,就是通过调整intraQpDelta/intraQpOffset这类的参数来调节I帧大小;在ISP中,如果有3DSR功能,针对静止场景,可以有效改善呼吸效应。该解决方案参考:https://blog.csdn.net/szfhy/article/details/79882903
HISI提出了前滤波编码的方案,基于HISI编码器的硬件实现,对I帧的编码数据进行滤波操作然后再编码,可以改善呼吸效应,对应MPI接口为HI_MPI_VENC_GetDeBreathEffect和HI_MPI_VENC_SetDeBreathEffect。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值