图片预处理技术介绍4——降噪

图片预处理

  大家好,我是阿赵。
  这一篇将两种基础的降噪算法。
  之前介绍过均值模糊和高斯模糊。如果从降噪的角度来说,模糊算法也算是降噪的一类,所以之前介绍的两种模糊可以称呼为均值降噪和高斯降噪。不过模糊算法对原来的图像特征的减弱性太强,我们想在降噪的过程中,尽量保持原土地特征

1、 双边滤波降噪

  模糊算法降噪,是使用卷积核,对像素点周围一定范围内的点进行加权平均。这种加权平均的权重只考虑了周围像素点和中心点像素的距离。
  如果在距离的条件上,再加多一个色值差的条件,对比周围像素点和中心点像素点的色值差,然后再加进权重里面,最终求出色值,就是双边滤波算法了。
所以我们需要传入三个参数:
1. 滤波的半径,决定了中心像素点会搜索多大范围的周边像素点进行加权平均
2. 距离的sigma参数,决定了高斯核的权重,距离sigma值越大,离中心像素越远的点权重就越小
3. 色差值的sigma参数,决定了颜色差异的大小权重,色差值sigma值越大,像素差值的权重就越小

  用伪代码来检查一个像素,就是:
循环每一个像素点,再循环周围一定范围内的像素:
float weight = -1*(像素距离差X+像素距离差Y)/距离sigma - (周边像素和中间像素色值差)/色差值;
weight = math.exp(weight);
  为什么要用负数,是为了用指数函数,归一化为0-1的范围。
  为了能明显看清降噪的效果,我拿一张图直接二阶偏导求边缘
在这里插入图片描述

  可以看到结果上面存在很多噪点
  接下来使用双边滤波算法,进行降噪:
在这里插入图片描述

  可以看到,降噪之后,图像还是变模糊了一些,不过一些明显的杂点已经消失了。
  双边滤波降噪算法
优点是
1、 算法简单,只是比高斯模糊算多了一个色差,很容易实现
2、 计算量不大
缺点是
1、 由于只是比较周围一圈像素点,所以还是会产生模糊的效果
2、 对参数敏感,对于距离sigma和色差值sigma这两个参数,调节不同的值,会得到差别很大的效果。
  正是由于对参数敏感,所以很难用一个固定的参数去降噪不同的图片,要根据实际情况做调整。如果色差值的参数无限大,其实这个结果就无限接近于高斯模糊了。

2、 NLM降噪

  非局部均值降噪算法(Non-Local Means,简称NLM),所谓的非局部,其实是相对于类似高斯模糊或者双边滤波这种只对比当前像素点周边局部范围内的像素点的做法。非局部,指的是对比整个图片所有的像素范围。
  NLM不是以一个像素点作为单位,而是以一个范围的色块作为单位。比如以某个像素点为中心的3X3的像素块,对比整个图片其他像素点为中心的3X3像素块,然后做2个事情:
1、 判断当前3X3像素块和目标3X3像素块的相似程度,求出一个相似值。具体做法是对应3X3个格子每一个位置,对两个色块对应位置的色值进行求差,然后再加起来。
2、 把所有和当前3X3像素块色值相似程度高的其他3X3色块的颜色加权平均,求出当前像素点的最终色值。加权的权重就是第一步求出的色块相似程度。
  上面的3X3色块只是举一个例子,也可以是更大的范围,比如5X5之类。这个计算量是非常大的,不止要遍历每个像素点,还要遍历每个像素点周围范围内的像素点。
在这里插入图片描述

  上图左边的是双边滤波的结果,右边是NLM降噪的结果。可以看出,NLM会保留了更多原图的细节,并不会产生很明显的模糊。
  NLM的优点是:由于只和色值相近的色块进行加权平均,所以不会被没必要的色块模糊掉,保留的细节会更多。
但NLM的缺点也是很明显的:
1、 计算量非常的大,如果由CPU来做循环,对于稍大的图片处理起来会很慢。不过由于每个像素点的计算都是独立的,如果由并行处理的GPU来计算,还可以接受。
2、 对参数的敏感度更高。怎样才算是颜色相近,是没有一个标准的,如果标准很低,最后就变成了整张图所有像素的平均。如果标准很高,就可能找不到可以加权平均的色块,达不到降噪的效果。

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

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

相关文章

【数据中心建设资料】数据中心安全建设解决方案,数据中心整理解决方案,数据中心如何做到安全保障,数据中台全方案(Word全原件)

第一章 解决方案 1.1 建设需求 1.2 建设思路 1.3 总体方案 信息安全系统整体部署架构图 1.3.1 IP准入控制系统 1.3.2 防泄密技术的选择 1.3.3 主机账号生命周期管理系统 1.3.4 数据库账号生命周期管理系统 1.3.5 双因素认证系统 1.3.6 数据库审计系统 1.3.7 数据脱敏系统 1.3.8…

十,[极客大挑战 2019]Secret File1

点击进入靶场 查看源代码 有个显眼的紫色文件夹,点击 点击secret看看 既然这样,那就回去查看源代码吧 好像没什么用 抓个包 得到一个文件名 404 如果包含"../"、"tp"、"input"或"data",则输出"…

UE5 C++ 不规则按钮识别,复选框不规则识别 UPIrregularWidgets

插件名称:UPIrregularWidgets 插件包含以下功能 你可以点击任何图片,而不仅限于矩形图片。 UPButton、UPCheckbox 基于原始的 Button、Checkbox 扩展。 复选框增加了不规则图像识别功能,复选框增加了悬停事件。 欢迎来到我的博客 记录学习过…

【数据结构】手搓链表

一、定义 typedef struct node_s {int _data;struct node_s *_next; } node_t;typedef struct list_s {node_t *_head;node_t *_tail; } list_t;节点结构体(node_s): int _data;存储节点中的数据struct node_s *_next;:指向 node…

【Win11的Bug】无法在文件夹中创建txt文件

问题 右键只能新建文件夹 , 无法新建txt文本文档 解决办法 将注册表中的一个参数从1改为0即可. 具体内容: WinR输入regeditHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 将1改为0(下面这张图我已改过) 4.然后重新启动电脑即可 小技…

基于Matlab三点雨流计数法的载荷时间历程分析与循环疲劳评估

随着工程领域中机械设备和结构系统的复杂性不断增加,疲劳分析成为评估其可靠性与使用寿命的关键环节。载荷时间历程数据在疲劳分析中扮演着重要角色,而雨流计数法作为经典的循环计数方法,能够有效地从载荷时间历程中提取疲劳载荷循环信息。本…

二、部署docker

二、安装与部署 2.1 安装环境概述 Docker划分为CE和EE,CE为社区版(免费,支持周期三个月),EE为企业版(强调安全,付费使用)。 Docker CE每月发布一个Edge版本(17.03&…

python + PPT

ppt转化为word 对于PPT中的文本内容,如何转化为word内容呢?下面的代码可以实现如下功能 代码如下: from pptx import Presentation from docx import Documentdef clean_text(text):"""清理文本,移除控制字符&quo…

linux运维命令

防火墙相关命令 防火墙规则查看 firewall-cmd --list-all 禁ping firewall-cmd --permanent --add-rich-rulerule protocol valueicmp drop firewall-cmd --reload 执行完以上命令后,通过firewall-cmd --list-all查看规则生效情况 firewall-cmd --list-all 其…

论文笔记:Asymptotic Midpoint Mixup for Margin Balancing and Moderate Broadening

1. Motivation 在特征空间中,特征之间的collapse会导致representation learning 中的关键问题,这是因为特征之间不可区分。基于线性插值的增强方法(例如 mixup)已经显示出它们在缓解类间塌陷(称为inter-class collaps…

Elasticsearch之索引的增删改查(6.x版本)-yellowcong

1. 节点信息查看 #查看集群健康情况 curl -X GET localhost:9200/_cat/health?v&pretty#查看节点信息 curl -X GET localhost:9200/_cat/nodes?v&pretty 2. 索引管理 在es中,索引就相当于是mysql中的库了。 #查看索引列表 curl -X GET localhost:9200/…

Linux红帽认证有哪些等级?RHCE含金量如何?

工 仲 好:IT运维大本营哈喽,大家好! 红帽认证,作为一个备受瞩目的认证体系,其完善程度在行业内有口皆碑。 它清晰地划分为三个等级,分别是初级、中级和高级,每个等级都具有独特的要求和价值。…

ArcGIS求取多个点距离线要素的最近距离以及距离倒数

本文介绍在ArcMap软件中,对于点要素中的每一个点,求取其距离最近的道路的距离、距离倒数的方法。 首先,看一下本文的需求。现在已知一个点要素,其中含有多个点,假设每一个点表示城市中的一家商店;同时&…

大数据实验E5HBase:安装配置,shell 命令和Java API使用

实验目的 熟悉HBase操作常用的shell 命令和Java API使用; 实验要求 掌握HBase的基本操作命令和函数接口的使用; 实验平台 操作系统:Linux(建议Ubuntu16.04或者CentOS 7 以上);Hadoop版本:3…

跑一下pyapp

文档:How-to - PyApp 首先没有rust要安装 安装 Rust - Rust 程序设计语言 查看是否安装成功 然后clone下pyapp https://github.com/ofek/pyapp/releases/latest/download/source.zip -OutFile pyapp-source.zip 进入目录中,cmd,设置环境…

Python_Flask01

所有人都不许学Java了,都来学Python! 如果不来学的话请网爆我的老师---蔡老师 Flask的前世姻缘 我不知道,没啥用,要学好这个框架,其实多读书,多看报就行了,真心想了解的话! Welcom…

Unity性能优化---动态网格组合(一)

网格组合是将 Unity 中的多个对象组合为一个对象的技术。因此,在多物体的场景中,使用网格组合,会有效的减少小网格的数量,最终将得到一个包含许多小网格的大网格游戏对象,这将提高游戏或模拟器的性能。在Unity 的 “St…

Docker 逃逸突破边界

免责声明 本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。 作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何…

Kafka知识体系

一、认识Kafka 1. kafka适用场景 消息系统:kafka不仅具备传统的系统解耦、流量削峰、缓冲、异步通信、可扩展性、可恢复性等功能,还有其他消息系统难以实现的消息顺序消费及消息回溯功能。 存储系统:kafka把消息持久化到磁盘上&#xff0c…

vue-cli创建项目报错:command failed: npm install --loglevel error

网上解决方法有很多,对于我都没用。 最后用这个方法起了作用: 尝试将npm源设置为HTTP,慎用,可能不安全 npm config set registry http://registry.npm.taobao.org/ 改为http就顺利创建项目了。