图像去噪滤波算法汇总(Python)

news2024/11/20 10:47:19

前言

上篇文章:图像数据噪音种类以及Python生成对应噪音,汇总了常见的图片噪音以及噪音生成方法,主要用在数据增强上面,作为数据集填充的方式,可以避免模型过拟合。想要了解图像数据增强算法的可以去看本人所撰这篇文章:图像数据增强算法汇总(Python)。

本篇文章将介绍常用到的图像去噪滤波算法,采用实例代码和处理效果一并展现的方式进行介绍,能够更直观的看到每种算法的效果。本篇文章偏实战,所以不会涉及到过多每种算法的原理理论计算公式,以一篇文章快速了解并实现这些算法,以效率最高的方式熟练这些知识。

博主专注数据挖掘五年,参与过大大小小数十来次数学建模,理解各类模型原理以及每种模型的建模流程和各类题目分析方法。此专栏的目的就是为了让零基础快速使用各类数学模型、机器学习和深度学习以及代码,每一篇文章都包含实战项目以及可运行代码。博主紧跟各类数模比赛,每场数模竞赛博主都会将最新的思路和代码写进此专栏以及详细思路和完全代码。希望有需求的小伙伴不要错过笔者精心打造的专栏。


一、图像噪音来源

随着图像获取技术的不断发展,我们在实际应用中常常会面临到各种形式的图像噪声,这些噪声会影响到图像的质量和特征的清晰度。为了有效地提升图像的质量,图像处理领域涌现出了多种去噪方法,它们以不同的原理和技术手段来应对各种噪声情况。在接下来的介绍中,我们将详细探讨一些常用的图像去噪方法,包括均值滤波、中值滤波、高斯滤波等,以及它们的适用场景和特点。让我们一起深入了解如何有效地应对图像噪声,提升图像处理的准确度和质量。 图像噪音可以由多种因素引起:

  1. 传感器噪音: 摄像机、扫描仪等图像采集设备本身会引入噪音,这是由于设备的电子元件和信号处理过程中的微小不确定性。

  2. 环境条件: 光线不足、强光、阴影等环境因素可能会导致图像中的噪音增加。

  3. 传输或存储中的干扰: 在图像传输或存储过程中,信号可能会受到电磁干扰、压缩算法等因素的影响,从而产生噪音。

  4. 设备老化或损坏: 图像采集设备的老化、损坏或不稳定可能会导致图像中出现各种噪音。

  5. 信号采样误差: 在信号采样过程中,由于采样率不足或量化误差等原因,会引入噪音。

  6. 电磁干扰: 来自电器设备、无线信号等电磁波的干扰可能会影响到图像质量。

  7. 传感器特性: 不同类型的传感器(例如CMOS、CCD)具有不同的特性,它们在信号处理过程中可能会引入特定类型的噪音。

二、图像去噪算法

1.均值滤波

均值滤波是一种常用的图像处理技术,它的原理是将图像中每个像素的值替换为周围像素值的平均数。这样可以平滑图像,减少噪声的影响。具体的实现步骤如下:

  1. 确定滤波器大小:均值滤波器的大小由一个参数决定,通常用一个正奇数来表示,如3x3、5x5等。这个值决定了滤波器在图像上的覆盖区域。

  2. 将滤波器放置在图像的每个像素上:以当前像素为中心,将滤波器覆盖在图像上。

  3. 计算周围像素的平均值:将滤波器覆盖区域内的所有像素值取平均,得到一个新的像素值。

  4. 将新的像素值赋给当前位置:用计算得到的新像素值替代原来的像素值。

均值滤波主要用于去除图像中的随机噪声,例如高斯噪声或盐椒噪声。它在保留图像整体结构的同时,可以有效地减轻噪声的影响。

使用均值滤波算法来去除图片的高斯噪音可以通过以下步骤实现:

1.应用均值滤波

# 设置卷积核大小,通常选择奇数
kernel_size = 3
# 使用均值滤波进行去噪
denoised_image = cv2.blur(image, (kernel_size, kernel_size))

 2.显示原始图片和去噪后的图片

cv2.imshow('Original Image', image)
cv2.imshow('Denoised Image', denoised_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

然而,均值滤波对于一些特定类型的噪声(如周期性噪声)可能效果不佳,因为这些噪声会在图像中形成特定的模式,而均值滤波只能模糊图像,无法针对特定模式的噪声进行处理。总的来说,均值滤波是一种简单而有效的去噪方法,适用于大多数情况下的随机噪声去除。但在特定情况下,可能需要考虑其他类型的滤波器或去噪技术。卷积核越大,参与到均值运算中的像素就会越多,即当前计算的算的是更多点的像素值的平均值,去噪效果越好,当然花费的计算时间也会越长,同时让图像失真越严重。因此在实际处理中,要在失真和去噪效果之间取得平衡,选取合适大小的卷积核

2.中值滤波

中值滤波是一种常用于图像处理中的非线性滤波方法,其基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,从而达到去除噪音的目的。总共分两步:

  • 将滤波器窗口置于图像的某一像素处。

  • 将窗口中的像素值按大小排序,取其中间值作为该像素的新值。

能够处理的图像噪音类别:

中值滤波主要适用于以下几种图像噪音:

  1. 椒盐噪声:即图像中出现的黑白像素点。

  2. 横纹噪声:出现在图像中的横向条纹。

  3. 斑点噪声:散布在图像中的随机白点。

然而,中值滤波也有一些局限性,比如在保留图像细节的同时也会模糊图像,卷积核选择和均值滤波算法存在一样的问题,卷积核越大,参与到均值运算中的像素就会越多,即当前计算的算的是更多点的像素值的平均值,去噪效果越好,当然花费的计算时间也会越长,同时让图像失真越严重:

gray_image = cv2.cvtColor(noisy_image, cv2.COLOR_BGR2GRAY)
denoised_image = cv2.medianBlur(gray_image, 5)  # 5表示核的大小,可以根据需要调整

cv2.imshow('Original Image', noisy_image)
cv2.imshow('Denoised Image', denoised_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

3.高斯滤波

高斯滤波是一种线性平滑滤波器,它采用高斯函数作为权值函数进行图像滤波。高斯滤波的基本思想是通过对图像中每个像素周围的像素进行加权平均,从而降低噪声的影响,同时保留图像的边缘信息。高斯滤波器会使用一个高斯函数来计算权重,距离中心点越近的像素拥有越大的权重,距离越远的像素拥有越小的权重。

高斯滤波主要用于去除图像中的高频噪声,使图像变得更加平滑,同时也可以用于图像模糊或降低图像的细节信息。高斯滤波对高斯噪声的去除效果非常显著,可以有效地使图像变得更加平滑:

# 设置高斯滤波的内核大小,通常选择一个奇数值
kernel_size = 5
blurred_image = cv2.GaussianBlur(noisy_image, (kernel_size, kernel_size), 0)

cv2.imshow('Original Image', noisy_image)
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

4.双边滤波

双边滤波(Bilateral Filtering)是一种用于图像去噪的非线性滤波器。与高斯滤波不同,双边滤波考虑了像素之间的空间距离和像素值之间的相似性。

原理和功能:

  1. 空间距离权重:除了像素值之间的相似性,双边滤波还考虑了像素之间的空间距离。这意味着附近的像素对于滤波的影响更大,而远离的像素对滤波的影响更小。

  2. 相似性权重:双边滤波器使用高斯函数来度量像素值之间的相似性。如果两个像素的值非常相似,它们的权重较大。如果它们的值差异很大,它们的权重较小。

  3. 保留边缘信息:相比于一般的平滑滤波器,双边滤波器可以保留图像的边缘信息。这是因为它会考虑到边缘处像素的相似性。

双边滤波器可以有效地处理各种类型的噪音,包括高斯噪音、椒盐噪音等。

# 应用双边滤波
filtered_image = cv2.bilateralFilter(image, d=9, sigmaColor=75, sigmaSpace=75)

 

在一些名画细节上面修复去噪更加能够体现出来:

修复前

修复后:

 

 相比高斯滤波修复算法:

双边滤波器特别适用于那些需要保留图像细节和边缘的情况。

5.NL-Means(Non-Local Means)

NL-Means(Non-Local Means)是一种图像去噪算法,它通过利用图像中相似区域的信息来降低噪声水平,而不会损失图像的细节信息。NL-Means算法不仅可以处理高斯噪声,还可以有效地处理泊松噪声等其他类型的噪声。

NL-Means算法的基本思想是,对于图像中的每一个像素,通过计算该像素周围区域与其他像素区域的相似性来进行去噪。相似性计算可以基于像素强度的差异,也可以使用特征向量来进行。NL-Means算法的基本原理如下:

  1. 相似性比较: 对于图像中的每一个像素,NL-Means算法首先会在图像的局部区域内搜索与该像素相似的区域。相似性的度量可以基于像素强度的差异,也可以使用特征向量来进行。

  2. 权重计算: 对于每一个相似区域,算法会计算一个权重值,该权重值表示了该相似区域与目标像素的相似性。相似性越高,权重值越大。

  3. 加权平均: 使用计算得到的权重值,NL-Means算法对所有相似区域的像素值进行加权平均,得到目标像素的估计值。

  4. 重复处理: 以上步骤对图像中的每一个像素都进行处理,以达到整体去噪的效果。

通过这种方式,NL-Means算法能够保留图像的细节信息,并在降低噪声水平的同时,避免了模糊效果。

def denoise_nl_means(image, h=10, hForColor=10, templateWindowSize=7, searchWindowSize=21):
    denoised_image = cv2.fastNlMeansDenoisingColored(image, None, h, hForColor, templateWindowSize, searchWindowSize)
    return denoised_image

噪音图片:

 NL-Means去噪后图片:

 能够看出NL-Means算法保留图像的细节信息且图片没有那么模糊。

总结

综上所述,图像去噪是图像处理领域中的重要任务,其目的是消除或减弱图像中的噪音,以使图像更清晰、更易分析。不同的去噪算法适用于不同类型和强度的噪音,因此在实际应用中需要根据具体情况选择合适的方法。同时,对于特定的图像处理任务,也可能需要结合多种去噪技术以获得最佳效果。在实践中,通过理解各种去噪算法的原理和特性,可以更好地应用它们来解决实际问题,从而提升图像处理的质量和效率。


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

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

相关文章

IO,库-10.24.25

库-10.24.25 一、概念 头文件&#xff1a;.h&#xff1a;函数声明&#xff0c;结构体定义&#xff0c;宏定义&#xff0c;外部引用&#xff0c;重定义&#xff0c;条件编译 #include <>:从系统路径&#xff08;/usr/include&#xff09;下查找 #include " "&am…

如何将Mysql数据库的表导出并导入到另外的架构

如何将Mysql数据库的表导出并导入到另外的架构 准备一、解决方法1.右键->导出->用mysqldump导出2.注意路径一般为&#xff1a;C:/Program Files/MySQL/MySQL Server 8.0/bin/mysqldump.exe和导出的sql文件位置3.右键->SQL脚本->运行SQL脚本4.找到SQL脚本并点击确定…

[moeCTF 2023] REV

逆向这东西&#xff0c;不太好说。 base64 这是个pyc文件&#xff08;python编译后的字节码文件&#xff09;&#xff0c;这东西可以直接用各种方法反编译。也可以不弄&#xff0c;必竟这应该签到级别的。用notepad打开&#xff0c;可以看到base64的编译和两个码表。显然猜是…

mac系统u盘启动盘制作教程,更新至macOS Sonoma 14

mac系统怎么制作装系统的u盘,如果您要在多台电脑上安装 macOS&#xff0c;而又不想每次都下载安装器&#xff0c;这时可引导安装器就会很有用。一起来看苹果电脑u盘启动盘制作教程吧。 Macos系统安装包合集包揽macos 10.15&#xff0c;macos 11和苹果最新系统等多个版本 1、A…

Windows 和 Linux 这2个系统在进行编程实现的时候的一些区别:

很惭愧&#xff0c;学了很多年才意识到&#xff0c;噢&#xff0c;原来这两个系统实现一些功能的时候会使用到不同的库&#xff0c;使用不同的函数。 那么&#xff0c;也会延伸出一些问题&#xff1a; 比如&#xff0c;如何实现版本的迁移。一个在Linux上运行的代码如何可以比…

Instant-NGP中的多分辨率哈希编码

Instant-NGP的出现&#xff0c;无疑给神经表达领域带来了新的生命力。可认为是NeRF诞生以来的关键里程碑了。首次让我们看到了秒级的重建、毫秒级的渲染的NeRF工作。 作为如此顶到爆的工作&#xff0c;Instant-NGP毫无疑问斩获SIGGRAPH 2022的最佳论文。虽然只是五篇最佳论文之…

微信公众号推送封面图制作:专业技巧大揭秘

在微信公众号推送中&#xff0c;一个吸引人的封面设计是吸引读者点击的重要因素。本文将指导你如何使用免费在线海报制作工具&#xff0c;如乔拓云&#xff0c;来制作一个适合节日的海报模板&#xff0c;并编辑文本、图片以及调整字体、颜色、布局等&#xff0c;最后导出并保存…

【Linux前篇 】VMWare虚拟机安装与环境配置及远程连接 —— windows版

目录 一、操作系统 1.1 什么是操作系统 1.2 常见操作系统 1.3 个人版本和服务器版本的区别 1.4 Linux的各个版本 二、VMWare 虚拟机安装配置流程 2.1 安装 2.2 配置虚拟网络编辑器 三、安装配置 Windows Server 2012 R2 3.1 创建虚拟机 3.2 安装 Windows Server 2012…

Linux文件I/O

下面的内容需要了解系统调用&#xff0c;可看下面的链接&#xff1a; 系统调用来龙去脉-CSDN博客 1.底层文件IO和标准IO 这里指的是操作系统提供的IO服务&#xff0c;不同于ANSI建立的标准IO。 底层IO和标准IO各自所使用的函数&#xff1a; 区别&#xff1a; 1.底层文件IO不…

TDesign设计系统全方位解析

随着互联网的发展和技术的不断更新和迭代&#xff0c;互联网产品类别的周期越来越短&#xff0c;用户需求也在不断提高。对于生产、设计和研究团队来说&#xff0c;有必要进行高效和持续的设计创新。腾讯“腾讯设计云”的研发帮助企业完成高效协作&#xff0c;提高设计开发效率…

SpringCloud学习:一【详细】

目录 服务架构演变 单体架构 分布式架构 分布式架构需要考虑的问题 微服务 架构比较 微服务技术对比 服务拆分注意事项 案例 服务远程调用 RestTemplate Eureka注册中心 RestTemplate存在的问题 服务调用考虑的问题 Eureka的作用 搭建EurekaServer 服务注册 …

分布式事务——CAP理论 解决分布式事务的思路 Seata组件初识 和 部署

前言 事务(TRANSACTION)是一个不可分割的逻辑单元&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体向系统提交&#xff0c;要么都执行、要么都不执行。 事务作为系统中必须考虑的问题&#xff0c;无论是在单体项目还是在分布式项目中都需要进行…

Android WMS——概述(一)

Android 中的 WMS 指的是 Window Manager Service(窗口管理服务)。WMS 是 Android 系统中的核心服务,主要分为四大部分,分别是窗口管理,窗口动画,输入系统中转站和 Surface 管理 。负责管理应用程序窗口的创建、移动、调整大小和显示等操作。 一、功能简介 WMS 的职责可…

YOLO目标检测——红外人员数据集【含对应voc、coco和yolo三种格式标签+划分脚本】

实际项目应用&#xff1a;红外热像仪进行安全监控数据集说明&#xff1a;红外人员检测数据集&#xff0c;真实场景的高质量图片数据标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(json)和yolo(txt)三种格式标签&#xff…

华为OD机试 - 德州扑克 - 逻辑分析(Java 2023 B卷 200分)

目录 专栏导读一、题目描述1、判断牌型2、说明 二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAV…

自动化学报格式 Overleaf 在线使用 【2023最新教程】

自动化学报格式 Overleaf 在线使用 摘要 2023年10月26日19:28:17&#xff08;云南昆明&#xff09; 今天课程老师要我们期末提交一篇论文&#xff0c;以自动化学报格式提交。因此&#xff0c;去官网发现只有 latex 格式&#xff0c;下载下来发现各种格式不兼容&#xff1b;由于…

postgresql14管理(二)-用户与角色

介绍 查看 SELECT rolname FROM pg_roles;postgres是系统初始化时默认创建的角色&#xff0c;为超级管理员。 \duList of rolesRole name | Attributes | Member of ------------------------------------------------------…

Kafka - 异步/同步发送API

文章目录 异步发送普通异步发送异步发送流程Code 带回调函数的异步发送带回调函数的异步发送流程Code 同步发送API 异步发送 普通异步发送 需求&#xff1a;创建Kafka生产者&#xff0c;采用异步的方式发送到Kafka broker 异步发送流程 Code <!-- https://mvnrepository…

墨西哥专线大型工程设备海运

随着全球经济一体化的不断推进&#xff0c;国际贸易日益繁荣&#xff0c;跨国物流需求不断增长。墨西哥作为拉美地区的经济大国&#xff0c;拥有丰富的资源和庞大的市场&#xff0c;吸引了许多中国企业的投资。然而&#xff0c;由于地理位置的原因&#xff0c;许多大型工程设备…

23种设计模式【创建型模式】详细介绍之【建造者模式】

建造者模式&#xff1a;构建复杂对象的精妙设计 设计模式的分类和应用场景总结建造者模式&#xff1a;构建复杂对象的精妙设计建造者模式的核心思想建造者模式的参与者Java示例&#xff1a;建造者模式 设计模式的分类和应用场景总结 可以查看专栏设计模式&#xff1a;设计模式 …