视频降噪综述

news/2025/2/22 23:34:52/

前沿与背景

每年在各类顶级会议期刊如CVPR(IEEE Conference on Computer Vision and Pattern Recognition,Ieee国际计算机视觉与模式识别会议)、ICCV(IEEE International Conference on Computer Vision,国际计算机视觉大会)、ECCV(European Conference on Computer Vision,欧洲计算机视觉国际会议)、SIGGRAPH(Special Interest Group for Computer GRAPHICS,计算机图形图像特别兴趣小组)都会出现很多篇视频降噪的论文,范围涉及到各类传统算法与深度学习算法。学术界拥有如此多的视频降噪算法,但拍照或者视频还是会出现很多噪点,这就是学术届优秀降噪成果难以有效在工业界落地的问题。

在视频应用广泛的互联网时代,清晰纯净的视频一定是各类应用场景的追求。在刷短视频或者观看直播,我们更愿意将目光长时间停留在图1.1,而图1.2是我们第一时间想划过去的视频画面。

降噪是图像/视频处理领域一直很基础很热门也很难的问题,也出现在不少产品应用中,但却很少在视频直播产品中见到降噪技术的应用。比如腾讯会议一款软件应用了视频降噪技术,带来的实际视频效果体验以及隐形的带宽流量节省都是显而易见。
在这里插入图片描述
图1.1
在这里插入图片描述
图1.2

视频噪声

● 噪声来源主要分为两种:
 ○ 图像获取中:图像传感器CCD 、CMOS采集图像时,受到传感器材料属性、工作环境、电子元器件、电路结构影响;
 ○ 图像信号传输中:传输介质和记录设备不完善;
● 噪声分类
 ○ 高斯噪声:概率密度函数服从高斯分布(正态分布);
 ○ 泊松噪声:光子离散噪声,实际数字图像中的噪声基本是高斯噪声和泊松噪声的混合噪声;
 ○ 椒盐噪声、加性噪声、乘性噪声、量化噪声等;
● 噪声场景
 ○ 夜晚场景:夜晚除了画面不清楚外,大量噪声也是引起视频体验的主要因素;
 ○ 平坦区域:摄像头的物理硬件的随机波动,在平坦区域会产生被视觉更容易察觉的噪声;
 ○ 高分辨率:分辨率越高,噪声波动对人眼视觉越明显;
 ○ 背光区域:由于前后景亮度差异过大,背光区域曝光不足,会让噪声看起来更明显;

视频降噪技术

● 滤波法
 ○ 空域法:mean filters、gaussian filters、medium filters、bilateral filters、NLM、NLB等;
 ○ 变换域法:维纳、离散傅立叶、离散小波、DCT等;
 ○ 混合时空变换法 :BM3D、meshflow、hqdn3d、卡尔曼等;
● 稀疏表达:k-SVD
● 聚类低秩:WNNM(weighted nuclear norm minization,加权核范数最小化)
● 统计模型:高斯混合模型
● 深度学习:FFDNet、CBDNet等;

视频降噪优势

视觉效果:大幅提升视频主观体验,增加视频观看舒适度。
编码压缩与带宽传输:提升视频编码RD性能、运动估计更准确更高效、熵编码速度更快、降低码率、降低编码复杂度。

常见降噪算法介绍

mean filters

典型的空域线性滤波算法,原理简单,即在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即包括目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

medium filters

典型的空域非线性滤波算法,原理简单,每一个目标像素值设置为该点某邻域窗口内的所有像素值的中值。

guassian filters

典型的空域线性平滑滤波算法,原理简单,每一个像素值,都由其本身和邻域内的其他像素值经过加权平均后得到。

bilateral filters

典型的空域非线性滤波算法,原理简单,即可以认为是高斯滤波的改进迭代版,同时考虑图像的空间近邻度和像素值相似度的一种折中算法。

NLB

“Non-Local Bayes” (NL-Bayes)非局部贝叶斯,利用图像的自相似结构进行去噪。
○ 原理
  ■ one-step
    ● 找到与给定图像块相似的图像块,并组成3D块
    ● 协方差滤波
      ○ 贝叶斯公式应用到3D块;
      ○ 重新定位3D块;
    ● 聚合
      ○ 聚合就是为了消除3D滤波产生的滤波块重叠,被获取的许多估计数需要为每个像素组合;
    ● Acceleration 加速
  ■ two-step
    ● grouping 组块
    ● Collaborative Filtering 协方差滤波
    ● Aggregation 聚合
○ 迭代版本
  ■ Non-local Bayesian Video Denoising 非局部贝叶斯视频去噪
 ■ https://github.com/pariasm/vnlb

BM3D

代码:https://github.com/gfacciol/bm3d
典型的且效果较好的空域与变换域结合的去噪算法,原理相对较复杂,算法复杂度也相对较高,当然实际去噪效果也相对传统的去噪算法有明显的提升。
中心思想:充分利用自然图像中丰富的自相似结构来进行图像降噪;
step1:基础估计
  ■ 相似块分组Grouping
 ■ 协同滤波Collaborative Filtering
 ■ 聚合 Aggregation
step2:最终估计
 ■ 块匹配Grouping
 ■ 3D协同维纳滤波 Collaborative Filtering
 ■ 聚合加权滤波Aggregation
在这里插入图片描述

meshflow

meshflow来源于2017年中国电子科技大学一篇sci级别论文。steadyflow需要计算密集的光流(optical flow)并提取所有像素位置的像素配置来进行处理;与steadyflow相比,meshflow仅在稀疏规则的顶点配置网格上进行操作。
通过对论文中meshflow算法剖析,在相邻帧之间进行估计,这些帧用于在一个滑动时间窗口内对齐帧,整个方案可以分成特征跟踪网格流估计运动累积一致性检查像素融合;该算法具有模型轻量级、非参数化、空间变形体等内在特征,能够有效地实现多帧图像的去噪,具体算法思路如图2.1所示:
在这里插入图片描述
图2.1

论文介绍实验结果,1920x1080的分辨率单帧平均需要260 ms,具体来说,特征跟踪27ms、网格流估计21ms、运动累积38 ms、一致性检查25 ms、像素融合149ms。从论文实验结果对比分析,视频降噪效果大多数场景效果非常明显,但算法复杂度仍然相对较高,距离实时视频应用场景落地还有一段路程。

hqdn3d

简介

作为Avisynth一款视频处理插件,集成应用到Mplayer播放器中。hqdn3d是时域、空域混合滤波算法,不涉及变换域 ,算法原理容易理解,总结其原理,包含几点:
● 逐像素进行,不涉及频域变换,不涉及运动搜索,不涉及帧间对齐;
● 3D去噪,当前像素参考左邻、上邻、上帧同一位置的三个像素;
● 根据相邻像素的差,确定偏移量,将相邻像素颜色值“拉近”,即对像素做加减法;
● 较小的像素差异,拉近距离,若差异较大,降低偏置系数,达到保边效果;
● 通过外部设置滤波强度,调整峰值位置;
在这里插入图片描述

算法核心原理图

在这里插入图片描述

各类算法复杂度对比

在这里插入图片描述

参考

在线实验各类新算法网址:https://www.ipol.im/


http://www.ppmy.cn/news/428720.html

相关文章

基本谱减法降噪

设计目的和设计要求 在接收到的语音信号大多含有噪声,并且噪声有大有小。由于在处理语音信号(例如语音识别,语音编码)之前往往要对带噪的语音进行减噪。这实质上就是语音信号处理中的语音增强。本组在此选用基本谱减法进行语音降噪。一般来说…

EEMD去噪算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、EEMD去噪二、使用步骤1.代码展示2.function [spmax, spmin, flag] extrema(in_data)2.functi代码如下(示例): 结果展示 …

主动降噪技术

当你每天乘坐交通工具的时候,是否注意到了周围环境的噪声污染?面对耳朵里跑进来恼人的噪音,除了堵住耳朵这种被动的方法,我们现在还可以主动出击,用声音将噪声消灭掉。 用一句话来概括主动降噪的原理:通过…

SSM框架搭建

SSM环境搭建 1 IDE的话,我用的MyEcplise,如果用Ecplise的话,需要自行配置服务器。 首先,建一个Dynamic工程,需要注意的是一定要勾选上web.xml。 将Spring框架包、jstl包、standard包、common-logging包、aopallian…

C#异步详解

异步编程是指在程序执行过程中,不需要等待某个操作完成,就可以继续执行后续的代码。比如我们开发了一个web页面中有一个上传文件功能,我们上传文件时使用异步操作,就不用等待文件的上传时间,可以先在网页上进行其他操作…

DecimalFormat基本用法

1.保留两位小数(截断) 下面展示一些 内联代码片。 double num 11.256;DecimalFormat df new DecimalFormat("#.##");//指定RoundingModedf.setRoundingMode(RoundingMode.DOWN);String str df.format(num);double formatNum Double.parseDouble(str)…

宽带拨号连接显示被远程计算机终止

搜索框打开设备管理器 找到网络适配器 找到IP协议 卸载设备之后重启电脑

C++ STL中stack栈(简单讲解+例题运用)

运用stack函数首先需要头文件#include<stack>&#xff0c;栈是先进后出 stack的常用函数&#xff1a; push&#xff08;&#xff09;——向栈顶压入元素pop &#xff08;&#xff09;——弹出栈顶元素top &#xff08;&#xff09;——访问栈顶元素empty&#xff08…