使用高斯模糊

时间:2012-12-11 21:01:10

标签: image image-processing gaussian

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

我粗略地理解高斯模糊是如何工作的。 http://en.wikipedia.org/wiki/Gaussian_blur

我知道我们选择3 * sigma作为我们蒙版的最大尺寸,因为这些值会非常小。

但我的三个问题是:

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

  2. 如果我理解正确的话,面具会给我权重     我将掩码放在左上角的像素上。我乘以权重     掩码中像素的每个值。然后我将面具移动到     下一个像素。我为所有像素执行此操作。这是对的吗?

  3. 我也知道1D面具更快。所以我为x和a创建了一个掩码 面具为y。让我们说我的面具看起来像这样。 (3×3)
  4.   

    1 2 1

         

    2 4 2

         

    1 2 1

    我的x和y面具怎么样?

1 个答案:

答案 0 :(得分:2)

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

是的 - 是的 - 你理解正确。一个小细节是你需要通过权重之和进行归一化(即,将你所说的结果除以矩阵所有元素的总和)。另一个选项是你可以构建已经规范化的矩阵,这样你就不需要在最后执行这种规范化(标准化的高斯公式变为[1 2 1]

3-在您的具体情况下,1D版本为x(即您的ytranspose([1 2 1]) * [1 2 1]掩码),因为您可以通过乘法获取您提供的矩阵{{ 1}}。通常,您可以使用与上述类似的1D高斯公式直接构建这些1D高斯:exp(-((i-N/2)^2)/(2*sigma^2))(或标准化版本exp(-((i-N/2)^2)/(2*sigma^2)) / (sigma*sqrt(2*pi))