基于加权最小二乘法的保边缘平滑滤波器(WLS),matlab程序自己编写,更直观

本文介绍了一种基于Matlab的图像处理算法实现过程,该算法通过计算图像梯度并应用非线性权重来达到平滑和锐化的效果。文章详细展示了如何使用差分、稀疏矩阵和其他数学操作来构建自定义图像处理算子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<span style="font-size:18px;">clear all;

g = double(imread('../images/barbara.png'))/255.0;

lambda=1.0;
alpha=1.2;

[m, n]=size(g);

smallNum = 0.0001;
A_x = diff(log(g+eps), 1, 2); 
A_x = 1./(abs(A_x).^alpha + smallNum);
A_x = padarray(A_x, [0 1], 'post');
A_x = A_x(:);
A_x=sparse(1:1:m*n,1:1:m*n,A_x(1:1:m*n)',m*n,m*n);

A_y = diff(log(g+eps), 1, 1);
A_y = 1./(abs(A_y).^alpha + smallNum);
A_y = padarray(A_y, [1 0], 'post');
A_y = A_y(:);
A_y=sparse(1:1:m*n,1:1:m*n,A_y(1:1:m*n)',m*n,m*n);

D_x=sparse([1:1:m*n,1:1:m*n-m],[1:1:m*n,m+1:1:m*n],[-ones(1,m*n),ones(1,m*n-m)],m*n,m*n);
D_y=sparse([1:1:m*n,2:1:m*n],[1:1:m*n,1:1:m*n-1],[-ones(1,m*n),ones(1,m*n-1)],m*n,m*n);
Lg=D_x'*A_x*D_x+D_y'*A_y*D_y;

II=sparse(1:1:m*n,1:1:m*n,ones(1,m*n),m*n,m*n);
A=II+lambda*Lg;

u=A\g(:);
u=reshape(u,m,n);


figure;imshow([g,u]);</span>

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值