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

这篇具有很好参考价值的文章主要介绍了图像去噪滤波算法汇总(Python)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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

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

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


一、图像噪音来源

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

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

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

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

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

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

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

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

二、图像去噪算法

1.均值滤波

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

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

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

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

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

图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

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

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

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()

 图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

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

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()

图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

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()

 图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

4.双边滤波

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

原理和功能:

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

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

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

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

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

 图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

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

修复前

图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

修复后:

 图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

 相比高斯滤波修复算法:

图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

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

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

噪音图片:

图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

 NL-Means去噪后图片:

图像去噪滤波算法汇总(Python),一文速学-深度学习项目实战,深度学习,图像处理,opencv,人工智能,自然语言处理

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

总结

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


到了这里,关于图像去噪滤波算法汇总(Python)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文速学-GBDT模型算法原理以及实现+Python项目实战

    目录 前言 一、GBDT算法概述 1.决策树 2.Boosting 3.梯度提升

    2024年01月15日
    浏览(27)
  • 一文速学-XGBoost模型算法原理以及实现+Python项目实战

    目录 前言 一、XGBoost模型概述 1.发展历史 2.算法改进之处 1.损失函数 2.分裂点选择 3.剪枝策略 4.正则化 5.学习率 6.提前停止 二、XGBoost算法原理 1.初始化构造目标函数  2.目标函数变换  变换优势总结 3.将树引入目标函数 4.构建最优树(贪心算法) 三、XGBoost实战-贷款违约预测模

    2024年02月03日
    浏览(43)
  • 基于深度学习的FFDNet图像去噪算法实战准备指南

    一、FFDNet图像去噪算法的复现代码下载 1、FFDNet的图像去噪算法的代码分为pytorch版本和matlab版本,下载的链接分别如下: (1)FFDNet-pytorch下载   https://download.csdn.net/download/qq_41104871/88233742 (2)FFDNet-matlab下载   https://download.csdn.net/download/qq_41104871/87659931 二、FFDNet图像去噪算

    2024年02月12日
    浏览(30)
  • 毕业设计:基于深度学习的图像去噪算法 人工智能

    目录 前言 项目背景 设计思路 数据集 模型训练 更多帮助     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学

    2024年02月19日
    浏览(32)
  • 【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 Buades等

    2024年02月11日
    浏览(32)
  • 一文速学数模-时序预测模型(二)平稳时间序列预测算法和自回归模型(AR)详解+Python代码实现

    目录 前言 一、平稳时间序列预测算法 1.时间序列的分布、均值和协方差函数 概率分布

    2023年04月08日
    浏览(33)
  • 8 图像去噪 滤波 锐化 边缘检测案例(matlab程序)

    1. 简述        学习目标:一个图像处理的经典综合案例 一、图像锐化的原理   图像锐化的目的是凸显物体的细节轮廓,通常可以用梯度、Laplace算子和高通滤波来实现,下面一一说明: 1、梯度法 梯度计算可以参考 小白学习图像处理——canny边缘检测算法 ,假设Gx为x方

    2024年02月12日
    浏览(29)
  • 基于MATLAB对彩色图像去噪的代码,均值滤波,中值滤波,空域低通滤波。

    本文主要为代码展示,未对所用算法进行较为详细的文字介绍,请读者见谅。如有建议,欢迎私信。   MATLAB调用格式为: J=imnoise(I,type)或者J=imnoise(I,type,parameters)。将类型噪声添加到灰度图像。 其中,I为原始图像,J为有噪图像,参数type和parameters用于确定噪声类型和相应的参

    2024年02月06日
    浏览(37)
  • 不同图像的噪声,选用什么滤波器去噪,图像处理的噪声和处理方法

    提示:据说是科大讯飞的算法面试题 知道哪些噪声,分别用什么滤波器处理? 噪声来源灰常多,但主要可以分为三类: 1.来自捕捉源的(acquisition/digitization) ,比如一个摄像机的镜头、A/D或者sensor; 2.来自图像传输过程(image transmission), 传输图像的信道包括无线电、微波

    2024年02月05日
    浏览(36)
  • 关于图像去噪的BM3D算法python库讲解

    目录 基本原理 一、BM3D算法的详解 ​编辑 二、python中的应用 总结 图像做块间匹配,把多张相似的2D图像块组成3D组,对3D组进行域变换,利用域变换上系数的稀疏性,进行滤波,然再逆向3D域变换,得到滤波后的图像块,放回原来的位置,每个像素可能得到多次滤波的结果,

    2024年02月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包