去噪方法总结

news2024/11/27 6:18:59

        图像降噪方法如下图:

 空间域局部滤波

线性滤波

原图:

给原图加了四类噪声以后:

 

均值滤波


主要原理: 用像素邻域的灰度均值代替该像素的值
opencv里面有api 直接用api
size 用的是7
对这四张图用均值滤波 (上下是一一对应的):

 size是10的时候:

 尺寸越大 效果越好 但是越来越模糊。

高斯滤波

        高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。
高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
  对应均值滤波和方框滤波来说,其邻域内每个像素的权重是相等的。而在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。
这里简单说说自己写高斯滤波器 就三个步骤
首先根据二维高斯分布确定核里面每个位置的权重。

 

 

然后归一化
最后扩充边界 遍历像素进行卷积即可
一句话概括: 高斯滤波是根据模板中各位置的权重分布对邻域内像素进行加权平均的过程,最后用得到的值代替中心像素的值

我们先设置size是7:

 size是15:

 均值滤波去除椒盐噪声比 高斯滤波强
均值滤波适合去除椒盐噪声 高斯滤波适合去除高斯噪声
中值滤波也可以去除椒盐噪声
泊松噪声俩个方法都还可以 毕竟泊松噪声看起来改变不是很大
这俩方法都比较依赖尺寸大小 越大效果越好但是越模糊
毕竟是简单的滤波方法 要求不能太高。

非线性滤波

中值滤波

        跟均值滤波一样 实现起来很简单
size=7:

 双边滤波

一种非线性的保边滤波算法 是一种结合图像的空间邻近度与像素值相似度的处理办法 在滤波时,该滤波方法同时考虑空间临近信息与颜色相似信息,在滤除噪声、平滑图像的同时,又做到边缘保存。
几何空间距离 + 像素差值 这两个因素
简单来说 就是计算权值时不只考虑 空间邻近度(距离)还考虑了像素相似度(像素差值)

 

 对高斯噪声 进行处理:

 opencv自带的 处理效果:

**小结 双边滤波是一种非线性的保边滤波算法
主要是结合了空间邻近度和像素值相似度
相比于高斯滤波 它在确定权重系数时不仅考虑了像素间的几何距离 还考虑了像素值之间的差距
在消除噪声 平滑图像的同时 也能保留边缘 常用到磨皮美颜算法中 但是缺点在于只能保留整体的一个形状 **

 空间域非局部滤波 NLM

Non-Local Means顾名思义,这是一种非局部平均算法。局部平均就是在像素周围的邻域取均值 非局部均值滤波就意味着它使用图像中的所有像素,这些像素根据某种相似度进行加权平均。滤波后图像清晰度高,而且不丢失细节。
利用了整幅图像进行去噪。即以图像块为单位在图像中寻找相似区域,再对这些区域取平均,较好地滤除图像中的高斯噪声。
怎么衡量图像块间的相似度
可以根据 两个邻域里像素间亮度差值的平方 来估计

image.png

高斯滤波使用当前滤波点与矩形窗口内其它点的空间欧式距离来计算权重,距离越近权重越大;而非局部均值滤波则使用当前滤波点的邻域块与矩形窗口内其它点的邻域块的相似度来计算权重,相似度越大则权重越大。
计算太慢了
非局部算法获得的信噪比比双边滤波略高,有时候还不如双边滤波。但是,非局部滤波是一种基于快的匹配度来计算滤波权值的,所以能获得比较好的视觉效果。然而,它的计算复杂度实在是太高了。最原始非局部均值算法是在整个图片中进行块搜索,根据块的匹配度来计算权值。实际执行过程,都会把搜索区域限定在一个局部的搜索窗口中。

小结:NLM 非局部平均算法 主要涉及一大一小两个矩形 首先是待处理的局部区域 另一个较大的矩形叫纹理替换搜索区域 这俩矩形咋选取呢 就是以遍历到的像素为中心 取一大一小矩形区域
然后将大的矩形区域 分成若干个小区域 计算待处理的局部区域和 每个分割的小区域的相似度(均方误差MSE) 通过相似度确定权重 从而计算取值

频率域滤波

小波变换

总结

①对于均值滤波来说 尺寸越大 效果越好 但是越模糊
均值滤波会把噪声分化/弱化到周围像素上,然后噪声幅度变小,但是噪声面积变大
②高斯滤波是利用基于邻域的加权平均值代替中心点像素值 但是权重仅考虑距离 没有考虑图像本身的内容
③中值滤波对椒盐去除效果较好 但是因为选取的是中值 如果存在一些点 线之类的让像素发生突变的邻域 那么中值滤波可能就会把这些不是噪声的点 线去掉 从而丢失图像信息
④双边滤波 加了像素相似度计算权值 优点在于可以保存边缘 但是它只能保留整体形状 比较适合美颜磨皮之类的。
关于磨皮美颜 其实可以用双边滤波 但是可能需要先人脸识别 涉及更复杂的知识
如果只是关于人脸的图片 可以直接双边滤波试下 可以看下面的例子

image.png

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

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

相关文章

记录一些奇怪的报错

错误:AttributeError: module distutils has no attribute version 解决方案: 第一步:pip uninstall setuptools 第二步:conda install setuptools58.0.4 错误:ModuleNotFoundError: No module named _distutils_hac…

Java定时器

对于定时器的设定,想必大家在不少网站或者文章中见到吧,但是所谓的定时器如何去用Java代码来bianx呢??感兴趣的老铁,可以看一下笔者这篇文章哟~~ 所谓的定时器就是闹钟!! 设定一个时间&#x…

计算机毕业设计 高校课程评价系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Vray渲染与窗口呈现不一致怎么办?

3D场景渲染过程中,可能大多情况下,大家都会选择Vray渲染器。它是最流行的渲染引擎之一。 但是,在渲染过程中,大家还是会遇到vray渲染和窗口不一致的问题。 在渲染过程中,窗口显示和实际渲染结果不同步的情况。不仅影响…

【DevOps核心理念基础】1. 什么是 devops

一、什么 devops? 1.1 定义 1.2 作用 1.3 核心 1.4. 软件开发流程 1.5. DevOps的核心定义 1.6. 具备的能力 二、DevOps流程中的几个关键概念 2.1 持续集成 2.2 持续交付 2.3 持续部署 2.4 总结 三、DevOps和敏捷开发的演进 一、什么 devops? 1.1 定义 Developme…

基于YOLOv8模型的80类动物目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的80类动物目标检测系统可用于日常生活中检测与定位车辆目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…

基于springboot+vue的大学社团管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

如何实现微服务

一、问题拆解 1.1、客户端如何访问这些服务 原来的Monolithic方式开发,所有的服务都是本地的,UI可以直接调用;现在按功能拆分成独立的服务,跑在独立的虚拟机上的Java进程了。客户端UI如何访问他的? 后台有N个服务&a…

golang面试题:对未初始化的的chan进行读写,会怎么样?为什么?

问题 对未初始化的的 chan 进行读写&#xff0c;会怎么样&#xff1f;为什么&#xff1f; 怎么答 读写未初始化的 chan 都会阻塞。 举例 写未初始化的 chan package main // 写未初始化的chan func main() {var c chan intc <- 1 }// 输出结果 fatal error: all gorou…

[译] MySQL-恢复被删除的Performance Schema 数据库

原文地址&#xff1a;https://blog.sqlauthority.com/2021/12/23/mysql-recover-dropped-performance-schema-database/ 原文作者&#xff1a;Pinal Dave 登录后复制今天早些时候我在一个在线论坛上看到有用户在找如何恢复被删除的Performance Schema 数据库的方法。 老实说&a…

【Java】什么是过滤器链(FilterChain )?哪些场景可以使用过滤器链?

文章目录 前言1、创建过滤器2、修改 web.xml3、运行项目并查看结果 前言 在一个 Web 应用程序中可以注册多个 Filter 程序&#xff0c;每个 Filter 程序都可以针对某一个 URL 进行拦截。如果多个 Filter 程序都对同一个 URL 进行拦截&#xff0c;那么这些 Filter 就会组成一个…

基于腾讯文档进行应届生个人求职记录

1. 新建一个腾讯文档 电脑登录QQ&#xff0c;点击“腾讯文档”功能键。 2. 可以选择下载客户端&#xff0c;也可以直接进入网页版。&#xff08;本人使用网页版&#xff09; 3. 点击新建&#xff0c;选择在线表格。 4. 编辑表名&#xff0c;表内容。 5. 设置文档权限&#xf…

青大数据机构【2013】

关键字&#xff1a; 邻接表空间复杂度、求无向图连通分量&#xff08;BFS、DFS&#xff09;、B树根节点最小关键字、平均查找长度最小的排序、二叉树排序叶子结点次序不变、不同次序建立二叉排序树及中序遍历、直接插入排序特点、强连通分量、邻接矩阵邻接表 一、单选&#x…

vue2中使用富文本编辑器tinyMCE全过程

第一步&#xff1a;安装TinyMCE $npm install tinymce5.10.0 -S $npm install tinymce/tinymce-vue3.0.1 -S 第二步&#xff1a;在node_modules中找到tinymce文件夹将内部文件移入pubilc/tinymce文件夹中在index.html文件中引入tinymce.min.js 注意&#xff1a;不把js文件放…

Java 基本类型和包装类

Java 是基于对象的&#xff0c;所以我们都需要以对象的想法来进行思维。 但 Java 又提供了 8 个基本类型&#xff0c;这 8 个基本类型基本上都和数字有关&#xff0c;是直接可以使用的类型。 基本类型大小包装器类型boolean/Booleanchar16bitCharacterbyte8bitByteshort16bitS…

[NCTF2019]Fake XML cookbook XML注入

目录 DTD 实体 外部实体 做题 看到这个界面就像admin 123456弱口令试试看 果然进不去 这里有个tips 但是没有办法点击 我们进源代码看看 function doLogin(){var username $("#username").val();var password $("#password").val();if(username …

flex 实现多行项目动态堆叠,随着屏幕尺寸而扩展减少

当您增加或减少屏幕尺寸时&#xff0c;这些 flex 项目会缩小和增长。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

ARM Linux DIY(八)USB 调试

前言 V3s 带有一个 USB 接口&#xff0c;将其设置为 HOST 或 OTG 模式&#xff0c;这样可以用来接入键盘、鼠标等 USB 外设。 USB 简介 USB 有两种设备&#xff1a;HOST 和 USB 功能设备。 在 USB2.0 中又引入了一个新的概念 OTG&#xff0c;即设备角色可以动态切换。 切换方…

关系的定义及表示

关系的定义及表示 1、若集合R是AA的子集&#xff0c;则称R是集合A上的二元关系&#xff0c;简称关系 例&#xff1a;A{1,2}&#xff0c; AA{<1,1>,<1,2>,<2,1>,<2,2>}&#xff0c;AA的任何一个子集都是A上的关系 如&#xff1a; R{<1,1>, &…

B+Tree 索引结构

文章目录 1. 数据库索引2. BTree 索引结构 1. 数据库索引 索引是为了提高数据的查询速度&#xff0c;相当于给数据进行编号&#xff0c;在查找数据的时候就可以通过编号快速找到对应的数据。索引用的是 B Tree 数据结构。 乱序插入数据&#xff0c;会自动按照 id 进行升序排…