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天前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
102 66
|
1天前
|
SQL 数据采集 数据可视化
深入 Python 数据分析:高级技术与实战应用
本文系统地介绍了Python在高级数据分析中的应用,涵盖数据读取、预处理、探索及可视化等关键环节,并详细展示了聚类分析、PCA、时间序列分析等高级技术。通过实际案例,帮助读者掌握解决复杂问题的方法,提升数据分析技能。使用pandas、matplotlib、seaborn及sklearn等库,提供了丰富的代码示例,便于实践操作。
102 64
|
1天前
|
机器学习/深度学习 数据挖掘 开发者
探索Python编程:从基础到实战
【9月更文挑战第34天】在这篇文章中,我们将一起踏上Python编程的旅程。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。我们将从Python的基础语法开始,逐步深入到更复杂的主题,如面向对象编程和网络应用开发。我们还将探讨如何在实际项目中应用这些知识,以及如何通过持续学习和实践来提高你的编程技能。让我们一起探索Python的世界,发现它的无限可能!
|
3天前
|
存储 数据处理 开发者
深入浅出:Python编程基础与实战技巧
【9月更文挑战第32天】本文将引导读者从零开始,掌握Python编程语言的核心概念,并通过实际代码示例深入理解。我们将逐步探索变量、数据结构、控制流、函数、类和异常处理等基本知识,并结合实用案例,如数据处理、文件操作和网络请求,提升编程技能。无论您是初学者还是有一定经验的开发者,这篇文章都能帮助您巩固基础,拓展视野。
|
计算机视觉 Python
|
计算机视觉 Windows Python
|
计算机视觉 Python
|
Python 计算机视觉
|
计算机视觉 Python
|
计算机视觉 索引 编解码
下一篇
无影云桌面