OpenCV均值、中值滤波器的讲解及实战应用(附Python源码)

简介: OpenCV均值、中值滤波器的讲解及实战应用(附Python源码)

需要源码和图片请点赞关注收藏后评论区留言私信~~~

在尽量保留原图像信息的情况下,去除图像内噪声、降低细节层次信息等一系列过程,叫作图像的平滑处理(或图像的模糊处理)。实现平滑处理最常用的工具就是滤波器。通过调节滤波器的参数,可以控制图像的平滑程度。OpenCV提供了种类丰富的滤波器,每种滤波器使用的算法均不同,但都能对图像中的像素值进行微调,让图像呈现平滑效果

一、均值滤波器

图像中可能会出现这样一种像素,该像素与周围像素的差别非常大,导致视觉上就能看出该像素无法与周围像素组成可识别的图像信息,降低了整个图像的质量,这种格格不入的像素就是图像的噪声,如果图像中的噪声都是随机的纯黑像素和纯白像素,这种噪声称作椒盐噪声,如下图所示

以一个像素为核心,其周围像素可以组成一个n行n列的矩阵,这样的矩阵结构在滤波操作中被称为滤波核,矩阵的行和列决定了滤波核的大小

3×3的滤波核

均值滤波器可以把图像中的每一个像素都当成滤波核的核心,然后计算所有像素的平均值,最后让核心像素值等于这个平均值

均值滤波计算过程如下

OpenCV将均值滤波器封装成blur方法 语法格式如下

dst=cv2.blur(src,ksize,anchor,borderType)

ksize (高、宽)滤波核大小 滤波核越大 处理之后的图像就越模糊

anchor 可选参数 滤波核的锚点

下面对花朵图像进行均值滤波操作

由下图可见 滤波核越大 那么进行滤波之后的图像就越模糊

部分代码如下

import cv2
img = cv2.imread("amygdaus triloba.jpg")  # 读取原图
dst1 = cv2.blur(img, (3,3))  # 使用大小为3*3的滤波核进行均值滤波
dst2 = cv.blur(img, (5, 5))  # 使用大小为5*5的滤波核进行均值滤波
dst3 = v2.blur(img, (9, 9))  # 使用大小为9*9的滤波核进行均值滤波
cv2.imshow(img", img)  # 显示原图
cv2.imshow("3*3", dst1)  # 显示滤波效果
cv2.imshow("5*5", dst2)
cv2.imsow("9*9", dst3)
cv2.waitKey()  # 按下任何键盘按键后
cv2.destroyAllWindows()  # 释放所有窗体

二、中值滤波器

中值滤波器的原理与均值滤波器非常相似,唯一的不同就是不计算像素的平均值,而是将所有像素值排序,把最中间的像素值取出,赋值给核心像素

中值滤波计算原理如下图

OpenCV将中值滤波器封装成medianblur方法 语法如下

dst=cv2.medianBlur(src,ksize)

ksize 滤波核的边长 必须是大于1的奇数 该方法根据此边长自动创建一个正方形的滤波核

处理效果如下

部分代码如下

import cv2ad("amygdalus triloba.jpg")  # 读取原图
dst1 = cv2.mednBlur(img, 3)  # 使用宽度为3的滤波核进行中值滤波
dst2 = cv2.(img, 5)  # 使用宽度为5的滤波核进行中值滤波
dst3 = cv2(img, 9)  # 使用宽度为9的滤波核进行中值滤波
cv2.imshow("img", img)  # 显示原图
cv2.imhow("3", dst1)  # 显示滤波效果
cv2.imshow("5", dst2)
cv2.imshw("9",dst3)
cv2.waitKey()  # 按下任何键盘按键后
cv2.destroyAllWindows()  # 释放所有窗体

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
1月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
266 7
|
1月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
1月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
225 0
|
1月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
344 0
|
测试技术 Python
Python中的装饰器应用与实践
在Python编程中,装饰器是一种强大的工具,能够优雅地扩展和修改函数或方法的行为。本文将深入探讨Python中装饰器的作用、原理以及实际应用场景,帮助读者更好地理解并运用装饰器提升代码的可维护性和灵活性。
|
数据采集 数据可视化 大数据
Python在大数据处理中的应用实践
Python在大数据处理中扮演重要角色,借助`requests`和`BeautifulSoup`抓取数据,`pandas`进行清洗预处理,面对大规模数据时,`Dask`提供分布式处理能力,而`matplotlib`和`seaborn`则助力数据可视化。通过这些工具,数据工程师和科学家能高效地管理、分析和展示海量数据。
651 4
|
12月前
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践感悟####
本文作为一篇技术性文章,旨在深入探讨Python编程中设计模式的应用价值与实践心得。在快速迭代的软件开发领域,设计模式如同导航灯塔,指引开发者构建高效、可维护的软件架构。本文将通过具体案例,展现设计模式如何在实际项目中解决复杂问题,提升代码质量,并分享个人在实践过程中的体会与感悟。 ####
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
设计模式 监控 算法
Python编程中的设计模式应用与实践感悟###
在Python这片广阔的编程疆域中,设计模式如同导航的灯塔,指引着开发者穿越复杂性的迷雾,构建出既高效又易于维护的代码结构。本文基于个人实践经验,深入探讨了几种核心设计模式在Python项目中的应用策略与实现细节,旨在为读者揭示这些模式背后的思想如何转化为提升软件质量的实际力量。通过具体案例分析,展现了设计模式在解决实际问题中的独特魅力,鼓励开发者在日常编码中积极采纳并灵活运用这些宝贵的经验总结。 ###
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践###
【10月更文挑战第18天】 本文深入探讨了Python编程中设计模式的应用与实践,通过简洁明了的语言和生动的实例,揭示了设计模式在提升代码可维护性、可扩展性和重用性方面的关键作用。文章首先概述了设计模式的基本概念和重要性,随后详细解析了几种常用的设计模式,如单例模式、工厂模式、观察者模式等,在Python中的具体实现方式,并通过对比分析,展示了设计模式如何优化代码结构,增强系统的灵活性和健壮性。此外,文章还提供了实用的建议和最佳实践,帮助读者在实际项目中有效运用设计模式。 ###
152 0

推荐镜像

更多
下一篇
oss云网关配置