基于matlab的低秩结构重构算法仿真实现,对比ALM,IT,APG,ADMM
目录
一、理论基础
二、核心程序
三、测试结果
一、理论基础
从数学上讲, 矩阵的秩反应了矩阵的固有属性, 矩阵的低秩性是指矩阵的秩相对于矩阵的行数和列数而言很小.低秩矩阵稀疏分解模型是将已知矩阵M (M∈Rm×n) 分解为一个低秩矩阵部分L (L∈Rm×n, rank (L) ≤m, n) 和一个稀疏矩阵部分S (S∈Rm×n) , 即M=L+S.
增广拉格朗日乘子法(ALM)
迭代阈值算法(IT)
加速近端梯度算法(APG)
交替方向乘子算法(ADMM)
二、核心程序
增广拉格朗日乘子法(ALM)
clc;
clear;
close all;
warning off;
addpath 'func\'I1=imresize(imread('1.jpg'),[256,256]);
I2=imresize(imread('2.jpg'),[256,256]);Init = I2; figure;
subplot(121);
imshow(Init);
title('原始图'); %original image
x = double(rgb2gray(Init));tic;
[A_hat,E_hat,iter] = func_ALM(x,0.1,0.05,100);
toc;subplot(122);
imshow(A_hat,[]);
title('ALM处理结果');
迭代阈值算法(IT)
clc;
clear;
close all;
warning off;
addpath 'func\'I1=imresize(imread('1.jpg'),[256,256]);
I2=imresize(imread('2.jpg'),[256,256]);Init = I2; figure;
subplot(121);
imshow(Init);tic;
title('原始图');
%迭代阈值算法
Im = rgb2gray(Init);
[x,y]= size(Im);
b = double(Im);
zd = double(max(Im));
zx = double(min(Im));
T = double((zd+zx))/2;
count= double(0);
while 1 % 迭代最佳阈值分割算法 count=count+1; S0=0.0; n0=0.0; S1=0.0; n1=0.0; for i=1:x for j=1:y if double(Im(i,j))>=T %大于阈域值图像点灰度值累加 S1=S1+double(Im(i,j)); %大于阈域值图像点个数累加 n1=n1+1; else %小于阈域值图像点灰度值累加 S0=S0+double(Im(i,j)); %小于阀域值图像点个数累加 n0=n0+1; end end end %求小于阀域值均值 T0=S0/n0; %求大于阀域值均值 T1=S1/n1; %迭代至前后两次阀域值相差几乎为0时if abs(T-((T0+T1)/2))<0.1 break; else %在阈值T下,迭代阈值的计算过程T=(T0+T1)/2; end
end
toc
T
i1=im2bw(Im,T/255); % 图像在最佳阈值下二值化
subplot(122)
imshow(i1)
title(['迭代后最终阈值输出:',num2str(T)]);
加速近端梯度算法(APG)
clc;
clear;
close all;
warning off;
addpath 'func\'I1=imresize(imread('1.jpg'),[256,256]);
I2=imresize(imread('2.jpg'),[256,256]);Init = I2; figure;
subplot(131);
imshow(Init);
title('原始图');
tic
[A_hat,E_hat] = func_APG(double(rgb2gray(Init)),0.05,1000);
toc
subplot(132);
imshow(A_hat,[]);
title('low-rank结果');
subplot(133);
imshow(E_hat);
title('处理误差');
交替方向乘子算法(ADMM)
clc;
clear;
close all;
warning off;
addpath 'func\'I1=imresize(imread('1.jpg'),[256,256]);
I2=imresize(imread('2.jpg'),[256,256]);Init = I2; figure;
subplot(121);
imshow(Init);
title('原始图'); %original image
tic
x = double(rgb2gray(Init));
[M,N] = size(x);
%FFT2
[H_FFT,HC_FFT]=func_hfft(x);A = @(x) real(ifft2(H_FFT.*fft2(x)));
AT = @(x) real(ifft2(HC_FFT.*fft2(x)));global calls;
calls = 0;
A = @(x) callcounter(A,x);
AT = @(x) callcounter(AT,x);
%观测矩阵
Ax = A(x);
Psig = norm(Ax,'fro')^2/(M*N);
y = Ax;
%parameters
lambda = 2.0e-2;
mu = lambda/10;
outeriters = 500;
tol = 1e-5;
%TV
Phi_TV = @(x) TVnorm(x);
chambolleit= 10;
Psi_TV = @(x,th) mex_vartotale(x,th,'itmax',chambolleit);
alpha = 1.2;
filter_FFT = 1./(abs(H_FFT).^2 + mu*alpha);
invLS = @(x) real(ifft2(filter_FFT.*fft2( x )));
invLS = @(x) callcounter(invLS,x);[x_salsa, numA, numAt, objective1, distance, times1, mses1] = func_ADMM(y, A, lambda, 'MU', mu, 'AT', AT, 'StopCriterion', 1,'True_x', x, 'ToleranceA', tol, 'MAXITERA', outeriters, 'Psi', Psi_TV, 'Phi', Phi_TV, 'TVINITIALIZATION', 1, 'TViters', 10,'LS', invLS, 'VERBOSE', 0);toc
subplot(122);
imshow(x_salsa,[]);
title('admm处理结果');
三、测试结果
A23-41
基于matlab的低秩结构重构算法仿真实现,对比ALM,IT,APG,ADMM相关推荐
- matlab的svpwm逆变器,基于matlab的SVPWM逆变器死区补偿算法仿真研究
SURVEY LE 即巧年10月一第7期一.一.一一 基于madab的SVPWM逆变器死区补偿算法仿真研究 长春工业大学于海芳柏博旭刘龙高胜昌 摘要:为解决爳M逆变器死区效应问题,本文提出了冖种基于坐 ...
- 基于MATLAB的路面裂缝检测识别算法仿真
目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB源码 %********************
- 基于MATLAB的leach协议能量检测算法仿真
目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 LEACH协议,全称是"低功耗自适应集簇分层型协议" (Low Energy Adaptive Clust ...
- 基于MATLAB图像harris角点提取算法仿真
figure; ori_im2 = imread('ucsb1.jpg'); % 读取图像 ori_im2=rgb2gray(ori_im2); fx = [6 0 -6;8 0 -8;6 ...
- matlab仿真光场成像,光场图像重构算法仿真
引言 光场成像由于获取了光辐射的完整分布, 可以通过光场信息重构算法的数据处理手段计算出所需的对焦图像[.光场相机通过四维坐标系参数表征出空间内光辐射位置信息和方向信息, 因此与传统相机的二维图像相比 ...
- 基于MATLAB的RSSI 和 PLE 定位算法,并通过卡尔曼滤波器减少非视距误差
基于MATLAB的RSSI 和 PLE 定位算法,并通过卡尔曼滤波器减少非视距误差 根据上面的课题要求,我们知道在室内未知信道环境下,进行RSS估计效果较差,而本课题所要求的是在室内未知PL的情况下进 ...
- 基于matlab的捷联惯导算法设计及仿真,基于 Matlab 的捷联惯导算法设计及仿真1doc.doc...
基于 Matlab 的捷联惯导算法设计及仿真1doc 基于 Matlab 的捷联惯导算法设计及仿真1 严恭敏 西北工业大学航海学院,西安 (710072) E-mail:yangongmin@163. ...
- 基于Matlab的三维胖射线追踪算法
基于Matlab的三维胖射线追踪算法(1) 三维CT更有利于对构造的精细识别,三维CT本质上与二维CT无较大区别,但计算量增加,占用电脑内存大,计算时间更长. 文章目录 基于Matlab的三维胖射线追 ...
- 低通采样定理 matlab,基于matlab的低通抽样定理仿真
基于matlab的低通抽样定理仿真 DSP 课 程 设 计 专业: 电子信息技术工程 年级: 2011 级 不 姓名: 陈兰兰 学号: 20113015 指导教师: 刘 德 春 阿坝师专电子信息工程系 ...
最新文章
- matlab多维数组、结构体数组
- 【编译原理】有限自动机NFA-ε到NFA的探索
- mysql增删查操作
- codecomb 2091【路径数量】
- mac os 安装 pkg-config
- python3.10_概述 — Python 3.10.0a2 文档
- backend system available odata service detection
- 【面试总结】java测试工程师培训
- 图解TCPIP-TCP IP
- python实现选择文件_用tkinter 实现从文件夹选择文件并显示
- 手机qqsendencpac文件能删吗_无需任何app,手机电脑之前也能轻松传文件
- JS入门必备基础知识(适合小白)
- 开始学习ruby,对此语言的简介
- PDF Expert for Mac(PDF阅读器) 2.4.29最新中文激活版
- 一文说清:可逆与不可逆加密算法,对称与非对称加密算法-据说BCrypt比MD5要好?
- 加一 — Python
- C Prime plus 第七章练习题
- 酒店项目 酒店管理系统酒店在线预订系统
- Clion远程Linux开发调试环境搭建
- 基于Djiango的学生管理系统(含源代码)