视频增强技术-去噪

news2024/11/26 18:45:42

        本文介绍了关于视频增强技术的相关方法包括传统方法和基于深度学习的方法,并给出了他们的对比实验结果,最后对它们简单的做了总结,文中有一些图片和总结来自于网上其他博主的文章,已在文中标记并给出了相关的原文链接,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)双边滤波可以在滤波的同时保持一定的图像边缘信息

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

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

相关文章

JAVA基础-集合(List与Map)

目录 引言 一,Collection集合 1.1,List接口 1.1.1,ArrayList 1.1.1.1,ArrayList的add()添加方法 1.1.1.2,ArrayList的remove()删除方法 1.1.1.3,ArrayList的contai…

机器学习之主成分分析(Principal Component Analysis)

1 主成分分析介绍 1.1 什么是主成分分析 主成分分析(Principal Component Analysis)简称PCA,是一个非监督学习的机器学习算法,主要用于数据的降维,对于高维数据,通过降维,可以发现更便于人类理…

(css)自定义el-dialog对话框添加背景图片

(css)自定义el-dialog对话框添加背景图片 效果: // 文件管理对话框 /deep/ .el-dialog {background: transparent;background-image: url("../assets/image/file-upload-background.png");background-size: 100% 100%; } // 头部 /deep/ .el-dialog__titl…

2024考研408-操作系统 第五章-输入输出IO管理 学习笔记

文章目录 一、I/O管理概述1.1、I/O设备的概念与分类1.1.1、什么是I/O设备?1.1.2、I/O设备的分类:按照使用特性1.1.2、I/O设备的分类:按传输速率分类1.1.3、I/O设备的分类:按照信息交换的单位分类知识点回顾与重要考点 1.2、I/O控制…

【Linux】udp客户端windows版以及Tcp服务器的实现

windows版客户端更适合大多数人~ 文章目录 一. udp客户端windows版二.Tcp服务器的实现总结 一、udp客户端windows版 首先我们将上一篇文章中实现的udp大型聊天室的代码进行修改,注意我们只修改服务端代码将代码修改的很简单就好,因为我们只是做一个如何…

spring-事务

spring-事务 事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成,它具有ACID特性。 为了在spring中…

UE特效案例 —— 骷髅爆点

一,环境配置 创建默认地形Landscape,如给地形上材质需确定比例;添加环境主光源DirectionalLight,设置相应的强度和颜色;添加天光反射SkyLight,用于天空反射;添加指数级高度雾ExponentialHeightF…

C++笔记之循环引用与环状引用

C笔记之循环引用与环状引用 code review! 文章目录 C笔记之循环引用与环状引用1.C循环引用和环状引用描述的是同一种现象吗?2.环状引用3.环状引用现象举例——常见环状引用4.解决环状引用——使用前向声明5.环状引用现象举例——使用对象本身可能造成环状引用 1.C循环引用和…

MySQL_4

目录 一、日志 1、错误日志 2、二进制日志 2.1 介绍 2.2 格式 2.3 删除 3、查询日志 4、慢查询日志 二、主从复制 1、概述 2、原理 3、搭建 三、分库分表 1、介绍 1.1背景 1.2拆分策略 1.3垂直拆分 1.4水平拆分 1.5实现技术 2、Mycat概述 2.1 介绍 2.2 安装 2.3…

每日一题2023.7.22|链表的基本操作

链表的基本操作 题目描述 考察链表的基本操作 输入 输入数据只有一组,第一行有n1个整数,第一个整数是这行余下的整数数目n,后面是n个整数。这一行整数用来初始化列表的,并且输入的顺序与列表中的顺序相反,也就是说如果…

htmlCSS-----浮动

目录 前言: 浮动 1.浮动的效果 2.浮动的特点 3.浮动的写法 4.浮动的原理 5.浮动的作用 6.案例 7.浮动的缺陷与解决方式 浮动问题 解决方式 8.补充说明 前言: 浮动是html里面重要的一部分,前面我们学习了三种元素的类型(…

element中table的表格更新数据之后保留原来的勾选状态

reserve-selection: 仅对 typeselection 的列有效&#xff0c;类型为 Boolean&#xff0c;为 true 则会在数据更新之后保留之前选中的数据&#xff08;需指定 row-key&#xff09; <el-table ref"table" :data"DataList" :row-key"rowKey"&g…

使用rknn-toolkit2把YOLOV5部署到OK3588上

使用rknn-toolkit2把YOLOV5部署到OK3588上 虚拟环境搭建软件包安装在PC机上运行yolov5目标检测 虚拟环境搭建 首先在PC的ubuntu系统安装虚拟环境&#xff1a; 我的服务器是ubuntu18.04版本&#xff0c;所以安装python3.6 conda create -n ok3588 python3.6 需要键盘输入y&…

【博客681】k8s list机制与resourceVersion语义

k8s list机制与resourceVersion语义 K8s 架构&#xff1a;环形层次视图 对于 K8s 集群&#xff0c;从内到外的几个组件和功能&#xff1a; etcd&#xff1a;持久化 KV 存储&#xff0c;集群资源&#xff08;pods/services/networkpolicies/…&#xff09;的唯一的权威数据&…

实例023 建立字体形状窗体

实例说明 大家都见过不规则形状的窗体吧&#xff0c;那么如何制作一个文字形的窗体呢&#xff1f;文字形窗体一般应用在屏幕提示中&#xff0c;如收款机屏幕等。运行本例&#xff0c;效果如图1.23所示。 技术要点 以前&#xff0c;创建字体形窗体是一个既费时又费人力的过程&…

K8S初级入门系列之七-控制器(Job/CronJob/Daemonset)

一、前言 前一章节我们介绍了RC&#xff0c;RS控制器&#xff0c;其主要针对在线业务Pod部署&#xff0c;比如nginx&#xff0c;这些业务是需要确保7*24持续运行的&#xff0c;还有一类离线业务&#xff0c;比如定时任务&#xff0c;大数据离线计算等&#xff0c;在有任务的才需…

在命令行模式、eclipse console下执行Java程序输入中文的几种情况尝试

介绍 在命令行模式下执行Java程序&#xff0c;如果输入中文&#xff0c;经常会出现和代码中的解码字符集不匹配的情况&#xff0c;导致结果不正确。 在命令行模式下执行Java程序&#xff0c;输入中文&#xff0c;其实是用某种字符集编码成字节流&#xff0c;Java程序读取该字节…

rk3588 双HDMI冲突问题与HDMI不能热插拔问题

问题一:HDMI不能热插拔问题 现象 rk3588在开发时现在发现只能在插入HDMI时上电才能输出信号,而当开机之后,再插入HDMI显示器则无信号。 分析 通过kernel显示,在开机后,插拔HMDI是有log提示的,说明内核能够检测到HDMI的插拔动作。 首先先排查软件问题,尝试重启显示进…

ssm项目配置,不再支持源选项 5。请使用 6 或更高版本。 不再支持目标选项 1.5。请使用 1.6 或更高版本。

ssm项目启动报错&#xff1a; 不再支持源选项 5。请使用 6 或更高版本。 不再支持目标选项 1.5。请使用 1.6 或更高版本 1.模块语言级别 2.设置模块目标字节码版本 3.pom文件指定jdk版本 <properties><project.build.soutceEncoding>UTF-8</project.build.sout…

SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter

1. 自动配置流程 导入starter依赖导入autoconfigure寻找类路径下 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件启动&#xff0c;加载所有 自动配置类 xxxAutoConfiguration 给容器中配置功能组件组件参数绑定到 属性类中。xxxPrope…