> 文章列表 > Opencv+Python笔记(六)图像的平滑处理

Opencv+Python笔记(六)图像的平滑处理

Opencv+Python笔记(六)图像的平滑处理

图像在获取、传输的过程中,可能会受到干扰的影响,会产生噪声,噪声是一种出错了的信号,噪声会造成图像粗糙。
图像平滑处理的目的是去除图像中的噪声和不必要的细节,使图像更加清晰和易于分析。常用的平滑滤波器包括高斯滤波、中值滤波和均值滤波等。这些滤波器都采用一定的卷积方法对像素点进行平滑处理

1.均值滤波

均值滤波是数字图像处理中常用的一种线性滤波方法,其原理是取像素周围邻域内的像素灰度值的平均值作为该像素的输出灰度值即用卷积框覆盖区域内所有像素的平均值来代替中心元素。。在这个过程中,图像中每个像素点都将被使用到,因此可以实现平滑图像的效果。

在这里插入图片描述
均值为86 故中间像素点像素改为86

Opencv API:

cv2.blur(src, ksize, anchor, borderType)

输入:1.src:输入的图像;2.ksize:卷积核的大小;3.anchor:锚点位置,默认值(-1,-1),表示核中心;4.borderType:边界扩展方式
输出:滤波后得到图像

2.高斯滤波

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。 通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

概率函数:在这里插入图片描述

Opencv API:

cv2.GaussianBlur(src, ksize, sigmaX, sigmaY, borderType)

1.src:输入的图像;2.ksize:高斯卷积核的大小。注意:卷积核的高度和宽度都应为奇数,且可以不同;3.sigmaX:水平方向的标准差;4.sigmaY:垂直方向的标准差,默认值为0,表示与sigmaX相同;5.borderType:边界类型

3.中值滤波

中值滤波会取当前像素点及其周围临近像素点(一共有奇数个像素点)的像素值,将这些像素值排序,然后将位于中间位置的像素值作为当前像素点的像素值。
在这里插入图片描述
像素点排序[60, 66, 78, 91, 93, 94, 95, 97, 101] 中值为93,所以滤波后中心元素的像素点会变为93

Opencv API:

cv2.medianBlur(src, ksize)

参数: src: 输入的图像 ksize:卷积核的大小

相比高斯滤波和均值滤波 中值滤波效果一般会好一些