二维高斯模糊和可分离核形式的快速实现

高斯模糊原理

基本概念

二维高斯模糊,或者说高斯滤波,是图像处理中非常常见的操作。操作的核心是使用一个从高斯分布中采样得到的掩膜,或者叫核,和输入图片中的每个像素及其邻域进行计算,结果保存到输出图片中。假设高斯核窗口尺寸为 (2w+1)×(2w+1) ,高斯分布的标准差为 σ ,则高斯核可以表示为矩阵的形式

G=G(w,w)G(0,w)G(w,w)G(w,0)G(0,0)G(w,0)G(w,w)G(0,w)G(w,w)

其中
G(u,v)=1Sexp(u22σ2v22σ2)
其中 u 表示行, v 表示列, u,v{ w,w+1,,w1,w} S 是归一化常数
S=u=wwv=wwexp(u22σ2v22σ2)
由于高斯分布的概率密度函数的非零值区间主要集中在 (3σ,3σ) 内,所以为了保证选取的高斯核的完整性,一般取 w3σ

说完了高斯核,该说高斯模糊的表达式了。设输入图片为 X ,输出图片为 Y ,第 i 行第 j 列的数据表示为 X(i,j) Y(i,j) ,则使用窗口大小为 (2w+1)×(2w+1) ,标准差为 σ 的高斯核计算后的结果为

Y(i,j)=u=wwv=wwX(i+u,j+v)G(u,v)(1)
根据这个表达式,为了得到位置 (i,j) 上的输出,需要将高斯核的中心置于输入图片的位置 (i,j) 处,让高斯核的每一个值和输入图片对应位置上的值相乘,进行 (2w+1)×(2w+1) 次乘法计算,然后再进行 (2w+1)×(2w+1)1 次加法计算,所以时间复杂度是 O(w2) 的。

可分离核形式实现

但是,注意到,高斯核的表达式是可分离的。下面为了表示方便,令

g(x)=exp(x22σ2)
则有
G(u,v)=1Sg(u)g(v)
那么高斯核矩阵又可以改写成归一化常数乘以一个行向量乘以一个列向量的形式,如下
G=1Sg(w)g(w)g(0)g(w)g(w)g(w)  g(w)g(0)g(0)g(0)g(w)g(0)  g(w)g(w)g(0)g(w)g(w)g(w)=1Sg(w)g(0)g(w)×[g(w)g(0)g(w
  • 25
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值