opencv-33 图像平滑处理-中值滤波cv2.medianBlur()

中值滤波是一种常见的图像处理滤波技术,用于去除图像中的噪声。它的原理是用一个滑动窗口(也称为卷积核)在图像上移动,对窗口中的像素值进行排序,然后用窗口中像素值的中值来替换中心像素的值。这样,中值滤波可以有效地消除图像中的椒盐噪声、激光斑点等离群值。

中值滤波与前面介绍的滤波方式不同,不再采用加权求均值的方式计算滤波结果。它用邻域内所有像素值的中间值来替代当前像素点的像素值。

基本原理

中值滤波会取当前像素点及其周围临近像素点(一共有奇数个像素点)的像素值,将这些像素值排序,然后将位于中间位置的像素值作为当前像素点的像素值。

例如,针对图 7-27 中第 4 行第 4 列的像素点,计算它的中值滤波值。

将其邻域设置为 3×3 大小,对其 3×3 邻域内像素点的像素值进行排序(升序降序均可),

按升序排序后得到序列值为:[66,78,90,91,93,94,95,97,101]。在该序列中,处于中心位置(也叫中心点或中值点)的值是"93",因此用该值替换原来的像素值 78,作为当前点的新像素值,

处理结果如图 7-28 所示。

函数语法

在 OpenCV 中,实现中值滤波的函数是 cv2.medianBlur(),其语法格式如下:

dst = cv2.medianBlur( src, ksize)

式中:
 dst 是返回值,表示进行中值滤波后得到的处理结果

 src 是需要处理的图像,即源图像 。它能够有任意数量的通道,并能对各个通道独立处

理。图像深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一种。

** ksize 是滤波核的大小。**滤波核大小是指在滤波处理过程中其邻域图像的高度和宽度。

需要注意,核大小必须是比 1 大的奇数,比如 3、5、7 等

实验:针对噪声图像,对其进行中值滤波,显示滤波的结果

代码如下:

复制代码
import cv2
o=cv2.imread("lenaNoise.png")
r=cv2.medianBlur(o,3)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果:

其中左图是原始图像,右图是中值滤波后的处理结果图像。

从图中可以看到,由于没有进行均值处理,中值滤波不存在均值滤波等滤波方式带来的细节模糊问题。

在中值滤波处理中,噪声成分很难被选上,所以可以在几乎不影响原有图像的情况下去除全部噪声。但是由于需要进行排序等操作,中值滤波需要的运算量较大。

相关推荐
欲儿12 分钟前
magicCamera—魔术师的 AR 卡牌应用
opencv·安卓·魔术师
AI医影跨模态组学17 分钟前
J Clin Oncol(IF=43.4)美国Cedars-Sinai医学中心等团队:基于计算组织学人工智能的晚期胰腺癌化疗选择预测性生物标志物的开发与验证
人工智能·机器学习·论文·医学·医学影像·影像组学
冬奇Lab33 分钟前
RAG 系列(十六):Graph RAG——用知识图谱解决多跳关系问题
人工智能·llm
冬奇Lab41 分钟前
一天一个开源项目(第101篇):OpenHuman - 真正懂你的本地优先个人 AI 超级助手
人工智能·开源·资讯
云上码厂1 小时前
专业的学术会议 / 讲座视频与幻灯片托管、回放平台(可以使用SlidesLive 学英语入门清单)
人工智能
无心水1 小时前
【Hermes:安全、权限与生产环境】40、运行 Hermes 前的生命线:安全审计清单与 11 个必须检查的配置项
人工智能·安全·mcp协议·openclaw·养龙虾·hermes·honcho
温九味闻醉1 小时前
关于腾讯广告算法大赛2025项目分析3-重读
人工智能·机器学习
十铭忘1 小时前
AI画架构图的方法
人工智能
chatexcel1 小时前
AI知识库教程:基于ChatExcel实现规则文档、Excel数据与业务分析联动
人工智能·excel
Hali_Botebie2 小时前
【图卷积网络】GCN是AXΘ 和CNN是AX
网络·人工智能·cnn