【问题标题】:How do I get to show Gaussian Kernel for 2d? (opencv)如何显示二维的高斯内核? (opencv)
【发布时间】:2020-08-07 05:27:00
【问题描述】:

我正在使用这个:

 blur = cv2.GaussianBlur(dst,(5,5),0)

我想通过这个来展示内核矩阵:

print(cv2.getGaussianKernel(ksize=(5,5),sigma=0))

但我收到类型错误:

TypeError: an integer is required (got type tuple)

如果我只放 5,我会得到一个 5x1 矩阵。模糊内核不是 5x5 吗?还是我缺少一些基本的东西?

【问题讨论】:

    标签: python opencv image-processing gaussian gaussianblur


    【解决方案1】:

    高斯核是可分离的。因此,生成的内核是一维的。 GaussianBlur 函数依次沿每个图像维度应用此一维内核。可分离性意味着此过程产生的结果与应用 2D 卷积(或 3D 图像在 3D 图像的情况下)完全相同。但工作量大大减少。对于您的 5x5 内核,2D 卷积执行 25 次乘法和加法,可分离实现仅执行 5+5=10。对于较大的内核,收益越来越显着。

    要查看完整的 2D 内核,请将 GaussianBlur 函数应用于全为零且中间有一个像素设置为 1 的图像。这是离散等效的 Dirac delta 函数,我们可以使用它分析线性时不变函数(==卷积滤波器)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2014-12-17
      • 2016-04-14
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多