0

我现在阅读了大量关于高斯模糊的不同解释,我真的很困惑。

我大致了解高斯模糊是如何工作的。 http://en.wikipedia.org/wiki/Gaussian_blur

我知道我们选择 3*sigma 作为掩码的最大尺寸,因为值会变得非常小。

但我的三个问题是:

  1. 如何仅使用 sigma 创建高斯蒙版?

  2. 如果我理解正确,掩码会给我权重,然后我将掩码放在左上角的像素上。我将掩码中每个像素值的权重相乘。然后我将蒙版移动到下一个像素。我对所有像素都这样做。它是否正确?

  3. 我也知道一维蒙版更快。所以我为 x 创建了一个蒙版,为 y 创建了一个蒙版。假设我的面具看起来像这样。(3x3)

1 2 1

2 4 2

1 2 1

我的 x 和 y 面具会是什么样子?

4

1 回答 1

2

1-创建高斯蒙版的解决方案是设置一个NN矩阵,使用N=3*sigma(或更少,如果你想要一个更粗略的解决方案),并用 填充每个(i,j)条目exp(-((i-N/2)^2 + (j-N/2)^2)/(2*sigma^2))。正如评论所提到的,N=3*sigma仅仅意味着你将你的高斯截断在一个“足够小”的阈值。

2-是的-您理解正确。一个小细节是,您需要通过权重的总和进行归一化(即,将您所说的结果除以矩阵中所有元素的总和)。另一种选择是您可以构建已经归一化的矩阵,这样您就不需要在最后执行此归一化(归一化的高斯公式变为exp(-((i-N/2)^2 + (j-N/2)^2)/(2*sigma^2))/(2*pi*sigma)

3-在您的特定情况下,一维版本是[1 2 1](即,您的xy掩码),因为您可以获得通过乘法给出的矩阵transpose([1 2 1]) * [1 2 1]。一般来说,您可以使用与上述类似的一维高斯公式直接构建这些一维高斯:(exp(-((i-N/2)^2)/(2*sigma^2)) 或归一化版本exp(-((i-N/2)^2)/(2*sigma^2)) / (sigma*sqrt(2*pi))

于 2012-12-12T01:22:00.980 回答