图像滤波算法 python

1. 平均滤波 (Mean Filtering)

平均滤波是一种简单的线性滤波方法,通过取邻域内像素的平均值来平滑图像,从而去除噪声。

import cv2
import numpy as np# 读取图像
image = cv2.imread('image.jpg')# 应用平均滤波
mean_filtered = cv2.blur(image, (5, 5))# 显示结果
cv2.imshow('Mean Filter', mean_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 高斯滤波 (Gaussian Filtering)

高斯滤波通过使用高斯函数进行加权平均,能更有效地去除噪声,保留图像边缘。

# 应用高斯滤波
gaussian_filtered = cv2.GaussianBlur(image, (5, 5), 0)# 显示结果
cv2.imshow('Gaussian Filter', gaussian_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. 中值滤波 (Median Filtering)

中值滤波是一种非线性滤波方法,使用邻域内像素的中值来替代中心像素值,特别适合去除椒盐噪声。

# 应用中值滤波
median_filtered = cv2.medianBlur(image, 5)# 显示结果
cv2.imshow('Median Filter', median_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()

4. 双边滤波 (Bilateral Filtering)

双边滤波在去噪的同时,能很好地保留图像的边缘信息。

# 应用双边滤波
bilateral_filtered = cv2.bilateralFilter(image, 9, 75, 75)# 显示结果
cv2.imshow('Bilateral Filter', bilateral_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()

5. 非局部均值滤波 (Non-Local Means Filtering)

非局部均值滤波通过比较图像中各个块的相似性来进行去噪,效果较好但计算量较大。

# 应用非局部均值滤波
nlm_filtered = cv2.fastNlMeansDenoisingColored(image, None, 10, 10, 7, 21)# 显示结果
cv2.imshow('NLM Filter', nlm_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()

6. 小波去噪 (Wavelet Denoising)

小波去噪通过小波变换将图像分解为不同频率分量,并在小波域中进行阈值处理来去噪。

import pywt
import pywt.data# 使用示例图像
image = pywt.data.camera()# 小波分解
coeffs2 = pywt.dwt2(image, 'bior1.3')
LL, (LH, HL, HH) = coeffs2# 阈值处理
threshold = 0.04
LH = pywt.threshold(LH, threshold*max(LH))
HL = pywt.threshold(HL, threshold*max(HL))
HH = pywt.threshold(HH, threshold*max(HH))# 小波重构
denoised_image = pywt.idwt2((LL, (LH, HL, HH)), 'bior1.3')# 显示结果
plt.imshow(denoised_image, cmap='gray')
plt.title('Wavelet Denoising')
plt.show()

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

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

相关文章

极域卸载不干净导致无法重新安装问题:独家解决方案

文章目录 一、问题二、解决1.网上常规方法2.本贴特殊之处 三、致谢 一、问题 极域卸载不干净,导致无法重新安装。 二、解决 1.网上常规方法 1.regedit命令注册表删除 topdomain、mythware、{5FB4EEDF-6A79-45C3-B049-EF327CA03FCD} 2.删除极域对应tmp文件 网上…

迫在眉睫的革命:通用人工智能(AGI)与超级智能的竞赛

技术领域正处于一场将重新定义人类能力和理解边界的革命边缘。随着我们站在这一新时代的十字路口,开发通用人工智能(AGI)及其随后向超级智能的飞跃,不仅仅是一项科学努力,而是我们历史上的一个关键时刻。在这篇博客文章中,我们将深入探讨Leopold Aschenbrenner的文件《态…

Go微服务: 分布式之通过可靠消息实现最终一致性

通过可靠消息实现最终一致性 可靠消息,就是靠普消息,还是基于之前的这个案例 比如这个订单服务,无论你是先发送消息,还是先新建订单,它其实都是发送的不可靠消息就是说如果这个消息,像mysql事务那样&#…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第七周) - 结构化预测

结构化预测 0. 写在大模型前面的话1. 词法分析 1.1. 分词1.2. 词性标注 2.2. 句法分析 2.3. 成分句法分析2.3. 依存句法分析 3. 序列标注 3.1. 使用分类器进行标注 4. 语义分析 0. 写在大模型前面的话 在介绍大语言模型之前,先把自然语言处理中遗漏的结构化预测补…

【机器学习】机器学习与医疗健康在智能诊疗中的融合应用与性能优化新探索

文章目录 引言机器学习与医疗健康的基本概念机器学习概述监督学习无监督学习强化学习 医疗健康概述疾病预测诊断辅助个性化治疗方案制定 机器学习与医疗健康的融合应用实时健康监测数据预处理特征工程 疾病预测与优化模型训练模型评估 诊断辅助与优化深度学习应用 个性化治疗方…

如何使用 Magisk 获取 Google Pixel 4 或 Pixel 4 XL 的 Root 权限

How to root the Google Pixel 4 or Pixel 4 XL with Magisk How to root the Google Pixel 4 or Pixel 4 XL with Magisk 给国内新用户的 Google Pixel 使用指南 - 少数派 12.0.0 (SP1A.211105.002, Nov 2021) https://developers.google.com/android/images#flame 小米…

接口自动化Requests+Pytest基础实现

目录 1. 数据库以及数据库操作1.1 概念1.2 分类1.3 作用 2 python操作数据库的相关实现2.1 背景2.2 相关实现 3. pymysql基础3.1 整个流程3.2 案例3.3 Pymysql工具类封装 4 事务4.1 案例4.2 事务概念4.3 事务特征 5. requests库5.1 概念5.2 角色定位5.3 安装5.4 校验5.5 reques…

C语言学习笔记 库文件

文章目录 概述生成静态库及应用生成动态库及应用 概述 在C语言中,库分为静态库(.a)和动态库(.dll或.so)。 调用静态库时,编译器会把库文件编译到可执行文件(.exe)里; 调用动态库时,编译器不会把库文件编译到可执行文件(.exe)里&a…

“中新美”三重身份,能帮SHEIN解决上市问题吗?

一家公司的海外上市之路能有多复杂?辗转多地的SHEIN,可能是当前最有话语权回答这个问题的公司。最近,它又有了新消息。 在上市信息多次更改后,伦敦正在成为SHEIN最有可能的“着陆”点。巴伦周刊援引英国天空新闻报道称&#xff0…

Python01 -分解整包数据到各个变量操作和生成器

Python 的星号表达式可以用来解决这个问题。比如,你在学习一门课程,在学期末的时候,你想统计下家庭作业的平均成绩,但是排除掉第一个和最后一个分数。如果只有四个分数,你可能就直接去简单的手动赋值,但如果…

5、搭建前端项目

5.1 使用vite vue搭建 win r 打开终端 切换到你想要搭建的盘 npm init vitelatest跟着以下步骤取名即可 cd fullStackBlognpm installnpm run dev默认在 http://localhost:5173/ 下启动了 5.2 用vscode打开项目并安装需要的插件 1、删除多余的 HelloWorld.vue 文件 2、安装…

【Vue3】理解toRef() 和 toRefs()

历史小剧场 知道可能面对的困难和痛苦,在死亡的恐惧中不断挣扎,却仍然能战胜自己,选择这条道路,这才是真正的勇气。----《明朝那些事儿》 前言 toRef 和 toRefs 是Vue3中的响应式转换工具函数 toRef: 不影响源对象的情况下&#x…

【数据结构】AVLTree实现详解

目录 一.什么是AVLTree 二.AVLTree的实现 1.树结点的定义 2.类的定义 3.插入结点 ①按二叉搜索树规则插入结点 ②更新平衡因子 更新平衡因子情况分析 ③判断是否要旋转 左单旋 右单旋 左右单旋 右左双旋 4.删除、查找和修改函数 查找结点 三.测试 1.判断是否是搜索树 …

java SpringData JPA中getOne and findById区别

在Spring Data JPA中&#xff0c;getOne和findById方法都用于根据ID获取实体&#xff0c;但它们的行为有所不同&#xff1a; 1、findById(ID id) Optional<User> optionalUser userRepository.findById(userId);if (optionalUser.isPresent()) {User user optio…

面试题-Vue2和Vue3的区别

文章目录 1. 响应式系统2. 组合式 API (Composition API)3. Fragment (碎片)4. Teleport (传送门) 5. 性能改进6. 移除或改变的功能7. 构建工具8. TypeScript 支持 Vue 2 和 Vue 3 之间存在许多重要的区别&#xff0c;这些区别涵盖了性能、API 设计、组合式 API&#xff08;Com…

AndroidStudio无法识别连接夜神模拟器

方法一(无法从根本上解决) ①进入夜神模拟器安装路径下的bin路径(安装路径可以带有中文路径) ②打开cmd窗口,输入以下代码(一定要打开模拟器) nox_adb.exe connect 127.0.0.1:62001 方法二(根本上解决) 原因:Android Studio的adb版本与夜神模拟器的adb版本不一致 ①打开And…

技术架构的发展

技术架构的演进 主要方向&#xff1a; ​ 1.提高单位时间内的吞吐量&#xff0c;提高并发度&#xff1b; ​ 2.对应用服务代码进行解耦合&#xff0c;使得开发效率得到提高&#xff1b; ​ 3.运维成本降低&#xff1b; ​ 4.成本降低&#xff0c;如购买云厂商资源&#xf…

Cortex-M7——NVIC

Cortex-M7——NVIC 小狼http://blog.csdn.net/xiaolangyangyang 一、NVIC架构 二、中断及异常编号 三、中断屏蔽寄存器&#xff08;__disable_irq和__enable_irq操作的是PRIMASK寄存器&#xff09; 四、中断分组寄存器&#xff08;SCB->AIRCR[10:8]&#xff09; 五、NVIC寄…

常用的Linux命令,linux下文件的读、写、打开、关闭append用法

vim demoq.c打开写的.c文件 内容为 按a可以编辑页面代码。按ESC退出编辑然后按shift&#xff1a;wq保存文件并退出 Linux 系统中采用三位十进制数表示权限&#xff0c;如0755&#xff0c; 0644.7 124(可读、可写、可执行&#xff09; 5 14(可读、不可写、可执行&#xff09; …

qt网络事件之QSocketNotifier

简介 QSocketNotifier用于处理网络事件的,即事件处理器 结构 #mermaid-svg-oJml91w506HmFFI2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-oJml91w506HmFFI2 .error-icon{fill:#552222;}#mermaid-svg-oJml91w50…