深入理解 Affine-Motion Compensation

1 The six-parameter affine motion model

H. Huang, J. Woods, Y. Zhao, and H. Bai, “Control-point representation and differential coding affine-motion compensation,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 23, no.10, pp.1651–1660, Oct. 2013.

2D 仿射变换被描述为(1-1):

\(\left\{\begin{array}{l}x^{\prime}=a x+b y+e \\ y^{\prime}=c x+d y+f\end{array}\right.\)

其中\((x, y)\)和\(\left(x^{\prime}, y^{\prime}\right)\)分别是当前帧和参考帧中的一对对应位置,\(a 、b、c、d、e\) 和 \(f\) 是仿射参数。 令 \((v_{x}, v_{y})=\) \((x-x^{\prime}, y-y^{\prime})\)为当前帧中位置 \((x, y)\) 的运动,则可以得出(1-2)

\(\left\{\begin{array}{l}
v_{x}=(1-a) x-b y-e \\
v_{y}=(1-c) x-d y-f
\end{array}\right.\)

这称为仿射运动模型(affine motion model)。 与传统的块匹配算法相比,允许参考帧中的匹配块扭曲或变形(warped or deformed),以获得更好的运动补偿预测。 代价是传输更多的运动参数,每块 6 个而不是 2 个。 在视频编码中,运动参数作为辅助信息传输,在较低的总比特率下可能很重要。 因此已经发现,该运动信息的压缩对于提高整体编码性能是至关重要的。 由此产生的运动参数数量的增加可能会抵消仿射运动补偿的优点。因此,运动参数的有效编码对于仿射运动模型变得更加关键。

给定一个大小为S × S的正方形区域\(\chi\),设置坐标系如图2所示。顶部和左侧3个角,即\((0,0),(S,0)\)和\( (0,S)\)可以作为控制点,记为\((x_i,y_i),i=0,1,2\)。设它们的平移运动向量为\(\vec{v_i}=(v_{x_i}, v_{y_i}),i=0,1,2\)。矩阵\(\mathbf{V} =(\vec{v}_0,\vec{v}_1,\vec{v}_2)\)称为 affne运动矩阵。 使 \(\chi\) 变形的位移控制点为 \((x_i^{\prime},y_i^{\prime})=(x_i-v_{x_i},y_i-v_{y_i})\)。用\((v_{x_i},v_{y_i})\) 和 \( (x_i,y_i)\)代入(1-2)中的 \((v_x,v_y)\)和\((x,y)\),我们将有六个方程,其中有六个未知数 \(a,b,c,d,e\) 和 \(f\)。 求解这些方程,我们有(1-3):

\(\left\{\begin{array}{l}a=1-\frac{v_{x_1}-v_{x_0}}S,b=\frac{v_{x_0}-v_{x_2}}S,e=-v_{x_0}\\c=1-\frac{v_{y_1}-v_{y_0}}S,d=\frac{v_{y_0}-v_{y_2}}S,f=-v_{y_0}\end{array}\right.\)

通过 (1-2) 和 (1-3),我们得到(1-4):

\(\left\{\begin{array}{l}v_x=\frac{v_{x_1}-v_{x_0}}Sx+\frac{v_{x_2}-v_{x_0}}Sy+v_{x_0}\\v_y=\frac{v_{y_1}-v_{y_0}}Sx+\frac{v_{y_2}-v_{y_0}}Sy+v_{y_0}\end{array}\right.\)

在解码器端接收仿射运动矩阵V,\(\chi\)上的运动场可由(1-4) 导出。

2 The four-parameter affine motion model

L. Li, H. Li, D. Liu, Z. Li, H. Yang, S. Lin, H. Chen, and F. Wu, “An Efficient Four-Parameter Affine Motion Model for Video Coding,” IEEE Transactions on Circuits and Systems for Video Technology, Apr. 2017.

仿射运动模型可以表征平移、旋转、缩放、错切(translation, rotation, zooming, shear mapping)等。 然而,日常视频中最常见的运动仅包括六种典型摄像机运动(camera track, boom, pan, tilt, zoom, and roll)和典型物体运动(平移、旋转和缩放),其中六模型参数超出必要。 需要说明的是,这里的旋转是指物体在与相机平行的二维平面内旋转。 此外,只有当物体与相机之间的相对距离保持不变或者物体具有平坦表面时,才可以使用仿射运动模型来表征物体缩放。 由于本文关注的是局部仿射模型,因此只要局部块足够小,我们就可以假设局部块具有平坦的表面。 下面,将以典型的物体运动为例来解释所提出的四参数仿射运动模型的物理解释。

事实上,如图1(a)所示,如果只需要对旋转和平移的组合进行表征,则同一像素变换前后的坐标关系可以描述为(2-2):

\(\left\{\begin{array}{l}x’=\cos\theta\cdot x+\sin\theta\cdot y+c\\y’=-\sin\theta\cdot x+\cos\theta\cdot y+f\end{array}\right.\)

其中 θ 是旋转角度。 此外,如图1(b)所示,如果仅表征缩放和平移的组合,则其关系可以描述为(2-3):

\(\left\{\begin{array}{c}x’=\rho\cdot x+c\\y’=\rho\cdot y+f\end{array}\right.\)

其中 ρ 分别是 x 和 y 方向上的缩放因子。

旋转/缩放和平移的组合都需要三个参数来表征。 如果我们将旋转、缩放和平移结合在一起,则需要四个参数,其关系可以描述为(2-4):

\(\left\{\begin{array}{l}x^{\prime}=\rho\cos\theta\cdot x+\rho\sin\theta\cdot y+c\\y^{\prime}=-\rho\sin\theta\cdot x+\rho\cos\theta\cdot y+f\end{array}\right.\)

如果我们将 ρcos θ 和 ρsin θ 替换为 (1 + a) 和 b,则 (2-4) 可以重写为(2-5):

\(\left\{\begin{array}{l}MV_{(x,y)}^h=x^{\prime}-x=ax+by+c\\MV_{(x,y)}^v=y^{\prime}-y=-bx+ay+f\end{array}\right.\)

其中\(MV_{(x,y)}^h\)和\(MV_{(x,y)}^v\) 是位置 (x, y) 的 MV 的水平和垂直分量。 等式(2-5)是采用的四参数仿射运动模型,能够精确表征旋转、缩放和平移的组合。

六参数仿射运动模型与四参数仿射运动模型进行比较,可以明显看出,在四参数仿射运动模型下,每个块计算的参数较少,因此解码复杂度可以稍微降低。 此外,由于稍后将介绍的快速仿射ME算法可以在四参数仿射运动模型下更快地收敛,因此编码复杂度也将降低。 由于标头信息的比特节省,四参数仿射运动模型可以为大多数自然序列带来更好的 R-D 性能。

根据式(2-5),有四个未知模型参数。 除了这四个参数,我们还可以使用两个MV来等效地表示模型,因为使用MV更符合现有的视频编码框架。 可以在当前块的任何位置选择这两个 MV 来表示运动模型。 我们选择当前块的左上和右上位置的MV,因为这两个位置与先前重建的块相邻,并且可以更准确地预测对应的MV。 在如图 2 所示的典型 S × S 块中,如果我们将左上角像素 (0, 0) 的 MV 表示为 MV0,将右上像素 (S − 1, 0) 的 MV 表示为 MV1,则模型参数a、b、c、f可根据式(5)求解如下(2-6):

\(\left\{\begin{array}{ll}a=\frac{MV_1^h-MV_0^h}{S-1}&c=MV_0^h\\b=-\frac{MV_1^v-MV_0^v}{S-1}&f=MV_0^v\end{array}\right.\)

3 Affine Motion Eestimate

下面给出VTM中4参数和6参数Affine ME的迭代步骤:

步骤1:寻找ME过程的初始CPMV。 测试若干个候选的CPMV组合,对于每个候选,通过将CPMV设置为候选MV来执行当前块的AMC,然后计算AMC预测块的SATD成本。 初始CPMV候选设置为等于提供最小 SATD 成本的候选者。

步骤2:从仿射参数Pi推导Pi+1。那么当使用Pi+1进行AMC时当前块的总误差可以计算为(3-3)

\(D=\sum_{(x,y)\in B}\lVert org(x,y)-ref(W(x,y,P_{i+1}))\rVert^2\)

其中对于6参数模型(3-4):

\(\left.W=\left[\begin{array}{c}ax+by+e\\cx+dy+f\end{array}\right.\right]=\left[\begin{array}{cccccc}x&0&y&0&1&0\\0&x&0&y&0&1\end{array}\right]\left[\begin{array}{ccccc}a&c&b&d&e&f\end{array}\right]^T\)

对于6参数模型(3-5):

\(\left.W=\left[\begin{matrix}ax+by+e\\-bx+ay+f\end{matrix}\right.\right]=\left[\begin{matrix}x&y&1&0\\-y&x&0&1\end{matrix}\right]\left[\begin{array}{cccc}a&b&e&f\end{array}\right]^T\)

将(3-3)改写为(3-6):

\(D=\sum_{(x,y)\in B}\lVert org(x,y)-ref(W(x,y,P_i+\Delta P))\rVert^2\)

将\(ref(W(x,y,P_i+\Delta P))\)泰勒展开得(3-7):

\(ref(W(x,y,P_i+\Delta P))\approx ref(W(x,y,P_i))+\frac{\partial ref}{\partial W}\frac{\partial W}{\partial P}\Delta P\)

其中\(\frac{\partial ref}{\partial W}\)为参考图像对位置的导数,即梯度\(\begin{matrix}G=[G_x&G_y]\end{matrix}\); \(\frac{\partial W}{\partial P}\)可以由(3-4)(3-5)推导,因此对于6参数模型(3-8):

\(Q(x,y)=\frac{\partial ref}{\partial W}\frac{\partial W}{\partial P}=\begin{matrix}[xG_x&xG_y&yG_x&yG_y&G_x&G_y]\end{matrix}\)

对于4参数模型(3-9):

\(Q(x,y)=\frac{\partial ref}{\partial W}\frac{\partial W}{\partial P}=\begin{matrix}[xG_x-yG_y&yG_x+xG_y&G_x&G_y]\end{matrix}\)

带入(3-8)或(3-9)到(3-6)中得(3-9):

\(D=\sum_{(x,y)\in B}\lVert E(x,y)-Q(x,y)\Delta P\rVert^2\)

其中\(E(x,y)=org(x,y)-ref(W(x,y,P_i)\)。

求D的最小值即可得到\(\Delta P\),我们对D求导并令导数为0得(3-10):

\(Q^TQ\Delta P=Q^TE\)

其中Q是尺寸为m×6或者m×4的矩阵,E是长度m×1的向量,m是CU内的像素总数。使用高斯消元法可得到\(\Delta P\),则可推导出\(P_{i+1}=P_i+\Delta P\)。

步骤3:使用\(P_{i+1}\)执行当前块的AMC,然后计算AMC预测块的SATD成本C(i+1)。 如果 C(i+1) < C*,则 C*设置为等于 C(i+1)

步骤4:若\(P_{i+1}\)与\(P_i\)不相同且i小于最大迭代次数,则设i=i+1,转步骤2; 否则,终止ME过程。

SAO Implementation Aspects and Parameters Estimation

由于SAO需要样本级操作来将每个样本分类为编码器和解码器中的边带或类别,因此需要尽可能减少每个样本的操作数量,以降低总体计算复杂性。在编码器端,有许多SAO类型需要测试,以在合理的计算复杂性下实现更好的速率失真性能。本文将讨论一些有效的编码器算法。

关于SAO的介绍可以参考:样本自适应偏移 Sample Adaptive Offset (SAO) – 我受到了惊吓 (mmedia-t.cn)

Fast Edge Offset Sample Classification

可以通过使用以下函数和方程以更有效的方式实施EO样本分类:

其中,“c”是当前样本,“a”和“b”是两个相邻样本。作为进一步的加速,上一步骤中获得的数据可以在下一个样本的分类中重复使用。例如,假设EO类为0(即,一维水平图案),并且CTB中的样本按照光栅扫描顺序进行处理。当前样本的“sign3(c-a)”等于左侧相邻样本的“sign3(c-b)”。同样,当前样本的“sign3(c-b)”可以被右侧的相邻样本重用。在软件实现中,sign3(x)函数可以通过使用逐位操作或查找表来实现,以避免使用if-else操作,这在某些平台上可能是耗时的。

Fast Band Offset Sample Classification

样本范围在BO中平均分为32个波段。由于32等于2的5次幂,所以BO样本分类可以实现为使用每个样本的五个最高有效位作为分类结果。通过这种方式,BO的复杂性降低了,特别是在硬件中,只需要电线连接而不需要逻辑门来从样本值获得分类结果。为了减少软件解码运行时间,可以通过使用逐位操作或查找表来实现BO分类,以避免使用if-else操作。

Distortion Estimation for Encoder

速率失真优化过程需要多次计算原始和重建样本值之间的失真。一个简单的SAO实现将通过向de-blocking后的样本添加偏移,然后计算得到的样本和原始样本之间的失真。为了减少存储器访问和操作次数,可以如下实现快速失真估计方法。设k, s(k)和x(k)分别是样本位置、原始样本和重建样本,其中k属于C,CTB内属于特定SAO类型(即BO或EO)起始边带位置或EO类别以及特定边带或类别的样本集合。原始样本和重建样本之间的失真可以通过以下等式描述:

原始样本和SAO修改的样本之间的失真可以通过以下等式描述

其中h是样本集的偏移量。失真变化由以下方程定义:

其中N是集合中的样本数,E是原始样本和重建样本(SAO之前)之间的差值之和,如以下等式所定义:

请注意,样本分类和(7.28)可以在去块滤波后输入样本变得可用后立即计算。因此,N和E只计算一次并存储。然后,ΔJ定义如下:

其中λ是拉格朗日乘数,R表示估计的比特。

对于具有特定SAO类型(即BO或EO)、起始频带位置或EO类别以及特定频带或类别的给定CTB,测试接近E/N的几个h值(偏移),并选择使ΔJ最小化的偏移。在选择了所有边带或类别的偏移之后,将32个BO边带中的每个边带或五个EO类别中的每个的ΔJ相加,以获得整个CTB的速率失真成本的增量(变化)。使用零偏移和EO类别0的BO边带的失真可以通过(7.25)预先计算,并存储以供后续重复使用。当SAO降低整个CTB的成本(即,增量成本为负)时,该CTB启用SAO。类似地,通过快速失真估计可以找到最佳SAO类型和最佳起始位置或EO类。

Slice-Level On/Off Control

HM参考软件通用测试条件使用分级量化参数(QP)设置。作为示例,在随机接入条件下,GOP大小为8。根据帧在GOP中的位置,帧可以属于不同的层次结构级别。通常,帧仅从具有较小或相同层次结构的帧中预测。具有较高层次结构的帧可能会被赋予较高的QP。

如下提供Slice级开/关判定算法。对于层次结构级别0的帧,Slice header中始终启用SAO。给定具有非零层次级别N的当前帧,先前帧被定义为解码顺序中具有层次级别(N-1)的上一个图片。如果在前一张图片中超过75%的CTB中禁用SAO,HM参考编码器将在当前图片的所有切片标头中禁用SAO,并跳过SAO编码过程。这种编码器技术不仅可以减少要解析的语法数量,还可以提高0.5%的BD速率。请注意,亮度和色度SAO可以在Slice header中单独启用或禁用。

SAO Parameters Estimation and Interaction with Deblocking

在HM参考编码器中,估计每个CTU的SAO参数。由于SAO被应用于去块滤波器的输出,所以在去块样本可用之前,不能精确地确定SAO参数。然而,当前编码树块(CTB)中的右列和底行的解块样本可能不可用,因为右侧的CTU和当前CTU下方的CTU可能尚未被重建(在单通道编码器中)。这一限制可以通过两个选项中的一个来克服。第一个选项估计可用CTB样本上的SAO参数,即除了三个底行亮度样本、一个底行Cb和Cr样本、最右侧四列亮度样本、最右边两列Cb和Cr样本之外的CTB样本。当使用64×64 CTU大小时,所提出的方法不会引起显著的编码效率损失。然而,对于较小的CTU大小,SAO参数估计中未使用的样本百分比较高,这可能导致显著的编码效率损失。在这种情况下,第二选项在SAO参数估计期间使用去块之前的样本,而不是不可用的去块样本,这可以减少较小CTU大小的编码效率损失。

论文分享:A Non-local Mean Temporal Filter for Video Compression

这篇文章对于学习MCTF(运动补偿时域滤波  motion compensated temporal filtering)有很好的帮助。

摘要:

现代视频编解码器利用视频信号的时间和空间相关性来实现压缩。视频信号中的噪声破坏了这种相关性并损害了编码效率。先前在VP8、VP9和HEVC中的工作利用了时间滤波来去除源信号中的某些噪声。它们通常比较沿运动轨迹的一对像素,并基于像素值差确定滤波器系数。观察到,这种噪声去除允许更好的速率失真性能折衷。请注意,在所有情况下都针对原始视频信号评估压缩失真。本文提出了一种用于噪声去除的非局部平均时间滤波器。它不是比较运动轨迹上的一对像素,而是比较感兴趣像素周围的两个像素块。然后,它们在L2范数中的距离被帧噪声水平归一化,该噪声水平用于确定非参数模型中的时间滤波器系数。实验表明,与其他竞争者相比,所提出的非局部均值滤波方法获得了更好的压缩效率。

I. INTRODUCTION

视频编解码器利用视频信号的空间和时间相关性来实现压缩效率。源信号中的噪声因素减弱了这种相关性,阻碍了编解码器的性能。视频信号去噪是一种很有前景的解决方案。

采用各种去噪方法去除重构帧中的量化噪声在视频压缩研究中有着悠久的历史。Dubois和Sabri[1]指出,噪声和信号之间的主要区别在于噪声是不相关的,而视频信号具有很强的时间相关性。Boyce[2]建议使用自适应运动补偿帧平均方法来减少噪声。该算法是逐块的,并且在无位移帧平均和运动补偿帧平均之间切换。这些方法成功地降低了噪声并提高了视频帧的视觉质量。在VP8中,提出了一种内环去噪算法,以生成非显示帧,该帧被编码并存储在帧缓冲器中,用作其他显示帧的参考帧[3]。后来,针对H.264/AVC[4]和HEVC[5]提出了类似的想法。不同的滤波算法,如自适应维纳滤波器、非局部均值[6]、块匹配和三维滤波(BM3D)[7]在环路去噪框架[8]中进行了评估。其他作品[9]、[10]通过在高维空间中进行分组和协作过滤,利用自然视频序列中的时间和空间冗余,提高了视觉质量。

在各种编码器实现中,包括libvpx VP8、VP9[11]和HEVC[12],早就发现了从源视频信号中去除噪声作为目标压缩效率的预处理阶段的好处。它们通常使用常规块匹配运动搜索构建运动轨迹,并比较轨迹上的每对像素,其差值将用于确定时间滤波器系数。滤波后的帧被馈送到视频编解码器中,并将其重建与原始(无滤波)帧进行比较以计算失真。实验表明,它可以获得显著的压缩性能增益。

本文提出了一种用于源信号时域滤波的非局部均值滤波核。它不是比较一对像素之间的差异来决定滤波器系数,而是比较分别以两个像素为中心的两个像素块之间的L2范数距离。然后将该距离相对于帧噪声水平进行归一化,该噪声水平也是从源帧估计的,并用于确定滤波器系数。我们的实验证明,在整体压缩性能方面,所提出的非局部均值方法优于[11]和[12]中的先验滤波方法。

II. DENOISING SCHEME IN VIDEO COMPRESSION

针对分层金字塔编码结构,特别设计了降噪方案。接下来我们将讨论视频信号的去噪、时域滤波核及其与编解码器的集成。

A. Noise Removal and Bit Rate Reduction

在视频压缩中,编码过程\((E)\)是首先将源视频信号\(V\)分解为重构表示和残差信号\(R\),然后将\(V\)转换为码流的过程。在有损压缩中,剩余信号在量化阶段被丢弃。设\(rate(·)\)表示比特流中组件的比特率。编码器设置速率\((R)=0\)。

现在考虑源视频信号\(V\)被噪声\(N\)损坏,设\(V^*\)表示真实信号(无噪声)。由于量化过程是编码过程引入的伪影,量化步长是量化噪声的唯一确定因素,我们假设量化噪声\(R\)与源视频信号生成过程中由于物理条件引入的噪声\(N\)无关。源信号可以写成:

编码过程变成:

在这个模型中,编码器在压缩过程中保留了真实信号声\(V^*\)加上噪声声\(N\)。然而,噪声是不需要的信息,它降低了视觉质量(除了故意添加噪声的情况,如膜粒噪声),衰减了重构帧之间的时间一致性,最终降低了压缩效率。因此需要降低声\(rate(N)\),或者理想情况下设置声\(rate(N)=0\)。

B. Video Denoising in Hierarchical Coding Structure

去除噪声并不一定能提高视频编码的压缩效率。去除噪声信号不可避免地会降低客观指标(例如,PSNR),因为指标是根据源视频信号计算的。

我们的解决方案是只对分层编码结构中的关键帧和0层帧进行去噪。在AV1中,每组图片(GOP)的层次结构有固定的长度,如图1所示。分层编码结构最重要的特点是不同层的比特率分配。视频信号按照金字塔结构无序编码,其中底层帧以较高的比特率预算编码,并作为上层帧的参考帧。该方案显著提高了编码效率。在AV1中,关键帧和0层帧占用比特率预算的百分比最大。图2显示了不同层的平均编码帧大小示例,其中包括mobile_cifhighway_cif的示例剪辑。

我们的实验表明,朴素的均匀视频去噪(在每个帧上不加区别地应用去噪)并不能提高AV1的压缩性能。原因是高层帧的比特率预算太小,无法在比特率降低和PSNR降低之间进行权衡。只有关键帧和层0处的帧具有显著比特率节省的潜力。

去噪的效果如图3所示的例子所示。在本例中,对150帧进行编码,并显示第一个GOP的PSNR值。我们观察到,去噪后,虽然关键帧的PSNR值下降了约2 dB,但后续帧的PSNR值增加了。这是因为去噪后的关键帧对接下来的帧有更好的参考作用,导致该GOP的PSNR增加。同时,实现了关键帧上比特率预算的减少。因此,整体压缩性能得到显著提高。

C. GOP Based Temporal Filter for HEVC

Wennersten等人[12]提出了一种基于gops的HEVC时间滤波器。它对第0层和第1层的帧进行过滤。对待过滤帧前后的帧进行运动补偿,寻找最佳匹配样本。滤波器系数取决于样本之间的差异,以及量化参数(QP)。滤波后的样本值\(f(i)\)由下式计算:

其中,\(p_j(i)\)是第j个运动补偿帧的采样值,\(p_0(i)\)为当前帧的样本值,\(w_{j,a}(i)\)表示可用帧数为\(a\)时第\(j\)个移动补偿帧的权重。\(N\)是候选帧数。对于亮度通道,权重\(w_{j,a}(i)\)定义为:

如果当前poc是16的倍数,则\(s1=1.5\),否则\(s1=0.95\);\(s2=0.4. \)s_{j,a}[/latex]确定为:

对于色度通道,权重\(w_{j,a}(i)\)定义为:

其中\(s3=0.55\)。

D. Non-local Mean Temporal Filtering Scheme

在本节中,我们提出了AV1的非局部时间滤波方案。与第II-C节中描述的滤波器相比,我们强调了两个主要因素:使用(1)patch difference和(2)noise level自适应确定滤波器系数。

与已有工作类似,我们的方法将当前帧划分为M × M块。对于每个块,运动搜索应用于当前帧之前和之后的帧。只有具有最小均方误差(MSE)的最佳匹配patch才被保留为邻居帧的候选patch。当前块也是一个候选patch。将N个候选patch组合在一起生成过滤后的输出。

设\(f(i)\)为过滤后的样本值,\(p_j (i)\)为第\(j\)个patch的样本值。过滤过程为:

其中\(w_j(i)\)是总共N个patch中的第\(j\)个patch的权重。

与第II-C节描述的滤波器不同,我们采用基于patch的差异而不是样本对样本的差异来确定滤波器系数。基于patch的差分的优点是它不会引入系统噪声[6],这是去噪的理想属性。权重由patch差确定为:

其中,\(D_j(i)\)为当前块与第\(j\)个候选补丁之间的差的平方和:

其中\(p_0\)指当前帧,\(Ω_i\)是补丁窗口,一个L×L正方形。\(h\)是控制由欧氏距离测量的权值衰减的关键参数。

基于补丁的算法参数的选取问题引起了人们的研究兴趣。\(h\)的大小对滤波系数有显著影响。一般情况下,在补丁差不变的情况下,\(h\)的增加会导致除当前帧外的参考补丁的权重更高,表明时间滤波更强。在我们的应用中,\(h\)由声源的噪声水平决定,这样滤波器系数适用于不同噪声的视频。设\(σ\)表示噪声的标准差,我们将\(h\)表示为相对于\(σ\)的单调递增因子:

其中\(t1 = 4\), \(t2 = 0.7\), \(t3 = 0.5\),这是实验确定的。通过这种方式,当视频被更高的噪声破坏时,应用了更强的平滑。

值得一提的是,我们发现,将\(h\)表述为\(σ\)的平稳增长函数提供了比我们之前在[14]中的工作更好的压缩性能,在[14]中,我们假设存在一个中心噪声水平,大多数视频的噪声都处于一个小范围内,从而得出\(h = C × exp(1 – σ) × σ\)。这样的公式适用于许多视频,但当我们在一个大的视频数据集上进行测试时,这个假设就不成立了,因为任何噪声级别都可能出现。

III. EXPERIMENTAL RESULTS

提出的时间滤波在libaom AV1框架[15]中实现。我们还在[12]中实现了基于gop的时间滤波器进行比较。注意,在[12]中,只使用当前帧前后的两个帧进行过滤,而在提议的方法中使用了三个帧。因此,参数\(s_{j,a}总是设置为0.3。这两种过滤器只应用于关键帧和0层帧,块大小[latex]M = 32\),窗口大小\(L = 5\),总共\(N = 7\)参考帧。参数\(σ\)由当前帧用[16]估计。

我们评估了720p和1080p视频的压缩性能,speed 1 (-cpu-used =1),在恒定质量模式下(-end-usage =q),最大帧数为150。压缩效率的提高分别通过PSNR、SSIM和VMAF的BD率降低来衡量。负值表示更好的编码性能。

表i显示了[12]和我们提出的滤波器相对于没有时间滤波的基线的平均性能。两种滤波器都显著提高了编码效率。提出的非局部均值滤波器在[12]上的相对编码性能如表II所示。显然,使用基于批处理的距离和噪声水平感知的核估计有一定的编码优势。

仔细观察单个视频片段的编码性能可以发现,编码增益较大的视频片段都是噪声水平相对较高的视频片段,如vidyo1_720p60, vidyo3_720p60。对于噪音水平非常低的视频,我们的方法可能会提供边际性能增益,如屏幕内容视频:life 1080p30。

图4显示了一个可视化示例。绘制了源图像和使用[12](中间行)中的滤波器和我们的滤波器(最后一行)的滤波图像之间的Y、U、V通道差异。从Y通道的差分图像中,我们观察到我们的滤波器比现有滤波器去除的结构信息更少。从U通道和V通道的差分图像中,我们可以看到我们的滤波器比其他滤波器更好地捕捉到源图像中呈现的强噪声。

IV. CONCLUSION AND FUTURE WORK

在这项工作中,我们提出了一个非局部平均时间滤波方案的视频压缩。对分层编码结构中的关键帧和底层帧进行滤波。滤波器系数的设计既考虑了贴片差又考虑了噪声水平。实验表明,它优于其他用于libvpx VP8, VP9和HEVC HM编码器的时间滤波器。

REFERENCES

[1] Eric Dubois and Shaker Sabri. Noise reduction in image sequences
using motion-compensated temporal filtering. IEEE Transactions on
Communications, 32(7):826–831, 1984.
[2] Jill M Boyce. Noise reduction of image sequences using adaptive
motion compensated frame averaging. In In 1992 IEEE International
Conference on Acoustics, Speech, and Signal Processing, volume 3,
pages 461–464. IEEE, 1992.
[3] Yaowu Xu. Inside webm technology: The vp8 alternate reference
frame. http://blog.webmproject.org/2010/05/inside-webm-technologyvp8-alternate.html, 2010.
[4] Eugen Wige, Peter Amon, Andreas Hutter, and Andre Kaup. In- ´
loop denoising of reference frames for lossless coding of noisy image
sequences. In 2010 IEEE International Conference on Image Processing,
pages 461–464. IEEE, 2010.
[5] Eugen Wige, Gilbert Yammine, Wolfgang Schnurrer, and Andre Kaup. ´
Mode adaptive reference frame denoising for high fidelity compression
in hevc. In 2012 Visual Communications and Image Processing, pages
1–6. IEEE, 2012.
[6] Antoni Buades, Bartomeu Coll, and J-M Morel. A non-local algorithm
for image denoising. In 2005 IEEE Computer Society Conference on
Computer Vision and Pattern Recognition (CVPR’05), volume 2, pages
60–65. IEEE, 2005.
[7] Kostadin Dabov, Alessandro Foi, Vladimir Katkovnik, and Karen
Egiazarian. Image denoising by sparse 3-d transform-domain collaborative filtering. IEEE Transactions on Image Processing, 16(8):2080–
2095, 2007.
[8] Eugen Wige, Gilbert Yammine, Peter Amon, Andreas Hutter, and
Andre Kaup. Efficient coding of video sequences by non-local in- ´
loop denoising of reference frames. In 2011 18th IEEE International
Conference on Image Processing, pages 1209–1212. IEEE, 2011.
[9] Kostadin Dabov, Alessandro Foi, and Karen Egiazarian. Video denoising
by sparse 3d transform-domain collaborative filtering. In 2007 15th
European Signal Processing Conference, pages 145–149. IEEE, 2007.
[10] Matteo Maggioni, Giacomo Boracchi, Alessandro Foi, and Karen
Egiazarian. Video denoising, deblocking, and enhancement through
separable 4-d nonlocal spatiotemporal transforms. IEEE Transactions
on image processing, 21(9):3952–3966, 2012.
[11] The WebM Project. https://chromium-review.googlesource.com.
[12] P. Wennersten. Encoder-only gop-based temporal filter. ITU-T SG 16
WP 3 and ISO/IEC JTC 1/SC 29/WG 11, Document: JCTVC-AI0023-
v2, 2019.
[13] Joseph Salmon. On two parameters for denoising with non-local means.
IEEE Signal Processing Letters, 17(3):269–272, 2009.
[14] Cheng Chen, Jingning Han, and Yaowu Xu. Video denoising for the
hierarchical coding structure in video coding. IEEE Sigport, 2020.
[15] Alliance for Open Media. https://aomedia.googlesource.com/aom/.
[16] Shen-Chuan Tai and Shih-Ming Yang. A fast method for image noise
estimation using laplacian operator and adaptive edge detection. In 2008
3rd International Symposium on Communications, Control and Signal
Processing, pages 1077–1081. IEEE, 2008.