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()  # 释放所有窗体

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

相关文章
|
8月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
404 0
|
机器学习/深度学习 监控 算法
基于mediapipe深度学习的手势数字识别系统python源码
本内容涵盖手势识别算法的相关资料,包括:1. 算法运行效果预览(无水印完整程序);2. 软件版本与配置环境说明,提供Python运行环境安装步骤;3. 部分核心代码,完整版含中文注释及操作视频;4. 算法理论概述,详解Mediapipe框架在手势识别中的应用。Mediapipe采用模块化设计,包含Calculator Graph、Packet和Subgraph等核心组件,支持实时处理任务,广泛应用于虚拟现实、智能监控等领域。
|
9月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
1492 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
9月前
|
机器学习/深度学习 数据采集 算法
基于mediapipe深度学习的运动人体姿态提取系统python源码
本内容介绍了基于Mediapipe的人体姿态提取算法。包含算法运行效果图、软件版本说明、核心代码及详细理论解析。Mediapipe通过预训练模型检测人体关键点,并利用部分亲和场(PAFs)构建姿态骨架,具有模块化架构,支持高效灵活的数据处理流程。
|
9月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
11月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
11月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
10月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
577 0
|
11月前
|
机器人 API 数据安全/隐私保护
QQ机器人插件源码,自动回复聊天机器人,python源码分享
消息接收处理:通过Flask搭建HTTP服务接收go-cqhttp推送的QQ消息47 智能回复逻辑
|
机器学习/深度学习 算法 Java
OpenCV的理解及其应用
以上只是OpenCV的冰山一角,它的功能远不止这些。如果你对计算机视觉有兴趣,我强烈推荐你去尝试使用OpenCV,相信你会在使用过程中发现更多的有趣和实用的功能。
447 8

推荐镜像

更多