ICIP-2020-A Non-local Mean Temporal Filter for VideoCompression

在 libvpx、VP8、VP9 和 HEVC 等各种编码器实现中,早就发现在预处理阶段过程中从源视频信号去除噪声对客观压缩效率的提升存在好处。通常使用常规的块匹配运动搜索来构建运动轨迹,并沿着轨迹比较每对像素,根据像素间的差异确定时域滤波器系数,对原始帧滤波后进行编码,其重建与原始(未滤波)帧进行比较计算失真。实验结果表明,该方法可显著提高压缩性能。

本文提出了一种非局部均值滤波核(non-local mean filter kernel),以用于源信号的时域滤波。该方法不是比较一对像素之间的差异来决定滤波系数,而是以 L2 范数为准则比较以两个像素为中心的像素块之间的差异,然后将差异以相当于帧噪声水平进行归一化,得到滤波器系数,其中帧的噪声水平也是从源视频帧估计的。

一、DENOISING SCHEME IN VIDEO COMPRESSION

该去噪方案是专门针对分层金字塔编码结构设计的。本节讨论讨论视频信号去噪、时域滤波器核及其与编解码器的集成。

1. Noise Removal and Bit Rate Reduction

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

源视频信号记作 V,视频信号中的噪声为 N,设 V* 表示源视频的真实信号(无噪声)。由于编码过程中的量化过程中引入伪影(量化噪声 R),而量化步长是量化噪声的唯一决定因素,因此我们假设量化噪声 R 与源视频信号产生过程中由于物理条件引入的噪声 N 无关。因此源信号可以写成:

编码过程变成:

在这个模型中,编码器在压缩过程中保留真实信号 V* 加上噪声 N。然而,噪声是不希望的信息,因为它会降低视觉质量(有意添加噪声的情况除外,例如,电影颗粒噪声),并减弱重建帧之间的时间一致性,最终降低压缩效率。因此,期望降低 rate (N),或者理想地设置 rate(N)=0。

2. Video Denoising in Hierarchical Coding Structure

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

本文的解决方案是在分层编码结构中仅对关键帧和第0层的帧应用去噪。在AV1中,每组图片(GOP) 的层次结构有固定的长度,如图1所示。分层编码结构最重要的特点是不同层的比特率分配。视频信号的乱序编码遵循金字塔结构,其中低层帧通常使用编码比特率较高,并作为高层帧的参考帧。该方案显著提高了编码效率。在 AV1 中,关键帧和第0层的帧占用比特率预算的最大百分比。图2显示了不同层的平均编码帧大小的示例,其中包含 mobile cif 和 highway cif 的示例。

图1:AV1的分层编码结构,低层的帧作为高层帧的参考
图2:两个视频片段在不同层的平均帧大小

实验表明,对每帧进行去噪,并不能提高 AV1 的压缩性能。原因是高层帧的比特率预算太小,无法平衡比特率降低和PSNR降低之间的权衡。只有关键帧和第 0 层的帧具有显著的比特率节省的潜力。

去噪的效果如图3所示。在本例中,编码150帧,显示第一个GOP的PSNR值。我们观察到,在去噪后,虽然关键帧的PSNR值下降了约 2dB,但后续帧的 PSNR 值提高了。这是因为去噪后的关键帧为后面的帧提供了更好的参考,导致该 GOP 的 PSNR 提高。同时,降低了关键帧的码率预算。因此,整体压缩性能显著提高。

(理解:视频的源信号存在噪声,如果对全部帧去噪可能造成客观指标(如PSNR等)的降低,但同时去噪也可以降低需要传输噪声的码率,时域滤波提升编码器性能是通过 PSNR 和 码率 的综合权衡)

图3:一组视频去噪和不去噪帧的PSNR变化

3. GOP Based Temporal Filter for HEVC

Wennersten等人提出了一种基于 Gop 的HEVC时域滤波器。它对第 0 层和第 1 层的帧应用滤波。对待滤波帧前后相邻的帧进行运动补偿,以找到最匹配的样本。滤波器系数取决于像素间的差异,以及量化参数(QP)。滤波后的像素值 f(i) 由下式计算:

其中 pj(i) 为第 j 个运动补偿帧的像素值,p0(i)为当前帧的像素值,wj,a(i)为可用帧数为 a 时第 j 个运动补偿帧的权值,N 为候选帧数。对于亮度分量,权重 wj,a(i) 定义为

 如果当前帧数是 16 的倍数,则 s1 = 1.5,否则 s1 = 0.95; S2 = 0.4。Sj,a定义为:

 对于色度分量,权值wj,a(i)定义为:

式中s3 = 0.55。 

4. Non-local Mean Temporal Filtering Scheme

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

与现有方法类似,我们的方法将当前帧划分为 M × M 块。对于每个块,以当前帧相邻之前和之后的帧作为参考帧进行运动估计,只保留均方误差最小 (MSE) 的最佳匹配 patch 作为相邻帧的候选patch 。当前块也是一个候选 patch。将总共N个候选 patch 组合在一起生成滤波后的输出。

设 f(i) 表示滤波后的像素值,pj(i) 表示第 j 个 patch 的像素值。滤波过程为:

 其中 wj(i) 是 N 个 patch 中第 j 个 patch 的权重。

与第 3 节中描述的滤波器不同,本文采用基于 patch 的 diff 而不是 像素-像素 的 diff 来确定滤波器系数。基于 patch 的 diff 的优点是不会引入系统噪声,这是去噪所需要的特性。权重由 patch diff确定为:

式中,Dj(i) 为当前块与第 j 个候选 patch 之差的平方和:

其中 p0 表示当前帧,Ωi 表示 patch 窗口,一个 L×L 的正方形。h 是控制由欧氏距离测量的权重衰减的关键参数。

的大小对滤波系数有显著的影响。一般来说,在patch差不变的情况下,h 的增加会导致参考 patch的权重高于当前帧,这表明时域滤波的强度更强。在本文的应用中,h 由源视频信号的噪声水平决定,使滤波器系数适应不同噪声的视频。设 σ 为噪声的标准差,将 h 作为 σ 的单调递增因子表示为:

其中 t1 = 4, t2 = 0.7, t3 = 0.5,由实验确定。通过这种方式,当视频信号的噪声更强时,可以应用更强的滤波平滑。
值得一提的是,本文发现将 h 表示为 σ 的平滑递增函数比我们之前的工作提供了更好的压缩性能,之前的工作中,通过假设存在一个中心噪声电平,其中大多数视频的噪声都处于一个小范围内,表示 h = C × exp(1−σ) × σ。这种公式适用于许多视频,但当在可能出现任何噪声水平的大型视频数据集上进行测试时,这种假设就不成立了。

二、EXPERIMENTAL RESULTS

提出的时间滤波在 libaom AV1 框架中实现。本文还实现了基于 GOP 的时域滤波器,以进行比较。请注意,在[12]中,仅使用当前帧前后两帧进行滤波,而在本文方法中使用了三帧。

因此,参数 sj,a 总是被设置为 0.3。两种滤波器只应用于关键帧和第0层的帧,块大小M = 32,窗口大小 L = 5,总共 N = 7 个参考帧。参数 σ 是用 [16] 从当前帧估计出来的。

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

以没有滤波的情况作为 Anchor,将[12]中提出的滤波器和本文的滤波器比较,性能如表1所示。这两种滤波器都显著提高了编码效率。本文提出的非局部均值滤波器在[12]上的相对编码性能如表2所示。显然,在 kernel 估计中使用带有噪声水平感知的基于 patch 的 diff 有一定的编码优势。

 仔细观察单个视频片段的编码性能可以发现,编码增益较大的视频片段是噪声水平相对较高的视频片段,例如 vidyo1 720p60、vidyo3 720p60。对于噪声水平非常低的视频,本文的方法可能会提供边际性能(marginal performance)增益,例如屏幕内容视频: life 1080p30。

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

clip Vidyo3 720p的关键帧,从上到下:原始帧,原始帧与[12]中滤波器滤波后的帧之差,原始帧与本文滤波器滤波后的帧之差。从左到右:Y、U、V通道。Y通道被缩放以显示与U和V通道相同的大小。

[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.

[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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1488211.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理_初识

目录 一、局域网LAN 二、广域网WAN 三、网络通信基础 3.1 IP地址 3.2 端口号 3.3 协议 3.4 五元组 3.5 OSI七层模型 3.6 TCP/IP五层模型 3.7 网络设备所在分层 3.8 封装和分用 总结 一、局域网LAN 局域网,即 Local Area Network,Local 即标…

Godot游戏制作 05收集物品

创建新场景,添加Area2D节点,AnimatedSprite2D节点 ,CollisionShape2D节点 添加硬币 按F键居中,放大视图。设置动画速度设为10FPS,加载后自动播放,动画循环 碰撞形状设为圆形,修改Area2D节点为Co…

看2024如何利用IT项目管理软件实现项目稳定输出,创造价值

曾经做为一个在大型互联网公司工作了10年的项目实施工作人员来讲,亲眼见证了IT项目管理软件的兴起和发展,也深刻体会到它在提升项目效率和管理水平方面的巨大价值。它就像一把神奇的钥匙,打开了项目管理的新世界,让原本混乱无序的…

docer笔记3

docker笔记3 容器基本命令 容器基本命令 下载镜像 docker pull cento新建容器并启动 docker run [可选参数] image# 参数说明 --name“Name” 容器名字 tomcat01 tomcat02 用来区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查…

leetcode3098. 求出所有子序列的能量和

官解 class Solution(object):# 定义常量mod int(1e9 7) # 模数,用于防止结果溢出inf float(inf) # 无穷大,用于初始化时的特殊值def sumOfPowers(self, nums, k):n len(nums) # 数组长度res 0 # 用于存储最终结果# 三维动态规划表,…

七、SpringBoot日志

1. 得到日志对象 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; //打印日志…

【C语言】数组栈的实现

栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&#…

springboot校园跑腿服务系统-计算机毕业设计源码15157

摘要 本文介绍了一种基于Springboot和uniapp的校园跑腿服务系统的设计与实现。该系统旨在为大学校园提供一种方便快捷的跑腿服务,满足学生和教职员工的日常需求。首先,系统采用了Springboot作为后端框架,利用其轻量级、高效的特性&#xff0c…

学习笔记 韩顺平 零基础30天学会Java(2024.7.22)

P407 接口使用细节2 P407 接口课堂练习 对于最后一个的输出:B因为实现了A的接口,所以和继承一样,B可以访问A的变量 P409 接口VS继承 接口对单继承机制(是指只能继承一个类)进行了补充 也可以理解为,子类通过…

请你谈谈:针对Mybatis引出的Spring事务的探究2:spring事务的失效

Spring事务失效的常见场景主要包括以下几个方面,这些场景通常是由于对Spring事务管理机制的误解或不当使用所导致的: 方法访问级别不当: 如前所述,Spring AOP默认不会拦截非public方法。因此,如果Transactional注解被…

通信原理-实验六:实验测验

实验六 实验测验 一:测验内容和要求 测试需要完成以下几个步骤: 配置好以下网络图;占总分10%(缺少一个扣一分)根据下面图配置好对应的IP和网关以及路由等相关配置,保证设备之间连通正常;占总…

《AIGC 实战宝典》(2024版) 正式发布!

2024 新年伊始,OpenAI 推出文生视频 Sora,风靡整个科技圈。 最近又发布了 ChatGPT-4o,这是一个全新模型,不仅能处理文本,还能实时理解和生成音频和图像。OpenAI 用实际行动给全世界的科技公司又上了一课。 如何从0到1…

C++(week14): C++提高:(一)面向对象设计:设计原则、设计模式

文章目录 一、面向对象设计的概念4.统一建模语言:UML语言StartUML 二、类与类之间的关系0.总结1.继承 (泛化耦合)2.组合 (Composition)3.聚合 (Aggregation)4.关联(1)双向关联(2)单向关联 5.依赖 (Dependency) 三、面向对象设计的原则0.总结1.单一职责原则 (Single …

你还以为前端无法操作文件吗

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 这里面有个值得说明一点的问题是,我一直以为(可能有人跟我一样)前端是无法操作文件的,可实际上自从HTML5标准出现之后&#xff…

昇思25天学习打卡营第21天|CV-Shufflenet图像分类

打卡 目录 打卡 ShuffleNet 网络介绍 ShuffleNet 模型架构 Pointwise Group Convolution Channel Shuffle ShuffleNet模块 ShuffleNet 模块代码 构建ShuffleNet网络 模块代码 模型训练和评估 模型训练 模型评估 模型预测 ShuffleNet 网络介绍 ShuffleNetV1是旷视科…

数字图像处理笔记(三) ---- 傅里叶变换的基本原理

系列文章目录 数字图像处理笔记(一)---- 图像数字化与显示 数字图像处理笔记(二)---- 像素加图像统计特征 数字图像处理笔记(三) ---- 傅里叶变换的基本原理 文章目录 系列文章目录前言一、傅里叶变换二、离散傅里叶变…

JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】Matlab实现TTAO-Transformer-LSTM多变量回归预测,三角拓扑聚合…

【运维自动化-配置平台】模型及模型关联最小化实践

蓝鲸智云配置平台,以下简称配置平台 我们知道主机是配置平台最常见的管控资源对象,在业务拓扑里可以通过划分模块来清晰的可视化管理;那其他资源如何通过配置平台来纳管呢,比如网络设备交换机。场景需求:如何把交换机…

【Linux 驱动】IMX6ULL eLCDIF参考手册翻译

1. eLCDIF 1.1 概述 eLCDIF是一种通用的显示控制器,用于驱动各种尺寸和性能不同的显示设备。 eLCDIF块支持以下功能: 支持MPU接口(8080模式和6800模式)支持DOTCLK接口(RGB接口)VSYNC模式:针对高…

Maven高级——详解

目录 一、分模块设计 二、分模块设计小实践 三、Maven继承 1.继承关系实现 ​编辑 2.版本锁定 dependencyManagement 自定义属性/引用属性 四、Maven聚合 五、Maven私服 一、分模块设计 为什么要分模块设计,将项目按照功能拆分分成若干个子模…