python加权最小二乘_Matlab&Python-WLS加权最小二乘滤波

本文介绍了基于Matlab和Python的加权最小二乘(WLS)滤波方法,用于图像去雾。该算法源于Z. Farbman等在ACM SIGGRAPH 2007发表的论文,旨在保留图像边缘并平滑细节。文章详细展示了WLS滤波器的数学模型,平滑权重的计算,并提供了Matlab和Python的实现代码示例。
摘要由CSDN通过智能技术生成

最近看了论文Non-local Image Dehazing基于雾线的去雾算法。

其中算法的滤波用的是weighted least square(WLS)算法,论文全称《Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation》,作者Z. Farbman等,发表在ACM SIGGRAPH 2007。

保边滤波器可以是两个矛盾的目标的结合体。对于一副输入图像g(N*M),我们目标图像u一方面我们希望其尽可能近似,与此同时除了在一些边缘梯度变化比较大的地方外应该越平滑越好。数学模型为:

67777b341375d0d5e0ec6f9bf6a048ac.png

下标代表像素点空间位置,其中p表示像素的位置,ax和ay控制着不同位置上的平滑程度。

目标函数第一项代表输入图像和输出图像越相似越好,第二项是正则项,通过最小化的偏导,使得输出图像越平滑越好。平滑项的权重分别是和,依赖于输入图像,当输入图像的边缘梯度变化比较大的时候,我们希望其约束小一些,以保留图像的结构信息;当图像的边缘梯度变化很小的时候,这些细节信息我们认为其不重要,约束自然可以大一些,lambda是正则项参数,平衡两者比重,越大图像也就越平滑。

上式写成矩阵就是:

36e19cbb67ad0d7b7a6b96f09e3a8d30.png

其中,Ax,Ay为以ax,ay为对角元素的对角矩阵,Dx,Dy为前向差分矩阵,和是后向差分算子,要使得(2)式去的最小值,u需满足如下:

7df2905af795bdc7b2e1401200150359.png

Lg为五点空间异构Laplacian矩阵。

论文中的去的平滑权重系数为:

a1c8e82735112ebf7966097e553a8b42.png

输入图像亮度通道的log值(其实直接用原始图像也是可行的),可以看出当的梯度比较大时,会随着变小,否则反之。权重的这样设计是很合理的,可以保留较大的边缘,平滑不必要的细节。 其中 l表示log, ε一般取0.0001。

原作者在项目主页中公布了源码:

稀疏矩阵A就是公式(3)中的I+λLg。这段程序和前面的推导不同之处在于平滑权重先乘以了−λ,但是最中的结果是一致的:对角线上用1去减,其实就是加;对于其他四个对角线,我们推导的结果是带有负号的平滑权重,然后乘以λ,其实就等价于直接乘以−λ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值