如何显示二维高斯内核?(opencv)

Gar*_*eli 2 python opencv image-processing gaussian gaussianblur

我正在使用这个:

 blur = cv2.GaussianBlur(dst,(5,5),0)
Run Code Online (Sandbox Code Playgroud)

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

print(cv2.getGaussianKernel(ksize=(5,5),sigma=0))
Run Code Online (Sandbox Code Playgroud)

但我收到一个类型错误:

TypeError: an integer is required (got type tuple)
Run Code Online (Sandbox Code Playgroud)

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

Cri*_*ngo 8

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

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