双边平滑滤波

双边滤波器是一种非线性滤波器,是将空间滤波和灰度值合并进行滤波,不仅可以对图像进行平滑处理,还可以保留图像中边缘信息。
可以将其理解为:
一个函数由像素欧式距离决定滤波器模板的系数【高斯滤波器(Gaussian Filter)】:高斯滤波器只考虑像素间的欧式距离,其使用的模板系数随着和窗口中心的距离增大而减小

另一个函数由像素的灰度差值决定滤波器的系数【α-截尾均值滤波器(Alpha-Trimmed mean Filter)】:Alpha截尾均值滤波器则只考虑了像素灰度值之间的差值,去掉α%的最小值和最大值后再计算均值
双边滤波器使用二维高斯函数生成距离模板,使用一维高斯函数生成值域模板。
距离模板系数的生成公式如下:
这里写图片描述
其中,(k,l)为模板窗口的中心坐标;(i,j)为模板窗口的其他系数的坐标;σd 为高斯函数的标准差。 使用该公式生成的滤波器模板和高斯滤波器使用的模板是没有区别的。
值域模板系数的生成公式如下:
这里写图片描述
其中,函数f(x,y)表示要处理的图像,f(x,y)表示图像在点(x,y)处的像素值;(k,l)为模板窗口的中心坐标;(i,j)为模板窗口的其他系数的坐标;σr 为高斯函数的标准差。
将上述两个模板相乘就得到了双边滤波器的模板:
这里写图片描述

网上看到一个比较直观的处理图:
这里写图片描述

从算法中,可以看到,需要不断计算每个窗口,会有大量重复计算。
1、 计算每两个点之间的灰度权重值
2、 计算每两个点之间的空间权重值
3、 窗口权重重复计算
这里先解决1和2,通过建立灰度值模板和空间模板,来减少计算量。
在网上看到有用递归方法来处理3问题,这个我现在还没实现,有时间了在研究研究递归方法。

关于双边滤波处理网上资源:
https://cloud.tencent.com/developer/article/1094493 附完整C代码
http://www.cnblogs.com/wangguchangqing/p/6416401.html 附opencv实现代码
https://blog.csdn.net/piaoxuezhong/article/details/78302920 附MATLAB快速处理代码
https://blog.csdn.net/hjimce/article/details/45421207 附有问题c++代码,有点问题

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值