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

news2024/9/21 4:33:57

在 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.coloradmin.cn/o/1948336.html

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

相关文章

SpringSecurity如何整合JWT

整合JWT 我们前几个小节,实现的是非前后端分离情况下的认证与授权的处理,目前大部分项目,都是使用前后端分离的模式。那么前后端分离的情况下,我们如何使用SpringSecurity来解决权限问题呢?最常见的方案就是SpringSe…

如何学习Airflow:糙快猛的大数据之路(附思维导图)

什么是Airflow? 在开始之前,让我们先简单了解一下Airflow是什么。Apache Airflow是一个开源的工作流管理平台。它允许你以代码的方式定义、调度和监控复杂的数据处理管道。 想象一下,你有一系列需要按特定顺序执行的任务,而且这些任务之间还有依赖关系,Airflow就是为解决这…

【NPU 系列专栏 1.1 -- NPU TOPS 算力的计算方式】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 NPU 算力MAC 阵列简介MAC 阵列特点 MAC 阵列的结构MAC 阵列架构示例 MAC 阵列计算举例示例计算 TOPS 计算方法 NPU 算力 OpenCV 算法会消耗很大一部分自动驾驶芯片的算力,在车上堆摄像头的同时也需要堆TOPS&#xf…

把 网页代码 嵌入到 单片机程序中,2024/7/25 17:33

把 网页代码 嵌入到 单片机程序中 废话不多说直接上结果: 代码中定义: const char* html" 处理过的网页代码 " ; 处理网页代码的 web 程序( 主要是 正则 把双引号 加 符号) <!DOCTYPE html> <html lang"en" style"background-color: rgba…

Python 爬虫 tiktok API 获取TIKTOK标签信息 数据采集

此接口可通过标签id一键查询到tiktok标签信息&#xff0c;如有需要&#xff0c;请点击文末链接联系我们。 详细采集页面如图 https://www.tiktok.com/tag/musicand?_r1&namemusicand&u_codeeab7jd1ha5l36c&_deab7h4fj9h9k1f&share_challenge_id2878999&…

CXL与NVME融合场景下, 计算存储应用案例分析

场景1:数据写入之前 目标是避免数据从存储设备传输到主机内存再返回存储设备的传统过程中的数据搬运成本。通过利用CXL和NVMe技术的结合&#xff0c;可以在存储层直接对数据进行处理&#xff0c;即所谓的计算存储&#xff08;Computational Storage&#xff09;。这特别适用于…

革新优选购物模式:重塑电商体验

在当今竞争激烈的电商市场中&#xff0c;革新优选购物模式以其独特的运营策略脱颖而出&#xff0c;其核心在于通过价格优化、激励机制创新以及社交网络的深度融合&#xff0c;激发消费者的购物热情&#xff0c;实现销售与用户忠诚度的双重飞跃。 一、合规运营&#xff0c;构建信…

Vue3 study

Vue3 工程 创建 还是能像 vue2 一样通过 vue-cli 创建&#xff0c;即 vue create projectName 但是官方更推荐 vite 创建&#xff0c;即 npm create vuelatest&#xff0c;然后从项目名开始配置 总结&#xff1a;入口在 index.html&#xff0c;它会引入 main.ts&#xff0c;…

Inxedu 因酷网校在线教育系统之sql注入代码审计

1 后台-/article/delete?articelId= 注入 全局搜索 ${,开启文件过滤,关注*Mapper.xml文件 点击进入ArticleMapper.xml,SQL注入点在第97行,使用$直接拼接了参数 查找哪里声明那个方法 点击deleteArticleByIds,查看谁调用了它。在ArticleDaoImpl调用 接着点击deleteArticl…

静态IP地址在网络安全中的角色解析与实测分析

在这个网络边界日益模糊的时代&#xff0c;每一次点击、每一次数据传输都有着安全问题。作为网络安全体系中的基石&#xff0c;静态IP地址的角色显得尤为重要而复杂。今天&#xff0c;我们的测评团队将带您深入剖析静态IP地址在网络安全中的多重角色&#xff0c;并通过两家代理…

谁是中国井村屋?背靠红豆产业链,年销2.5亿根小豆冰棍,井村屋极致产品力是如何策划的?

红豆棒冰是日本老字号“井村屋”旗下的招牌产品。 井村屋在日本以红豆产业链见长&#xff0c;凭借优质产业链打造的红豆棒冰很逆天&#xff0c;每年大约售出 2.5 亿根&#xff0c;日本1.2亿人口&#xff0c;相当于每人每年至少吃两根。 这个国民级单品是如何打造极致产品力的呢…

【爆】Stable Diffusion【真人模型】:全网最真实的亚洲女性大模型

模型v1下载&#xff1a;XXMix_9realisticSDXL-Checkpoint-展夜枭-LiblibAI 环境要求&#xff1a; gpu&#xff1a;12G 最好16G python&#xff1a;3.10 cuda&#xff1a;11.8 一、介绍 XXMix_9realisticSDXL是一个基于Stable Diffusion XL模型训练的微调模型&#xff0c;…

06 capture软件元器件库的管理与调用 07 元器件库与PCB封装库的关联与调用

06 capture软件元器件库的管理与调用 && 07 元器件库与PCB封装库的关联与调用 第一部分 06 capture软件元器件库的管理与调用一、获取元器件库的方法 第二部分 07 元器件库与PCB封装库的关联与调用 第一部分 06 capture软件元器件库的管理与调用 一、获取元器件库的方…

vue3 + antd vue 纯前端 基于xlsx 实现导入excel 转 json,将json数据转换XLSX导出(模版下载)

一、导入 0、关键代码 // 安装插件 npm i xlsx/yarn add xlsx // 导入xlsx import * as XLSX from xlsx; 点击提交的时候才整理数据。上传的时候文件保存在 state.form.file[0] 中的 // 定义字段映射关系 const fieldMap {sheet2json: {技能名称: skill_name,技能等级: …

ROS配置并同时驱动多个UVC相机(含功能包)

配置并同时驱动多个UVC相机&#xff0c;并将数据保存为ROS话题形式的bag文件。 ROS可以同时驱动多个UVC相机。要实现这个目标并将数据保存成ROS话题的形式&#xff0c;再保存为bag文件&#xff0c;可以按照以下步骤操作&#xff1a; 1. 安装必要的包 sudo apt-get update sud…

vue3前端开发-小兔鲜项目-一些额外提醒的内容

vue3前端开发-小兔鲜项目-一些额外提醒的内容&#xff01;今天这一篇文章&#xff0c;是提醒大家&#xff0c;如果你正在学习小兔鲜这个前端项目&#xff0c;有些地方需要提醒大家&#xff0c;额外注意的地方。 第一个&#xff1a;就是大家在进入二级页面后&#xff0c;有一个分…

软考-软件设计师(2)-操作系统概述:多级索引、PV操作、段页式存储、磁盘管理、进程管理、有限自动机、I/O设备管理软件分层等高频考点

场景 软考-软件设计师-操作系统概述模块高频考点整理。 以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。 注: 博客:霸道流氓气质-CSDN博客 实现 知识点 文件系统多级索引 求文件系统多级索引的最大长度 二级索引=一级索引*一级索引…

Oracle中LISTAGG 函数的介绍以及使用详情

LISTAGG 函数介绍 listagg 函数是 Oracle 11.2 推出的新特性。 其主要功能类似于 wmsys.wm_concat 函数&#xff0c; 即将数据分组后&#xff0c; 把指定列的数据再通过指定符号合并。 LISTAGG 使用 listagg 函数有两个参数&#xff1a; 1、 要合并的列名 2、…

论文总结:A Survey on Evaluation of Large Language Models-鲁棒性相关内容

A Survey on Evaluation of Large Language Models 只取了鲁棒性相关的内容 LLMs&#xff1a;《A Survey on Evaluation of Large Language Models大型语言模型评估综述》理解智能本质(具备推理能力)、AI评估的重要性(识别当前算法的局限性设 3.2.1 Robustness鲁棒性&#xf…

R语言优雅的进行广义可加模型泊松回归分析

泊松回归&#xff08;Poisson regression&#xff09;是以结局变量为计数结果时的一种回归分析。泊松回归在我们的生活中应用非常广泛&#xff0c;例如&#xff1a;1分钟内过马路人数&#xff0c;1天内火车站的旅客流动数&#xff0c;1天内的银行取钱人数&#xff0c;一周内的销…