资源简介
RPCA方法的图像去噪算法。该程序为精确拉格朗日乘子法。去噪的话直接调用程序就好。也可以不用分块、聚合。
代码片段和文件信息
function [A_hat E_hat iter] = exact_alm_rpca(D lambda tol maxIter)
% Oct 2009
% This matlab code implements the augmented Lagrange multiplier method for
% Robust PCA.
%
% D - m x n matrix of observations/data (required input)%这个是观察到的矩阵D
%
% lambda - weight on sparse error term in the cost
% function%这个是应该是代价函数的误差稀疏度的权重
%
% tol - tolerance for stopping criterion.%这个是停止迭代的误差容忍度
% - DEFAULT 1e-7 if omitted or -1.
%
% maxIter - maximum number of iterations%这个是最大的迭代次数
% - DEFAULT 1000 if omitted or -1.
%
% Initialize AEYu
% while ~converged
% minimize
% L(AEYu) = |A|_* + lambda * |E|_1 + + mu/2 * |D-A-E|_F^2;
% Y = Y + \mu * (D - A - E);
% \mu = \rho * \mu;
% end
%
% Minming Chen October 2009. Questions? v-minmch@microsoft.com ;
% Arvind Ganesh (abalasu2@illinois.edu)
%
% Copyright: Perception and Decision Laboratory University of Illinois Urbana-Champaign
% Microsoft Research Asia Beijing
addpath PROPACK;
[m n] = size(D);
%%设定算法参数default取值
if nargin < 2%说明只输入了D
lambda = 1 / sqrt(m);
end
if nargin < 3
tol = 1e-7;
elseif tol == -1
tol = 1e-7;
end
if nargin < 4
maxIter = 1000;
elseif maxIter == -1
maxIter = 1000;
end
% initialize
Y = sign(D);%这个是符号函数对D矩阵中的每一个元素符号进行判断,然后Y与D的大小是一样的
% norm_two = lansvd(Y 1 ‘L‘);%求Y的最大的奇异值(矩阵的二范数为矩阵最大的奇异值)
norm_two=norm(Y);
norm_inf = norm( Y(:) inf) / lambda;
dual_norm = max(norm_two norm_inf);%求二范数和无穷范数的最大值
Y = Y / dual_norm;%对Y进行初始化
A_hat = zeros( m n);
E_hat = zeros( m n);
dnorm = norm(D ‘fro‘);%D的F范数
tolProj = 1e-6 * dnorm;%用于内层循环中的收敛判断条件
total_svd = 0;
mu = .5/norm_two % this one can be tuned,uk的建议取值
rho = 6 % this one can be tuned,uk更新的参数
iter = 0;
converged = false;
stopCriterion = 1;
sv = 5;%
评论
共有 条评论