【发布时间】:2017-02-04 20:19:15
【问题描述】:
我想在 MATLAB 中使用 imgaussfilt 设计一个二维高斯低通滤波器,使其 95% 的质量位于预定义的 半径。如果 sigma(标准差)设置为 0.5(默认),我应该如何计算 'FilterSize'(高斯滤波器的大小)?
【问题讨论】:
我想在 MATLAB 中使用 imgaussfilt 设计一个二维高斯低通滤波器,使其 95% 的质量位于预定义的 半径。如果 sigma(标准差)设置为 0.5(默认),我应该如何计算 'FilterSize'(高斯滤波器的大小)?
【问题讨论】:
不,不,不... 标准差控制过滤器的传播,因此 sigma 的值较小意味着过滤器很窄,而较大的值意味着它被广泛传播。要找出它的质量在给定半径内有多少,你需要做一些数学运算……结果是二维高斯分布与Rayleigh distribution 相关,所以你真正需要的是 95% 的点一个标准化的瑞利分布,那么您可以相应地缩放 sigma。
使用 Rayleigh CDF 的 Wikipedia 页面上的方程,很容易发现对于 sigma 值为 1(归一化分布),95% 的点位于半径 2.45 处。因此,您应该缩放 sigma 以相应地改变分布宽度。
过滤器大小取决于您要使用多少过滤器。如果您将其设置得太小,并且您将过滤器截断太多,那么它将不是一个很好的高斯近似值。另一方面,太大,这将毫无意义。你可以做的是使用相同的方程来找到你不再对结果感兴趣的点的半径(例如 99%,或者如果你真的想要,你甚至可以使用 95%,但请记住你错过了5% 的数据,否则会通过过滤器)。
【讨论】: