【问题标题】:how do I implement Gaussian filter with kernel [3,3] in python?如何在 python 中使用内核 [3,3] 实现高斯滤波器?
【发布时间】:2021-05-19 03:57:49
【问题描述】:

我需要在python中实现内核大小为[3,3]的高斯滤波器2d,但我不知道该怎么做?我在 Matlab 中使用这种方法:

G = fspecial('gaussian',[3 3],0.5);
Ig = imfilter(watermarkImage,G,'same');

但是在python中,我们有一些这样的函数

blurred_img = gaussian_filter(img, Q, mode='reflect')

Q 是标准,我不知道如何使用内核 [3,3] 生成模糊图像。你能帮我解决这个问题吗?

【问题讨论】:

  • 查看answer,了解如何根据您想要的宽度计算 sigma(此处为 3)

标签: python


【解决方案1】:

scipy.ndimage.gaussian_filter 有参数truncate,它在sigma 中设置过滤器大小(截断)。你的 sigma 是 0.5,假设 3 x 3 围绕中心对称,这意味着它会在 3/2 = 1.5 = 3 sigma 处截断。所以你可以使用gaussian_filter(img, 0.5, order=0, truncate=3.0) 看看你得到的结果是否和你的matlab代码一样。

请注意fspecial 的文档,对于高斯滤波器的情况,提到不建议使用此功能,而是使用imgaussfiltimgaussfilt3

【讨论】:

    【解决方案2】:

    如果 OpenCV 是选项,那么它具有此功能,即cv2.GaussianBlur 它确实接受内核的宽度和高度(都应该是奇数和正数)和标准偏差,因此使用内核大小 [3,3] 和偏差0.5,如下:

    blur = cv2.GaussianBlur(img,(3,3),0.5)
    

    其中img 是表示图像的数组,可能是使用cv2.imread 函数创建的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      相关资源
      最近更新 更多