python 进行图片的高斯处理,双边处理,均值处理
Posted 道亦无名
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 进行图片的高斯处理,双边处理,均值处理相关的知识,希望对你有一定的参考价值。
Averaging平均滤波
计算卷积框覆盖区域所有像素的平均值得到卷积的结果
Gaussian高斯模糊
现在把卷积核换成高斯核(简单来说,方框不变,将原来每个方框的值是相等的,现在里面的值是符合高斯分布的,方框中心的值最大,其余方框根据距离中心元素的距离递减,构成一个高斯小山包。原来的求平均数现在变成求加权平均数,权值就是方框里的值)
Bilateral双边滤波
能在保持边界清晰的情况下有效的去除噪音。我们已经知道高斯滤波器是求中心点邻近区域像素的高斯加权平均值。这种高斯滤波器只考虑像素之间的空间关系,而不会考虑像素值之间的关系(像素的相似度)。所以这种方法不会考虑一个像素是否位于边界。因此边界也会别模糊掉,而这正不是我们想要。
双边滤波在同时使用空间高斯权重和灰度值相似性高斯权重。空间高斯函数确保只有邻近区域的像素对中心点有影响,灰度值相似性高斯函数确保只有与中心像素灰度值相近的才会被用来做模糊运算。所以这种方法会确保边界不会被模糊掉,因为边界处的灰度值变化比较大。
代码如下:
`from matplotlib import pyplot as plt
img = cv.imread('test.png')
kernel = np.ones((5,5),np.float32)/25
dst = cv.filter2D(img,-1,kernel)
blur_1 = cv.GaussianBlur(img,(5,5),0)
blur_2 = cv.bilateralFilter(img,9,75,75)
plt.figure(figsize=(10,10))
plt.subplot(221),plt.imshow(img[:,:,::-1]),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(222),plt.imshow(dst[:,:,::-1]),plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.subplot(223),plt.imshow(blur_1[:,:,::-1]),plt.title('Gaussian')
plt.xticks([]), plt.yticks([])
plt.subplot(224),plt.imshow(blur_1[:,:,::-1]),plt.title('Bilateral')
plt.xticks([]), plt.yticks([])
plt.show()
`
执行效果:
以上是关于python 进行图片的高斯处理,双边处理,均值处理的主要内容,如果未能解决你的问题,请参考以下文章
[Python图像处理] 四十一.Python图像平滑万字详解(均值滤波方框滤波高斯滤波中值滤波双边滤波)
opencv学习笔记15种图像滤波辨析:方框均值高斯中值双边