我想在MATLAB中使用 imgaussfilt 设计一个二维高斯低通滤波器,使其 95%的质量位于预定义的半径< / strong>即可。如果 sigma (标准偏差)设置为 0.5 (默认值),我该如何计算'FilterSize'(高斯滤波器的大小)?
答案 0 :(得分:0)
不,不,不...标准偏差控制过滤器的扩散,因此较小的西格玛值意味着过滤器非常窄,而较大的值意味着它被广泛传播。为了找出其质量在给定半径内的多少,你需要做一些数学......事实证明,二维高斯分布与Rayleigh distribution有关,所以你真正需要的是95%标准瑞利分布的点,然后你可以相应地缩放西格玛。
使用维基百科页面上的Rayleigh CDF公式,很容易发现,对于sigma值为1(归一化分布),95%点的半径为2.45。因此,您应该缩放西格玛以相应地改变分布宽度。
过滤器大小取决于您要使用的过滤器数量。如果你把它做得太小,并且你过滤截断过滤器,那么它将不是一个很好的近似高斯。另一方面,太大了,这将是毫无意义的。您可以做的是使用相同的等式来找到您不再对结果感兴趣的点的半径(例如,99%,或者如果您真的想要,您甚至可以使用95%,但请记住您缺少5%的数据,否则将通过过滤器。