1 简介
全变分算法 将全变分作为衡量图像光滑度的标准,利用噪声图像的全变分大于无噪声图像全变分的特点,将图像去噪转化为求解全变分的极小值。
2 部分代码
function u = SB_ATV(g,mu)
% Split Bregman Anisotropic Total Variation Denoising
%
% April 2012
g = g(:);
n = length(g);
[B Bt BtB] = DiffOper(sqrt(n));
b = zeros(2*n,1);
d = b;
u = g;
err = 1;k = 1;
tol = 1e-3;
lambda = 1;
while err > tol
fprintf('it. %g ',k);
up = u;
[u,~] = cgs(speye(n)+BtB, g-lambda*Bt*(b-d),1e-5,100);
Bub = B*u+b;
d = max(abs(Bub)-mu/lambda,0).*sign(Bub);
b = Bub-d;
err = norm(up-u)/norm(u);
fprintf('err=%g \n',err);
k = k+1;
end
fprintf('Stopped because norm(up-u)/norm(u) <= tol=%.1e\n',tol);
end
function [B Bt BtB] = DiffOper(N)
D = spdiags([-ones(N,1) ones(N,1)], [0 1], N,N+1);
D(:,1) = [];
D(1,1) = 0;
B = [ kron(speye(N),D) ; kron(D,speye(N)) ];
Bt = B';
BtB = Bt*B;
end
3 仿真结果
4 参考文献
[1]陈棠. (2018). 基于全变分模型的图像去噪方法研究及系统实现. (Doctoral dissertation, 西安理工大学).
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页