【图像处理】OpenCV+Python图像处理入门教程(六)图像平滑处理

       相信很多小伙伴都听过“滤波器”这个词,在通信领域,滤波器能够去除噪声信号等频率成分,然而在我们OpenCV中,“滤波”并不是对频率进行筛选去除,而是实现了图像的平滑处理。接下来,这篇随笔介绍使用OpenCV进行图像处理的第六章 图像平滑处理。

6  图像平滑处理

未经处理的图像含有噪声的影响,所以我们希望尽可能保留原图像的信息,过滤掉图像内部的噪声像素,得到平滑图像,这个过程称作图像的平滑处理。

一幅图像中,若某一像素点与周围像素值差异过大,该像素点很可能是噪声,则需要把值调整为周围的像素点的近似值。如图所示:

【图像处理】OpenCV+Python图像处理入门教程(六)图像平滑处理

那么,如何对图像进行平滑处理过滤噪声呢?OpenCV提供了多种计算方法,有:

均值滤波

方框滤波

高斯滤波

中值滤波

双边滤波

2D卷积滤波(自定义滤波)

 

6.1  均值滤波

均值滤波是指使用当前N×N个像素值的均值来替代当前像素值,例如使用周围3×3的像素点对第3行第3列像素值做均值滤波,如图:

【图像处理】OpenCV+Python图像处理入门教程(六)图像平滑处理

新值=(179+176+175+176+31+179+180+185+181)/ 9 = 162

也相当于,对上图黄色区域矩阵乘以3×3的卷积核,该均值滤波3×3的卷积核如下(右侧矩阵):

【图像处理】OpenCV+Python图像处理入门教程(六)图像平滑处理

OpenCV提供了cv2.blur()函数进行均值滤波,举例程序如下:

1 #针对噪声图像,使用不同大小的卷积核对其进行均值滤波,并显示均值滤波的情况 2 import cv2 3 o=cv2.imread('E:\python_opencv\lena.jpg') 4 r5=cv2.blur(o,(5,5)) #5×5卷积核进行均值滤波 5 r30=cv2.blur(o,(30,30)) #30×30卷积核进行均值滤波 6 cv2.imshow('original',o) 7 cv2.imshow('result5',r5) 8 cv2.imshow('result30',r30) 9 cv2.waitKey() 10 cv2.destroyAllWindows()

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywdxj.html