• 大小: 4KB
    文件类型: .m
    金币: 2
    下载: 0 次
    发布日期: 2024-01-30
  • 语言: Matlab
  • 标签: RPCA去噪  

资源简介

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;%

评论

共有 条评论

相关资源