我已经看过许多声称是高斯核计算器的不同来源。然而,这些似乎都给出了相同输入的不同答案。
这些是我看到的来源:
第三个是唯一一个给我预期输出的人(使用维基百科中的公式并进行规范化)。
第一个称自己为"不同的"高斯内核,所以我认为它不符合我的预期是有道理的。
查看源代码,第一个在实现上明显不同于我的预期,尽管最后两个在实现中看起来非常类似于我的预期。尽管如此,我不确定我是否完全遵循第二个来源所做的事情。
这些都是正确的"?有很多"变种"高斯内核?
答案 0 :(得分:2)
看起来网站在如何呈现指定过滤器参数的选项方面略有不同,但如果一致地指定过滤器参数,则它们是一致的(在4或5个有效数字内)。
关键区别是第二个站点(即http://www.embege.com/gauss/)需要选中“normalize”框,并输入标准差平方来计算高斯内核与其他两个网站一致的方式。
如您所知,2D高斯模糊滤镜是根据
计算的
其中x和y是距离内核中心的像素距离,sigma是标准偏差。
计算高斯滤波器内核的第一步是选择内核大小和标准偏差。内核大小k总是奇数,3,5,7 ......并且给出了一个2D高斯滤波器内核作为k x k矩阵。
第二种是使用来自中心像素的x和y位移(以像素为单位)计算每个像素从中心位移的内核值。最后,规范化内核的每个元素,使过滤器的所有元素之和等于1.0。
例如,考虑第三个站点的“rose”示例,这是一个3x3高斯内核,权重(标准偏差)为5.5。第三页的作者表示在规范化后过滤器值为
列表中的第一个站点,如果输入Sigma = 5.5且内核大小= 3,则给出:
0.10989 0.111716 0.10989
0.111716 0.113573 0.111716
0.10989 0.111716 0.1098
对于列表中的第二个站点,您需要输入Resolution = 3x3,sigma square = 30.25(5.5的平方),并检查Normalize框。
第二个网站的结果是
{ 0.1098867834673961,0.11171818781545209,0.1098867834673961,
0.11171818781545209,0.11358011486860732,0.11171818781545209,
0.1098867834673961,0.11171818781545209,0.1098867834673961 }