高斯分布:二维形式、加权模板和滤波

高斯分布:二维形式、加权模板和滤波

从一维到二维

高中某课本里,我们曾经学习过正态分布,也即高斯分布。其公式如下:

$$ \displaystyle f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{{(x-\mu})^2}{2\sigma^2}} $$

其中 $\mu$是分布的对称轴——均值,$\sigma$ 是标准差。$\mu=0$时,上式变为:

$$ f(x) =\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{x^2}{2\sigma^2}} $$

我们将其拓展到二维,只需要将$f(x)$和$f(y)$相乘即可。记 $g(x,y) = f(x)f(y)$,并将$\sigma$也引入作为变量,则有:

$$ g(x,y,\sigma) = {1\over 2 \pi\sigma^2}e^{ - {x^2 + y^2 \over2\sigma^2}} $$

这就是二维的高斯分布。

作为权重的高斯函数

我们在图像处理中常常用到高斯函数,例如高斯滤波器。图像可以用矩阵表示,假定有一图像:

$$ \left[ \begin{matrix} 1 & 2 & 3 & 4 \\ 2 & 1 & 4 & 2 \\ 3 & 2 & 1 & 1 \\ 4 & 3 & 2 & 1 \\ \end{matrix} \right] $$

我们要对其进行高斯滤波。这种滤波是针对每一个像素的,我们不妨以 1 行 1 列的像素为例,将其周围 3x3 的区域抽出:

$$ \left[ \begin{matrix} 1 & 2 & 3\\ 2 & \boxed{1} & 4\\ 3 & 2 & 1\\ \end{matrix} \right] $$

以中间的 1 为坐标原点$(0, 0)$建立坐标系。把周围数字的坐标带入二维高斯分布,取标准差$\sigma=1.3$。得到:

$$ \left[ \begin{matrix} 0.0174 & 0.0405 & 0.0174\\ 0.0405 & 0.094 & 0.0405\\ 0.0174 & 0.0405 & 0.0174\\ \end{matrix} \right] $$

这个是我临时写的 g 的计算脚本,欢迎拿去用~

var g = function (x,y,sigma){return 1 / (Math.PI*2*sigma*sigma) * Math.exp(-(x*x + y*y)/2*sigma*sigma);}

我们也让每个值等于其占总体的比例,使得总体和为 1:

$$ \left[ \begin{matrix} 0.053 & 0.124 & 0.053\\ 0.124 & 0.289 & 0.124\\ 0.053 & 0.124 & 0.053\\ \end{matrix} \right] $$

得到的这个东西我们叫做权重模板。有了这个,我们就可以对之前的 3x3 小块的中心元素进行高斯滤波。对应相乘:

$$ \left[ \begin{matrix} 0.053\times1 & 0.124\times2 & 0.053\times3\\ 0.124\times2 & 0.289\times1 & 0.124\times4\\ 0.053\times3 & 0.124\times2 & 0.053\times1\\ \end{matrix} \right] $$

把得到的矩阵的所有值加起来,就是中心像素的值。这样我们就完成了对这个像素的滤波。依次对所有像素的所有通道执行,即可完成对图像的高斯滤波。

怎么样,是不是很简单?

发表留言

本站启用了垃圾评论检测插件,如果误删请联系我~