常用的视频编码器中,在一个框架中使用了多种编码方法:
01.预测编码:
不编码预测值,而是编码预测值与实际值的差值
02.变换编码:
对信号的样本值进行某种形式的函数变换,从一种空间变换到另一种空间,然后再根据信号在另一个空间域的特征来对信号进行编码压缩
想要达到码率压缩的目的,可根据频谱因素分配比特数:图像中低频部分信息量大,高频部分信息量小,因此对低频部分给予更多的比特,对高频部分给予更少的比特。但是这一切需要在低熵(每个数据出现的概率差别大)的前提下,因此通过变换编码来使视频数据熵值降低(让信源从像素值变为频率值)
变换本身并不压缩数据,其使变换后的信号样值更独立和有序,真正其压缩作用的是量化
03.熵编码:
对于同一个信源,其总的信息量是不变的,通过熵编码后使其信源尽量等概分布,则每个输出符号携带的信息量增大(根据最大离散熵定理:给定离散无记忆信源输出n个不同的信息符号,离散信源的n个概率分量p1,p2,…pn,当且仅当各个符号出现概率相等时熵最大,平均到每个符号的信息量也最大),那么传送相同信息量所需要的序列长度就越短
变长编码基本定理:如果码字长度严格按照符号概率的大小的相反顺序排列,则平均码字长度一定小于按任何其他符号顺序排列方式得到的码字长度。
一般用“残差”Dn 来表示当前块和参考块之间的误差。将残差 Dn 进一步进行离散余弦变换 DCT后对变换系数进行量化可以进一步压缩数据量。其中该压缩过程是有损的,一般地随着量化参数QP的扩大,图像的损失将变大。解码过程需要进行一次反量化-反变换IDCT 还原残差,后再根据参考宏块还原原始图像。应用量化-反量化的过程将导致数据丢失和失真。 因此,原始数据和重构数据之间的差称作“量化噪声”。视频压缩过程中的量化噪声导致称作“伪影” 的特定视觉误差。在伪影当中有块状、环状以及飞蚊噪声,其中块状、环状是块中的竖线和横线, 飞蚊噪声看起来像图像强边缘周围的一团昆虫。
参考:https://zhuanlan.zhihu.com/p/141689819
https://blog.csdn.net/u014470361/article/details/94641124
https://arxiv.org/abs/1903.00473
压缩伪影整体上分为两类:
基于空域(temporal)往往图像处理中也会遇到。
基于时域 (Spatial)视频特有的
着重讨论块效应和振铃效应和呼吸效应
基于块的视频编码方案由于块的划分和量化而产生各种空间伪影
Basis Pattern (Spatial)基模式效应
基模式效应的名称来自于所有压缩算法特有的基函数(数学变换)。基模式造成的伪影看起来类似于振铃效应。然而,尽管振铃效应仅限于尖锐的边缘或线条,但基模式却不是。它通常发生在有纹理的区域,如树木、草地、海浪等。通常情况下,如果观众注意到一个基模式,它会对感知视频质量产生强烈的负面影响。
Blocking(Spatial)块效应
什么是块效应:块效应是在视频编码中人眼察觉到的小块边界处的不连续,只要是以块为单位进行的视频编码就会出现块效应,当以低码率传输时更为明显。
为什么会造成块效应:DCT变换不是将一整张图进行dct变换,而是切成16X16,8X8,4X4的块进行变换,不同的图像块进行了不同的处理,有时是量化步长不同,有时是舍去的高频分量不同,这将导致图像块之间的相关性被破坏。当量化时采用的步长越大,或者相邻块的量化步长之差不同时更为明显(低码率时往往量化步长比较大,块效应更明显)。
表现形式:
梯形噪声:dct的高频系数被量化为0,使得强边缘在跨界处出现锯齿状。
格形噪声:经常出现在平坦区域,由于量化取整的四舍五入,导致本来平缓变化的亮度块的DC系数发生跳跃,造成重建图像相邻块的亮度突变,这种称为格形噪声
解决方案:
在视频编码中,为了解决或减小块效应,很多视频编码标准(H264,H265,SVAC)中采用了去块滤波Deblock的方案。
Blurring(Spatial)模糊效应
模糊是空域高频图像细节损失的结果,通常在锐利的边缘。针对较高的压缩比,HEVC编码器离散量化变换后的残差。当视频信号被重建时,高频能量可能会严重丢失,从而导致视觉模糊。从感知上看,模糊通常表现为空间细节的丢失或图像中边缘或纹理区域的锐度
Color Bleeding (Spatial)出血效应
颜色出血,顾名思义,当图像中一种颜色的边缘无意中出血或重叠成另一种颜色时发生。假设源视频没有过饱和,这个伪影是由低色度亚采样造成的。
原图
出血效应
可以看到,小女孩手中的绿色不明物的顶端颜色由黄色变成了绿色
色度信息被粗量化,从而导致颜色出血。这与压缩图像中存在的强色度变化导致的虚假的颜色边缘有关。这可能是跨亮度和彩色通道的图像渲染不一致的结果。在上图中,它在渲染结果中显示了色失真和额外的不一致的颜色扩散。
Ringing (Spatial)振铃效应
什么是振铃效应:振铃效应也被称为回声或鬼影,在尖锐的边缘附近以“光晕”、“环”的形式出现。比较明显的是红色圈圈的地方,这种现象是发生在一张图像内灰度变化剧烈的地方。
振铃效应的原因:由于在频域滤波使用理想的低通滤波器,图像的低频分量被完全保存,高频分量被完全移去,
众所周知,图像在频域与低通滤波器乘积相当于图像在时域与低通滤波器的时域对应形式sinc函数进行卷积,此时会有很多类似于sinc函数那样的周期震荡在空间域内,因此低通滤波器在模糊图像的同时,会将灰度剧烈变化的那些震荡铺满整个恢复的图像。
解决方案:
在视频编码中,为了解决或减小振铃效应,H265和SVAC2中采用了SAO样点滤波偏移的方案。
Flickering (Temporal)闪烁效应
原图
振铃效应
闪烁一般是指亮度或色度随时间的频繁变化(类似于蜡烛的火焰),通常分为细粒忽明忽暗和粗粒忽明忽暗。细粒闪烁通常出现在具有大运动或纹理细节的慢动作序列中,通常出现在高频率闪烁。它可以非常吸引眼球,让观众感到厌烦。粗粒度闪烁是指视频大面积亮度的突然变化。这种类型的闪烁最可能的原因是在压缩中不同图片组(GoP)使用了不同的亮度。
上图水面上频繁的亮度变化会产生闪烁的伪影。
Mosquito noise (Temporal)蚊式噪音效应
蚊式噪音,或“边缘忙碌”,得名于它的形状像一只蚊子在一个人的头和肩膀周围飞。它是闪烁的一种变体,其典型特征是围绕高频内容(前景实体和背景之间的尖锐过渡或硬边)出现的模糊和/或闪烁,蚊子噪声是高频失真,是时域编码效应的体现。它和蚊子一样随着图像上的物体一起移动。这可能是由于振铃效应导致的错误匹配导致预测误差和运动补偿造成的。
Floating (Temporal)漂浮效应
原图
漂浮效应
如上图出现了漂浮效应,从视觉上看,这些区域产生了一种强烈的错觉,就好像它们漂浮在叶子上。
漂浮是指某些区域的虚幻运动,而周围区域保持静止。从视觉上看,这些区域似乎漂浮在周围的背景之上。可能是由于视频编码中的跳过模式,它只是简单地将一个块从一帧复制到另一帧,而无需进一步更新图像细节。有两种类型的浮动:纹理浮动和边缘浮动。纹理浮动处理大面积的纹理,如水面或树木,而边缘浮动涉及大面积纹理区域的边界,如湖泊的海岸线。
Jerkiness (Temporal)抖动效应
抖动是由于帧采样而感知到的不均匀或摇摆的运动。它通常是由24帧电影转换成30或60帧视频格式造成的。这个过程被称为“3分2秒下拉”或“2分3秒下拉”,并不能完美复制原版电影,因为《24小时》并没有均匀地分成30或60份。由于物体在帧与帧之间的运动减少,在较高的帧速率下,对抖动的感知减弱。传统上,不稳定被认为是真正的压缩产物。
Staircase noise (Spatial)梯式噪音效应
梯式噪音是沿对角线或弯曲边阻塞的一种特殊情况。而不是渲染为平滑,它采取的外观楼梯台阶,因此得名。根据根本原因,楼梯可以被归类为压缩伪影(采样率不足)或标量伪影(空间分辨率太低)。
breath((Temporal))呼吸效应:
(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
传统方法:
参考:一种基于深度学习的视频压缩伪影自适应去除方法
S .Oguz等人提出可使用线性或非线性的各向同性滤波器,消除视频中的振铃伪影。为了减缓闪烁效应
——S .Oguz,Y .Hu,and T .Nguyen,“Image Coding Ringing Artifact Reduction
using Morphological Post-filtering,”Proc .IEEE Int .Work .Multimedia Signal
Proc .,pp .628–633,1998 .
X .Fan等人将量化误差作为影响因素,以获取最佳的帧内预测模式。
——X .Fan,W .Gao,Y .Lu,and D .Zhao,“Flicking Reduction in All Intra Frame
Coding,”Joint Video Team of ISO/IEC MPEG and ITU-T VCEG,JVT-E070,2002 .
HEVC/H .2 6 5 采用了以下两种内嵌式滤波器减少伪影:
第一,使用去块滤波器
(Deblocking Filter,DF),该滤波器主要是为了减少受损视频的块状效应。第二,使用样点
自适应补偿(Sample Adaptive Offset,SAO),该方式会根据样本的类型和应用区域来决定
偏移量,并将偏移量传递给解码器,这种方式能够有效的减轻振铃效应并提升画质。
这些传统的视频去压缩伪影方法存在以下几个问题:第一,需要手工去设计滤波器,这类滤波器通常只针对某一种伪影,通用性较差。第二,需要根据经验设定滤波器的阈值,阈值的设定通常会对滤波结果产生较大的影响,鲁棒性较弱。第三,使用内嵌式滤波器缓解视频的压缩伪影,增加了编码复杂度,影响了编码算法的实时性。
基于深度学习的方法:
又分为环内滤波和环外滤波
环内滤波:能够有效地提升视频的编码质量。但是,这种做法会严重影响编码的速度,实时性相对较差。
比如:
W .S .Park and M .Kim,“Cnn-based in-loop filtering for coding
efficiency improvement,”in Image,Video,and Multidimensional Signal Processing
Workshop(IVMSP),2016IEEE 12th .IEEE,2016,pp .1–5 .[0057]
Y .Dai,D .Liu,and F .Wu,“A convolutional neural network approach for
post-processing in hevc intra cod-ing,”in International Conference on
Multimedia Model-ing .Springer,2017,pp .28–39 .
环外滤波:不会影响原有的视频编解码框架,能够适用于不同的压缩算法,具有较好的通用性和实时性。
比如MFQE,MFQE2.0,STDF等等