高斯滤波的窗口及标准差(笔记)

高斯函数与高斯滤波

一维高斯函数:
G ( x ) = 1 2 π σ e x p ( − ( x − μ ) 2 2 σ 2 ) G(x)=\frac{1}{\sqrt{2 \pi} \sigma} exp(- \frac{{(x-\mu)}^2}{2\sigma^2}) G(x)=2π σ1exp(2σ2(xμ)2)
二维高斯函数为两个一维高斯函数的积:
G ( x , y ) = 1 2 π σ e x p ( − ( x − μ x ) 2 2 σ x 2 − ( y − μ y ) 2 2 σ y 2 ) G(x,y)=\frac{1}{\sqrt{2 \pi} \sigma} exp(- \frac{{(x-\mu_x)}^2}{2\sigma_x^2}-\frac{{(y-\mu_y)}^2}{2\sigma_y^2}) G(x,y)=2π σ1exp(2σx2(xμx)22σy2(yμy)2)
高斯滤波即用某一尺寸的二维高斯核与图像进行卷积。高斯核是对连续高斯函数的离散近似,通常对高斯曲面进行离散采样和归一化得出(归一化指的是卷积核所有元素之和为1),下图为标准高斯和 σ x = σ y = 1.4 \sigma_x=\sigma_y=1.4 σx=σy=1.4大小为 5 × 5 5\times5 5×5的高斯核。

标准差

μ = 0 \mu=0 μ=0时,唯一需要控制的参数就是标准差 σ \sigma σ,调整σ\sigma实际是在调整周围像素对当前像素的影响程度,调大σ\sigma即提高了远处像素对中心像素的影响程度,滤波结果也就越平滑。高斯曲线随σ\sigma变化的曲线如下:

从频域角度看,高斯函数的傅立叶变换仍是高斯,两者标准差间的关系如下:

σ x = 1 2 π σ w \sigma_x = \frac{1}{2\pi \sigma_w} σx=2πσw1

其中, σ x \sigma_x σx为空域高斯的标准差, σ w \sigma_w σw为对应频域高斯的标准差,在空域进行高斯平滑相当于频域低通滤波, σ x \sigma_x σx越大, σ w \sigma_w σw越小,频域高斯越集中,高频成分削弱得越多,图像越平滑。
从低通滤波角度考虑,可以对图像做傅立叶变换进行频谱分析,叠加上频域高斯并调整查看效果,找到适合的 σ w \sigma_w σw,再推算出空域高斯所需的 σ x \sigma_x σx

窗口大小

标准差 σ \sigma σ确定后,接下来需要确定窗口大小。上面讲了高斯核是对连续高斯的离散近似,窗口越大自然近似越好,但高斯函数是钟形曲线,距离中心越远数值越小,足够远处可以忽略不计,但多远算远呢?
钟型曲线在区间 ( μ − σ , μ + σ ) (\mu - \sigma, \mu +\sigma) (μσ,μ+σ)范围内的面积占曲线下总面积的 68 % 68\% 68% ( μ − 2 σ , μ + 2 σ ) (\mu - 2\sigma, \mu +2\sigma) (μ2σ,μ+2σ)范围占 95 % 95\% 95% ( μ − 3 σ , μ + 3 σ ) (\mu - 3\sigma, \mu +3\sigma) (μ3σ,μ+3σ)范围占 99.7 % 99.7\% 99.7%,一般 3 σ 3\sigma 3σ外的数值已接近于0,可忽略,半径为 3 σ 3\sigma 3σ即窗口大小为 6 σ × 6 σ 6\sigma \times 6\sigma 6σ×6σ即可,通常取最近的奇数。上述3个范围在一维和二维高斯中示意如下:

OpenCV中标准差与窗口大小的换算

在OpenCV函数createGaussianFilter中,若未指定窗口大小,通过 σ \sigma σ推算窗口大小方式如下,半径为 σ \sigma σ的3或4倍:

若指定了窗口大小,但未指定 σ \sigma σ大小,则通过窗口大小推算 σ \sigma σ的方式如下:

σ = 0.3 × ( ( k s i z e − 1 ) × 0.5 − 1 ) + 0.8 \sigma = 0.3\times((ksize - 1)\times0.5 - 1) + 0.8 σ=0.3×((ksize1)×0.51)+0.8
σ = 0.15 × k s i z e + 0.35 \sigma = 0.15\times ksize + 0.35 σ=0.15×ksize+0.35
σ = 0.3 × ( k s i z e 2 + 1 ) \sigma = 0.3 \times {(\frac{ksize}{2}+1) } σ=0.3×(2ksize+1)

具体地,在函数getGaussianKernel中,当ksize不大于7时,直接从内部的small_gaussian_tab取对应大小的高斯核,若大于7,则使用上式计算出 σ \sigma σ然后套用高斯公式,最后再归一化。

Reference

如何确定高斯滤波的标准差和窗口大小

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值