Python-OpenCV-图像滤波

图像除了包含对应灰度或彩色信息,还包含一些无用的噪点等造成的不均匀扭曲。滤波可以清除这些噪点,平滑图像细节,使得图像更加清晰。

均值滤波

均值滤波器的原理是将每个像素的灰度值替换为其周围像素灰度值的平均值。其核心思想是去除图像中的高频噪声,同时保留图像中的低频信息。

在进行均值滤波操作时,需要定义一个滤波模板(卷积核),通常是一个矩形区域,其大小由模板的宽度和高度决定。在模板中的每一个像素,都会与该像素周围的像素进行加权平均,从而得到新的像素值。

# 均值滤波

# (5,5)为滤波模板大小,必须为正奇数

img_blur=cv2.blur(img,(5,5))

高斯滤波

高斯滤波可以对图像进行平滑处理,减少噪声和细节,常用于预处理和特征提取等领域。其思想是使用高斯分布来模糊图像,使得图像中的高频噪声被滤除,从而达到平滑图像的效果。

高斯分布是一种常见的概率分布,它的形状是一个钟形曲线,具有对称性,随着距离坐标中心点越远,其值逐渐变小。在高斯滤波的卷积核中,离中心越近,权重越高。

# 高斯滤波

'''

img为要处理的图像;

(5,5)为高斯内核的大小;

0为X方向高斯核标准差;

后面默认即可

'''

img_gauss=cv2.GaussianBlur(img,(5,5),0)

中值滤波

中值滤波与均值滤波非常相似,只是中值滤波赋给中间核心元素的数值是周边数值的中位数而非平均数。其原理是用像素点邻域灰度值的中值来代替该像素点的灰度值,主要是利用中值不受分布序列极大值和极小值影响的特点,让周围的像素值接近真实的值从而消除孤立的噪声点。

对于图像处理来说,非常适用去除于在不要求图像细节下的椒盐噪声以及脉冲噪声,能够克服线性滤波器带来的图像细节模糊等弊端,能够有效保护图像边缘信息,是非常经典的平滑噪声处理方法。

# 中值滤波

# 5代表滤波核的大小

img_median=cv2.medianBlur(img,5)

双边滤波器

双边滤波器是一种非线性滤波器,它可以保留图像边缘信息的同时进行平滑处理,常用于去除图像中的噪声。

双边滤波器在空间域和灰度值域均使用了高斯滤波器,但是在进行灰度值域的滤波时,它使用了不同于高斯分布的加权函数。双边滤波器的加权函数有两个参数:一个是空间域的标准差,用于控制像素之间距离的影响;另一个是灰度值域的标准差,用于控制像素之间灰度值差异的影响。这样就可以保留图像中的边缘信息,同时去除噪声。

# 双边滤波器

'''

15为滤波器的直径;

120为颜色空间的标准差,用于控制灰度值域的影响;

100为空间域的标准差,用于控制像素之间距离的影响

'''

img_bilateral=cv2.bilateralFilter(img,15,120,100)

filter2D卷积滤波

利用卷积运算原理来构成滤波器,对图像进行平滑处理、锐化、特征提取等各种图像处理操作。

# filter2D卷积滤波

kernel = np.ones((5, 5), np.float32) / 25

'''

ddepth为目标图像深度;

kernel为卷积核;

后面的参数默认即可

'''

img_2D = cv2.filter2D(img, ddepth=0, kernel=kernel)

你可能感兴趣的:(Python,OpenCV,python,opencv,计算机视觉,人工智能,图像处理)