【问题标题】:Discrepancies in Gaussian filters?高斯滤波器的差异?
【发布时间】:2015-02-16 05:51:59
【问题描述】:

我查看了许多声称是高斯核计算器的不同来源。但是,对于相同的输入,它们中的每一个似乎都给出了不同的答案。

这些是我查看的来源:

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

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

第一个自称是“不同的”高斯核,所以我认为它与我的预期不一致是有道理的。

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

这些都是“正确的”吗?高斯核有很多“变种”吗?

【问题讨论】:

    标签: image-processing gaussian


    【解决方案1】:

    看起来这些网站在提供指定过滤器参数的选项方面略有不同,但如果一致地指定过滤器参数,则它们是一致的(在 4 或 5 个有效数字内)。

    关键区别在于第二个站点(即http://www.embege.com/gauss/)需要选中“标准化”框,并输入标准偏差平方,以某种方式计算高斯核与其他两个网站一致。

    如您所知,2D 高斯模糊滤镜是从

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

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

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

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

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

    0.10989 0.111716 0.10989

    0.111716 0.113573 0.111716

    0.10989 0.111716 0.1098

    对于列表中的第二个站点,您需要输入分辨率 = 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 }

    【讨论】:

    • 首先,我想指出我弄乱了链接的顺序。我现在修好了,对此我深表歉意。如果您仍然对这个问题感兴趣,请记住这一点。我用 sigma = 1 (当然,这意味着 sigma squared 为 1)和 5 x 5 内核大小尝试了每一个。第二个和第三个链接的结果实际上非常相似。我想我可能以某种方式错过了 normalize 选项。但是,第一个仍然给出高达 0.01 的值。这只是舍入误差吗?
    • 已编辑以反映站点顺序。第一个站点是对离散的像素网格进行连续高斯分布的采样,并使用该部分分布的数值积分来计算归一化。另外两个只是对内核元素求和,以找到将所有元素的总和标准化为 1.0 的因子。
    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 2015-09-16
    • 2020-05-25
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多