高斯滤波器的差异?

Discrepancies in Gaussian filters?

我查看了许多自称是高斯核计算器的不同来源。然而,这些中的每一个似乎都对相同的输入给出了不同的答案。

这些是我查看的来源:

  1. http://dev.theomader.com/gaussian-kernel-calculator/
  2. http://www.embege.com/gauss/
  3. http://softwarebydefault.com/2013/06/08/calculating-gaussian-kernels/

第三个是唯一一个给我预期输出的(使用维基百科的公式并归一化)。

第一个自称为 "different" 高斯内核,所以我想它与我的预期不符是有道理的。

查看源代码,第一个在实现上与我预期的明显不同,尽管后两个在实现上看起来与我预期的非常相似。不过,我不确定我是否完全遵循了第二个来源中所做的事情。

这些都是"correct"吗?高斯核有很多吗"variations"?

看起来这些站点在显示指定过滤器参数选项的方式上略有不同,但如果过滤器参数指定一致,则它们是一致的(在 4 或 5 位有效数字内)。

主要区别在于第二个站点(即 http://www.embege.com/gauss/)需要选中 "normalize" 框,并输入标准差 平方 , 以与其他两个站点一致的方式计算高斯核。

如您所知,二维高斯模糊滤镜是根据

计算的

其中 x 和 y 是距内核中心的像素距离,sigma 是标准偏差。

计算高斯滤波器内核的第一步是 select 内核大小和标准偏差。内核大小 k 始终是一个奇数,3, 5, 7... 并给出一个二维高斯滤波器内核作为 k x k 矩阵。

第二个是使用距中心像素的像素 x 和 y 位移计算内核在距中心的每个像素位移处的值。最后对kernel的每个元素进行归一化,使得filter所有元素的和等于1.0.

例如,考虑来自第三个站点的 "rose" 示例,这是一个权重(标准差)为 5.5 的 3x3 高斯内核。第三页作者表示归一化后过滤值为

列表中的第一个站点,如果您输入 Sigma =5.5 和 Kernel Size =3,则得到:

0.10989 0.111716 0.10989

0.111716 0.113573 0.111716

0.10989 0.111716 0.1098

对于列表中的第二个站点,您需要输入 Resolution = 3x3,sigma squared = 30.25(5.5 的平方),同时选中 Normalize 框。

第二个站点的结果是

{ 0.1098867834673961, 0.11171818781545209, 0.1098867834673961,

0.11171818781545209,0.11358011486860732,0.11171818781545209,

0.1098867834673961,0.11171818781545209,0.1098867834673961 }