视频增强技术-去噪

        本文介绍了关于视频增强技术的相关方法包括传统方法和基于深度学习的方法,并给出了他们的对比实验结果,最后对它们简单的做了总结,文中有一些图片和总结来自于网上其他博主的文章,已在文中标记并给出了相关的原文链接,OK,接下来就步入正题吧~

视频去噪概述

https://blog.csdn.net/yanceyxin/article/details/127764236

(1)视频噪声

● 噪声来源主要分为两种:

 ○ 图像获取中:图像传感器CCD 、CMOS采集图像时,受到传感器材料属性、工作环境、电子元器件、电路结构影响;

 ○ 图像信号传输中:传输介质和记录设备不完善;

● 噪声分类

 ○ 高斯噪声:概率密度函数服从高斯分布(正态分布);

 ○ 泊松噪声:光子离散噪声,实际数字图像中的噪声基本是高斯噪声和泊松噪声的混合噪声;

 ○ 椒盐噪声、加性噪声、乘性噪声、量化噪声等;

● 噪声场景

 ○ 夜晚场景:夜晚除了画面不清楚外,大量噪声也是引起视频体验的主要因素;

 ○ 平坦区域:摄像头的物理硬件的随机波动,在平坦区域会产生被视觉更容易察觉的噪声;

 ○ 高分辨率:分辨率越高,噪声波动对人眼视觉越明显;

 ○ 背光区域:由于前后景亮度差异过大,背光区域曝光不足,会让噪声看起来更明显;

(2)视频降噪技术

● 滤波法

 ○ 空域法:mean filters、gaussian filters、medium filters、bilateral filters、NLM、NLB等;

 ○ 变换域法:维纳、离散傅立叶、离散小波、DCT等;

 ○ 混合时空变换法 :BM3D、meshflow、hqdn3d、卡尔曼等;

● 稀疏表达:k-SVD

● 聚类低秩:WNNM(weighted nuclear norm minization,加权核范数最小化)

● 统计模型:高斯混合模型

● 深度学习:DnCNN、FFDNet、CBDNet等;

1.传统去噪方法

https://zhuanlan.zhihu.com/p/51403693

1.1 空域像素特征去噪算法

        基于空域像素特征的方法,是通过分析在一定大小的窗口内,中心像素与其他相邻像素之间在灰度空间的直接联系,来获取新的中心像素值的方法,因此往往都会存在一个典型的输入参数,即滤波半径r。此滤波半径可能被用于在该局部窗口内计算像素的相似性,也可能是一些高斯或拉普拉斯算子的计算窗口。在邻域滤波方法里面,最具有代表性的滤波方法有以下几种:

 1.1.1 算术均值滤波与高斯滤波

算术均值滤波用像素邻域的平均灰度来代替像素值,适用于脉冲噪声,因为脉冲噪声的灰度级一般与周围像素的灰度级不相关,而且亮度高出其他像素许多。

均值滤波结果A'(i,j)随着L(滤波半径)取值的增大而变得越来越模糊,图像对比度越来越小。经过均值处理之后,噪声部分被弱化到周围像素点上,所得到的结果是噪声幅度减小,但是噪声点的颗粒面积同时变大,所以污染面积反而增大。为了解决这个问题,可以通过设定阈值,比较噪声和邻域像素灰度,只有当差值超过一定阈值时,才被认为是噪声。不过阈值的设置需要考虑图像的总体特性和噪声特性,进行统计分析。自适应均值滤波算法通过方向差分来寻找噪声像素,从而赋予噪声像素与非噪声像素不同的权重,并自适应地寻找最优窗口大小,优于一般的均值滤波方法。

高斯滤波矩阵的权值,随着与中心像素点的距离增加,而呈现高斯衰减的变换特性。这样的好处在于,离算子中心很远的像素点的作用很小,从而能在一定程度上保持图像的边缘特征。通过调节高斯平滑参数,可以在图像特征过分模糊和欠平滑之间取得折中。与均值滤波一样,高斯平滑滤波的尺度因子越大,结果越平滑,但由于其权重考虑了与中心像素的距离,因此是更优的对邻域像素进行加权的滤波算法。

1.1.2 统计中值滤波

中值滤波首先确定一个滤波窗口及位置(通常含有奇数个像素),然后将窗口内的像素值按灰度大小进行排序,最后取其中位数代替原窗口中心的像素值。

1.1.3 Wiener滤波

维纳滤波是诺波特·维纳在二十世纪四十年代提出的一种滤波器,即假定线性滤波器的输入为有用信号和噪声之和,两者均为广义平稳过程且知道它们的二阶统计特性,根据最小均方误差准则(滤波器的输出信号与需要信号之差的均方值最小),求得最佳线性滤波器的参数。

维纳滤波器是一种自适应最小均方差滤波器。维纳滤波的方法是一种统计方法,它用的最优准则是基于图像和噪声各自的相关矩阵,它能根据图像的局部方差调整滤波器的输出,局部方差最大,滤波器的平滑作用就越强。

1.1.4 双边滤波

一种非线性的保边滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点。双边滤波器之所以可以达到保边去噪的效果,是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。双边滤波器中,输出像素的值g(i,j)依赖于邻域像素的值的加权组合

上图中权重系数w(i,j)取决于空域核和值域核的乘积。其中空域滤波器对空间上邻近的点进行加权平均,加权系数随着距离的增加而减少。值域滤波器则是对像素值相近的点进行加权平均,加权系数随着值差的增大而减少。

1.1.5 引导滤波

高斯滤波等线性滤波算法所用的核函数相对于待处理的图像是独立无关的,这里的独立无关也就意味着,对任意图像都是采用相同的操作。

引导滤波就是在滤波过程中加入引导图像中的信息,这里的引导图可以是单独的图像也可以是输入图像,当引导图为输入图像时,引导滤波就成为了一个可以保持边缘的去噪滤波操作.

1.1.6 NLM 算法

(Non-Local means)-NLM,前面基于邻域像素的滤波方法,基本上只考虑了有限窗口范围内的像素灰度值信息,没有考虑该窗口范围内像素的统计信息如方差,也没有考虑整个图像的像素分布特性,和噪声的先验知识。

针对其局限性,NLM算法被提出使用自然图像中普遍存在的冗余信息来去噪声。与常用的双线性滤波、中值滤波等利用图像局部信息来滤波不同的是,利用了整幅图像来进行去噪,以图像块为单位在图像中寻找相似区域,再对这些区域求平均,能够比较好地去掉图像中存在的高斯噪声。

1.1.7 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

1.2 变换域去噪方法

        变换域去噪算法的基本思想是首先进行某种变换,将图像从空间域转换到变换域,然后从频率上把噪声分为高中低频噪声,用这种变换域的方法就可以把不同频率的噪声分离,之后进行反变换将图像从变换域转换到原始空间域,最终达到去除图像噪声的目的。

        图像从空间域转换到变换域的方法很多,其中最具代表性的有傅里叶变换、离散余弦变换、小波变换以及多尺度几何分析方法,

下图转载自OpenASIC公众号文章,感谢作者的辛苦工作~

1.3 BM3D去噪算法

https://github.com/gfacciol/bm3d

        BM3D是融合了空域spatial denoise和变换域tranform denoise的一种方法,从而可以得到最高的峰值信噪比。它先吸取了NLM中的计算相似块的方法,然后又融合了小波变换域去噪的方法。

2.基于深度学习的去噪方法

常见的基于深度学习的图像去噪方法包括:
        1. 基于自编码器的图像去噪方法:自编码器是一种无监督学习的神经网络,它可以将输入图像压缩成一个低维向量,然后再将这个向量解码成与原始图像相同的大小。通过训练自编码器,可以学习到图像的特征,从而实现图像去噪。
        2. 基于卷积神经网络的图像去噪方法:卷积神经网络可以通过多层卷积和池化操作来提取图像的特征,从而实现图像去噪。常见的卷积神经网络包括U-Net、ResNet等。
        3. 基于生成对抗网络的图像去噪方法:生成对抗网络(GAN)是一种能够生成逼真图像的神经网络,它由一个生成器和一个判别器组成。生成器用于生成逼真图像,判别器用于判断生成的图像是否逼真。通过训练生成对抗网络,可以实现图像去噪。

        与图像去噪相比,视频去噪需要考虑时间维度,因此需要设计能够处理时序数据的神经网络。通过训练循环神经网络,对视频进行去噪处理,从而提高视频的清晰度和可视性。

        1. 基于3D卷积神经网络的视频去噪方法:3D卷积神经网络可以同时处理时间和空间信息,因此非常适合处理视频数据。通过训练3D卷积神经网络,可以学习视频的时空特征,从而实现视频去噪。

        2. 基于光流的视频去噪方法:光流是描述视频中像素运动的一种方法,通过计算光流可以得到视频中像素的运动轨迹。基于光流的视频去噪方法可以利用像素的运动信息来去除视频中的噪声。
        3. 基于生成对抗网络的视频去噪方法:与图像去噪类似,生成对抗网络也可以用于视频去噪。通过训练生成对抗网络,可以生成逼真的视频,并去除视频中的噪声。

2.1 DnCNN

https://arxiv.org/pdf/1608.03981.pdf

https://www.appliedaicourse.com/

https://github.com/saproovarun/DnCNN-Keras

DnCNN中有三种类型的层:

  1. Conv+ReLU:过滤器大小为3,过滤器数量为64,跨步为1,使用零填充保持卷积后的输出形状,使用ReLU作为激活函数。输出为形状(批量大小,50、50、64)
  1. Conv+批量归一化+ReLU:过滤器大小为3,过滤器数量为64,步长为1,使用零填充保持卷积后的输出形状,使用批量归一化层更好地收敛,ReLU作为激活函数。输出为形状(批次大小,50、50、64)。
  1. Conv:滤镜大小为3,跨步为1,滤镜数量为c(彩色图像为3个,灰度图像为1个),使用零填充在卷积后保持输出形状。输出形状为(批次大小,50,50,c)。

DnCNN模型的输出为残差图像。因此,原始图像=噪声图像-残差图像。在DnCNN中,在每层卷积之前填充零,以确保中间层的每个特征贴图与输入图像具有相同的大小。

2.2 FFDNet

FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising 这篇论文是DnCNN的升级版,网络在对噪声的适应能力和计算量均要优于DnCNN,该算法网络结构如下:

 该网络的特点主要有:

  1. 该网络的结构和DnCNN一致,但是输入输出不同,网络输入为原始带噪图像降采样获得的四张子图以及一张由用户输入的参数σ\sigmaσ生成的噪声水平图像,输出为四张降噪后的子图,通过上采样获得最终的降噪图像。使用的损失函数仍然是MSE。
  1. 由于该网络的输入中包含一个有用户控制的参数,该算法对于不同噪声的适应程度要优于DnCNN

2.3 CBDNet

Toward Convolutional Blind Denoising of Real Photographs 这篇论文算是FFDNet的再一次升级,在FFDNet中通过添加一个用户输入的噪声强度参数σ\sigmaσ,在CBDNet中通过添加一个全卷积网络来学习该参数,从而达到自适应噪声的目的,该算法的网络结构如下:

 该网络的特点主要有:

  1. 该网络的结构分为两部分:第一部分为五层全卷积网络用于噪声估计噪声水平图,第二部分与FFDNet不同,为带残差的UnNet,用于降噪。
  1. 设计了非对称损失函数,目的主要是为了消除非对称敏感性,所谓非对称敏感性指的像BM3D和FFDNet这样的降噪算法,输入降噪参数σ\sigmaσ较小时,降噪效果较差,输入降噪参数σ\sigmaσ较大时,虽然纹理有损失,但是降噪效果仍然比较好。
  1. 该算法学习的是更接近于真实噪声的高斯泊松噪声,而前面两篇论文都是学习高斯噪声;并且结合使用合成和真实噪声数据来训练模型,提高模型泛化能力,可以更好地对真实场景进行降噪;

2.4 RIDNet

Real Image Denoising with Feature Attention 这篇论文效果比CBDNet要更好,论文指出CBDNet是一个二阶段去噪网络,不够高效灵活,而本文的一阶段算法更加实用,可以在标准差已知或者未知的情况下同时处理高斯泊松噪声,网络结构如下:

网络结构设计包括三部分:特征提取、4个EMA组成的残差模型、重建。其中特征提取和重建模块都是卷积层+ReLU层。EMA的结构如上图中下半部分框图所示:

(1)两个空洞卷积分支增加感受野,拼接并进行卷积融合

(2)两个残差学习结构用于进行特征的提取

(3)由1x1的卷积核构成的注意力机制

结构如下图所示:

2.5 PMRID

Practical Deep Raw Image Denoising on Mobile Devices 是2020 CVPR上旷视提出来的一篇非常elegant的算法,该算法的特点网络结构比较小,通过一个k-sigma变换来解决小网络在不同增益噪声下的鲁棒性问题,网络结构如下图所示:

        

该网络的主要特点有:

  1. 这个网络的结构大体上还是一个UNet的结构,为了降低计算量使用了separable conv卷积,然后使用的是5x5的模型来降低模型深度,使用stride为2的卷积进行下采样,以及2x2的deconv结构进行上采样,使用3x3的separable conv来进行skip connnection的通道构建。可以说网络结构是小而精美。
  1. 论文提出了k-sigma变换,像FFDNet,CBDNet都是通过设置网络参数来适应不同强度的噪声,而本文是通过将不同强度的噪声进行归一化来简化网络结构,这个思路有点类似于generalization anscombe transform,CMOS Sensor的成像模型入下图所示:

2.6 SID

Learning to See in the Dark 这篇论文除了提供一个非常有用的数据集之外,还提出了一个端到端的网络结果,直接处理Raw数据得到去马赛克,去噪和色彩变化后的图像,网络结果如下:

该网络的特点主要有:

  1. 输入为bayer图拆分出来的4通道数据,分辨率变为原来的一半,输出为12通道的数据,分辨率为原图的一般,然后经过sub-pixel复原全分辨率的RGB三通道数据,其中ConvNet默认是一个UNet的数据结构。
  1. 损失函数使用L1的损失函数,因此降噪的结果显得比较平滑。
  1. 该网络并没有专门的设计降噪网络,因此降噪效果并不是特别出色,但是其在颜色复原上会有较为明显的优势,并且该网络泛化能力差,一款相机得单独训练一个网络。

3.实验结果比较

实验数据

(1)SIDD

原始图像:

噪声图像:

(2)SIDD++

原始图像:

噪声图像:

手动噪声(高斯噪声,椒盐噪声,乘法噪声)

原始图像:

3.1 Median Filter

Kernel size:5x5

SIDD result:

SIDD++ result:

3.2 Wiener Filter

Kernel size:5x5

SIDD result:

SIDD++ result:

3.3 DnCNN

SIDD result:

SIDD++ result:

3.4 FFDNet

SIDD result:

SIDD++ result:

4.去噪方法总结

  1.     (1)中值滤波,均值滤波,box滤波对于椒盐噪声的效果较好

    (2)高斯滤波对高斯噪声的效果较好

    (3)双边滤波可以在滤波的同时保持一定的图像边缘信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA SE -- 第十天

(全部来自“韩顺平教育”) 一、枚举(enumeration,简写enum) 枚举是一组常量的集合 1、实现方式 a.自定义类实现枚举 b.使用enum关键字实现枚举 二、自定义类实现枚举 1、注意事项 ①不需要提供setXxx方法&#xff…

开源QianWei搭建音乐网站,并实现公网连接

开源QianWei搭建音乐网站,并实现公网连接 1、前言2、本地网页搭建2.1环境使用2.2 支持组建选择2.3 网页安装 3、本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4、公网访问测试5、结语 1、前言 音乐是我们生活和工作中不可或缺的调剂,它能让我们心…

155、基于STM32单片机老人防跌倒摔倒GSM短信报警系统ADXL345加速度设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图 六、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 单片机主芯片选…

【PostgreSQL内核学习(六)—— 工具使用学习】

工具使用学习 工具使用学习安装中出现的问题 声明:本文的工具学习内容来自于《小宇带你学pg内核分析》 工具的代码仓库链接为: https://github.com/shenyuflying/pgNodeGraph 此外,我还参考了以下文章: https://rng-songbaobao.bl…

Mac配置Latex环境教程2023

第一步:安装MacTex 官网:https://www.tug.org/mactex/ 第二步:安装编译器:Texpad xclient官网下载Texpad:https://xclient.info/s/texpad.html 第三步:开始使用 LeTex \documentclass{article}\begin{do…

rabbitmq模块启动报java.net.SocketException: socket closed的解决方法

问题 最近在接手一个项目时,使用的是spring-cloud微服务构架,mq消息消费模块是单独一个模块,但启动这个模块一直报如下错误: java.net.SocketException: socket closed 这个错误是这个模块注册不到nacos报的错,刚开…

在Debian 12 上安装 PHP 5.6, 7.4

环境:Debian 12 Debian 12 默认的PHP版本为 8.2 如果直接安装php7.4就出现下面的报错: sudo apt-get install libapache2-mod-php7.4 php7.4 php7.4-gd php7.4-opcache php7.4-mbstring php7.4-xml php7.4-json php7.4-zip php7.4-curl php7.4-imap p…

Spring使用注解存储Bean对象

文章目录 一. 配置扫描路径二. 使用注解储存Bean对象1. 使用五大类注解储存Bean2. 为什么要有五大类注解?3.4有关获取Bean参数的命名规则 三. 使用方法注解储存Bean对象1. 方法注解储存对象的用法2. Bean的重命名 在前一篇博客中( Spring项目创建与Bean…

RS485/RS232自由转ETHERNET/IP网关rs485和232接口一样吗

你是否曾经遇到过这样的问题:如何将ETHERNET/IP网络和RS485/RS232总线连接起来呢? 远创智控的YC-EIP-RS485/232通讯网关,自主研发的ETHERNET/IP从站功能,完美解决了这个难题。这款网关不仅可以将ETHERNET/IP网络和RS485/RS232总线…

访客报警定位管理系统:提升安全管理水平的创新解决方案

在当前日益复杂的安全环境下,保障人员安全、提高安全响应能力和管理效率成为了各行各业的首要任务。 作为一种先进的安全管理解决方案,访客报警定位管理系统凭借其独特的优势和广泛的应用场景,正逐渐成为各行业安全管理的重要工具。 那么&a…

「深度学习之优化算法」(十七)灰狼算法

1. 灰狼算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   灰狼算法(Grey Wolf Algorithm)是受灰狼群体捕猎行为启发而提出的算法。算法提出于2013年,仍是一个较新的算法。目前为止(2020)与之相关的论文也比较多,但多为算法的应用,应该仍有研究和改进的余…

数学建模-时间序列分析 实例

实例1销量数据预测和实例2人口数据预测实例3上证指数预测和实例4gdp增长率预测 数据-定义时间 不加置信区间清晰点 例二 实例3

性能测试-Jmeter之Linux下压力测试

我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上把脚本做好,然后在l…

云计算和云架构是什么 有什么用途?

云计算是一种基于互联网的计算方式,它通过网络将计算资源(如计算能力、存储、网络带宽等)以服务的形式提供给用户,并允许用户根据需求进行灵活的资源调配和管理。云计算通常分为三个层次,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服…

Spring学习记录----十二、Spring IoC注解式开发

目录 十二、Spring IoC注解式开发 12.1 回顾注解 注解怎么定义,注解中的属性怎么定义? 注解怎么使用? 1--通过反射机制怎么读取注解? 代码 运行结果 2--通过反射机制怎么读取注解? 代码 运行结果 12.2 声明…

时序数据库 TDengine 与金山云两大产品完成兼容互认证

万物互联时代,企业数字化转型和政企上云如火如荼。在云计算迎来重大发展机遇的同时,数据库在企业数字化转型中也扮演着重要的角色——随着业务量的激增,数据库的弹性扩容、容灾备份等需求逐渐显现,在此挑战下,时序数据…

哈希:探索快速的数据存储和搜索方法

哈希:探索快速的数据存储和搜索方法 哈希表作为一种高效的数据存储结构,可以使数据的存储位置与关键码之间建立一一映射的关系,从而加快元素的搜索速度。然而,哈希方法也面临着哈希冲突的问题,即不同的关键字通过相同…

MyBatis操作数据库

1.MyBatis是什么? MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO&#xf…

力扣 -- 918. 环形子数组的最大和

一、题目: 题目链接:918. 环形子数组的最大和 - 力扣(LeetCode) 二、解题步骤: 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 三、参考代码&#xff1…

Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析

1. HTTP协议解读 什么是协议? 协议实际上是某些人,或者某些组织提前制定好的一套规范,大家都按照这个规范来,这样可以做到沟通无障碍。协议就是一套规范,就是一套标准。由其他人或其他组织来负责制定的。我说的话你能…