欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

高斯滤波原理及python代码(opencv代码)

程序员文章站 2024-03-25 22:11:16
...

Reference:https://blog.csdn.net/angelia_yue/article/details/105794344

1.什么是高斯滤波

高斯滤波器是一种线性滤波器,能够有效的抑制噪声

2.高斯滤波作用

高斯滤波器对于抑制服从正态分布的噪声非常有效

3.计算步骤

1. 根据高斯函数和像素点的位置,计算滤波器每个点的值,对滤波器的值做归一化,得到权重矩阵

高斯滤波原理及python代码(opencv代码)
高斯滤波原理及python代码(opencv代码)

2. 图像中的区域每个点 高斯滤波原理及python代码(opencv代码) 滤波器矩阵的值 
高斯滤波原理及python代码(opencv代码)

3. 对得到的计算结果的矩阵求和,得到的和就是原图像矩阵中心点的滤波之后的值

高斯滤波原理及python代码(opencv代码)

高斯滤波原理及python代码(opencv代码)

4.python代码实现

#自定义图像矩阵
img = np.array([[14,15,16],
              [24,25,26],
              [34,35,36]])
img
#此函数为计算高斯滤波
def gaussian(img,sigma1):
    gaussian1 = np.zeros([img.shape[0], img.shape[1]])
    for i in range(3):
        for j in range(3):
        	#第一步里面的公式
            gaussian1[i, j] = np.round(math.exp((-1/(2*sigma1**2))*(np.square(i-1) + np.square(j-1)))/(2*math.pi*sigma1**2)/0.479,3)
    print(gaussian1*img)
    print(np.sum(gaussian1*img))
#调用
gaussian(img,1.5)

效果

[[1.33  1.77  1.52 ]
 [2.832 3.7   3.068]
 [3.23  4.13  3.42 ]]
 
25.0

5.opencv实现

import cv2

img=cv2.imread('图片路径')
#(3, 3)表示高斯滤波器的长和宽都为3,1.5表示滤波器的标准差
out=cv2.GaussianBlur(img,(3,3),1.5)
cv2.imwrite('out.jpg',out)
cv2.imshow('result',out)
cv2.waitKey(0)
cv2.destroyAllWindows()

参考文献:https://blog.csdn.net/linu32/article/details/104563553