分享

python+opencv图像处理(二十二)

 pythonjava学习 2021-04-06

中值滤波

中值滤波是比较常用的一种图像平滑处理方法。
其基本思路是通过滤波器遍历图像,取滤波器区域像素值中值为新的像素值。
表示为数学表达式如下:
其中,f(x,y)g(x,y)分别是原图像和处理后图像,(x,y),(s,t)均为像素点坐标。
如果是(3*3)的模板,就是对这3*3个像素点的值进行排序,(x,y)取值为排序之后的中值。
可以用opencv自带的函数medianBlur()实现中值滤波,代码如下:
其运行结果如下,左图为加了噪声的原图,右图为中值滤波后的图。

从上图可看出,中值滤波可以有效地消除噪声,并且相对于均值滤波,它能够更好地保护边缘信息,图像的视觉效果更好。
当然,也可以逐像素点对图像进行运算,来求得中值并进行赋值,代码如下图所示:
代码中用到了自定义的函数如下:
其中paixu()是对序列a进行从大到小的排序,median()是求序列a的中值,twotoone()是将列表从二维降到一维,这三个自定义的函数的目的都是为了求中值。
可能有更好的办法,只是我没有找到python或者numpy中自带的求中值的函数,只能自己写了。
其运行结果如下:

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多