python学opencv|读取图像(五十五)使用cv2.medianBlur()函数实现图像像素中值滤波处理

【1】引言

在前述学习过程中,已经探索了取平均值的形式进行图像滤波处理。

均值滤波的具体的执行对象是一个nXn的像素核,对这个像素核内所有像素点的BGR值取平均值,然后把这个平均的BGR值直接赋给像素核中心位置的核心像素点,由此实现图像滤波。

实质上,这让图像变得更加模糊。

相关文章链接为:

python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素均值处理-CSDN博客

既然有均值滤波,就会有中值滤波,这就是本次文章所要讲述的内容。

中值滤波调用的函数为:cv2.medianBlur()。

【2】官网教程

点击下方链接,直达cv2.medianBlur()函数的官网教程:OpenCV: Image Filtering

官网页面的解释为:

++图1 cv2.medianBlur()函数的官网说明++

官网对cv2.medianBlur()函数的参数解释为:

void cv::medianBlur (

InputArray src, #输入图像

OutputArray dst, #输出图像

int ksize ) #像素核大小

【3】代码测试

首先是引入模块和初始图像:

python 复制代码
import cv2 as cv  # 引入CV模块

# 读取图片
srcm = cv.imread('srcx.png')  # 读取图像srcx.png

然后进行中值滤波操作:

python 复制代码
#滤波计算
src1 = cv.medianBlur(srcm,3)  # 图像取平均值,像素核大小为(3,3)
src2 = cv.medianBlur(srcm,5)  # 图像取平均值,像素核大小为(5,5)
src3 = cv.medianBlur(srcm,7)  # 图像取平均值,像素核大小为(7,7)

之后显示和保存图像:

python 复制代码
# 显示结果
cv.imshow('srcm ', srcm)
cv.imshow('src1 ', src1)
cv.imshow('src2 ', src2)
cv.imshow('src3 ', src3)
cv.imwrite('src1.png',src1)
cv.imwrite('src2.png',src2)
cv.imwrite('src3.png',src3)
# 窗口控制
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

代码运行相关的图像有:

++图2 初始图像srcx.png++

++++

++图3 中值滤波图像src1.png++

++图4 中值滤波图像src2.png++

++图5 中值滤波图像src3.png++

和调用cv2.blur()函数使用均值滤波处理一样,调用cv2.medianBlur()函数进行中值滤波处理后,由图2到图5可见,随着像素核的增大,图像越来越模糊。这提醒我们,控制像素核的大小,可以进一步控制图像的模糊程度。

【4】细节说明

和调用cv2.blur()函数使用均值滤波处理不同,cv2.blur()函数需要给出(nXn)大小的像素核,调用cv2.medianBlur()函数进行中值滤波处理使用的像素核只需要写出边长n,但这个边长也应该是奇数,cv2.medianBlur()函数会自动根据这个边长划定一个正方形的像素核。

像素核使用奇数大小会比较好,因为奇数大小会在最中间围成一个方格,这个方格就是核心方格,中值计算的值直接赋给这个核心方格。

++图6 滤波方式对比++

【5】总结

掌握了使用python+opencv实现调用cv2.medianBlur()函数进行中值滤波处理图像的技巧。

相关推荐
梦丶晓羽32 分钟前
自然语言处理:最大期望值算法
人工智能·python·自然语言处理·高斯混合模型·最大期望值算法
mlxg9999938 分钟前
hom_mat2d_to_affine_par 的c#实现
算法·计算机视觉·c#
君科程序定做2 小时前
PDFMathTranslate安装使用
python
Linzerox3 小时前
Pycharm 取消拼写错误检查(Typo:in word xxx)
python·pycharm
千里码aicood3 小时前
[含文档+PPT+源码等]精品基于Python实现的校园小助手小程序的设计与实现
开发语言·前端·python
Icomi_4 小时前
【神经网络】0.深度学习基础:解锁深度学习,重塑未来的智能新引擎
c语言·c++·人工智能·python·深度学习·神经网络
蠟筆小新工程師4 小时前
Deepseek可以通过多种方式帮助CAD加速工作
开发语言·python·seepdeek
NoBarLing4 小时前
python将目录下的所欲md文件转化为html和pdf
python·pdf·html
岱宗夫up5 小时前
【Python】Django 中的算法应用与实现
数据库·python·opencv·django·sqlite
天道有情战天下6 小时前
python flask
开发语言·python·flask