资源简介
此函数用FISTA算法解决压缩感知,注释很详细,里面包含测试图片
代码片段和文件信息
% 此函数用FISTA算法解决压缩感知(傅里叶变换做测量,磁共振应用)
% 参考文献:Amir Beck and Marc Teboulle “A Fast Iterative Shrinkage-Thresholding Algorithm for
% Linear Inverse Problems“ SIAM J. IMAGING SCIENCES Vol. 2 No. 1 pp.183-202 2009.
% 编程人:沙威 香港大学
% Email: wsha@eee.hku.hk; dr.weisha@gmail.com
% 转载时请保留上面注解
function FISTA_FT;
clc;clear
% 图像库
A={‘phantom256.bmp‘ ‘fruits256.bmp‘ ‘cameraman256.bmp‘ ‘lena256.bmp‘...
‘peppers256.bmp‘ ‘boat256.bmp‘ ‘baboon256.bmp‘};
I=imread(A{3}); % 1表示最经典的phantom图像,可以尝试其它的图像
X=double(I)/255; % 原始矩阵归一化
load ww % 小波变换矩阵
W_i=WL_for(wwX); % 小波变换
max_e=max(max(full(abs(W_i)))); % 最大系数
threshold=0.005; % 稀疏化阈值(小波变换)
th_v=(max_e*threshold); % 阈值
N=length(X); % 原始图像大小
% 空域随机矩阵(Y=A*X测量,A病态,需要用共轭梯度技术,需要修正)
% A=rand(N/4N); % 随机测量矩阵(25%测量)
% A=A/norm(A); % 测量矩阵归一化
load mask_radial; % mask矩阵(30%测量)
Y=FT_for(mask_matrixX); % 傅里叶变换系数作为测量
X_r=zeros(NN); % 恢复矩阵
N_iter=100; % 迭代次数
c=1; % 代理函数参数
gamma=1/c; % 迭代系数(可以优化)
t=1; % 自适应迭代系数
for m=1:N_iter
N_iter-m
t_p=t; % 记录之前迭代系数
X_p=X_r; % 记录之前的小波域系数
X_t=WL_back(wwX_r); % 小波反变换,得到时域图像
X_m=FT_for(mask_matrixX_t); % 傅里叶变换域测量
R_m=FT_back(mask_matrix(Y-X_m)); % 测量残差
X_s=X_r+gamma*WL_for(wwR_m); % 小波正变换,更新小波域系数
X_r=Threshold_F(X_sth_v/c); % 小波域系数软阈值
t=(1+sqrt(1+4*t^2))/2; % 新的迭代系数
X_r=X_r+(t_p-1)/t*(X_r-X_p); % 更新小波域系数方法1
%X_r=X_r+(t-1)/(t+1)*(X_r-X_p); % 更新小波域系数方法2
th_v=th_v*0.9; % 软阈值松弛
if (th_v<1e-3) % 阈值很小时候截断迭代
break;
end
% 和原始图像相比的峰值信噪比PSNR
errorx=sum(sum(abs(WL_back(wwX_r)-X).^2)); % MSE误差
psnr=10*log10(1*1/(errorx/N/N)); % PSNR
disp(‘峰值信噪比:‘)
disp(psnr)
end
figure(1)
subplot(221)
imshow(uint8(X*255))
title(‘原始图像‘)
subplot(222)
imshow(uint8(real(Y)*255))
title(‘傅里叶域测量‘)
subplot(223)
imshow(uint8(full(WL_back(wwX_r))*255))
ss=sprintf(‘恢复图像(PSNR: %0.2f)‘psnr);
title(ss)
subplot(224)
imshow(uint8(full(WL_back(wwX_r)-X)*255))
title(‘误差图像‘)
% 小波变换和反变换
function MM=WL_for(wwM)
MM=(ww*(M)*ww‘); % 2d image
%MM=(ww*sparse(M)); % 1d signal
function MM=WL_back(wwM)
MM=(ww‘*(M)*ww); % 2d image
%MM=(ww‘*sparse(M)); % 1d signal
% 阈值函数
function X_th=Threshold_F(Xthreshold)
% 软阈值
flag1=X>(threshold);
flag2=X<-(threshold);
flag3=flag1 | flag2;
X_th=X-double(flag1).*threshold;
X_th=X_th+double(flag2).*threshold;
X_th=X_th.*flag3;
% 傅里叶变换和反变换
function MM=FT_for(maskM)
M=real(M);
MM=mask.*(fftshift(fft2(M)));
function MM=FT_back(maskM)
MM=real(ifft2(ifftshift(mask.*M)));
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 66614 2015-06-17 20:13 FISTA\baboon256.bmp
文件 66614 2015-06-17 20:13 FISTA\boat256.bmp
文件 66358 2015-06-17 20:13 FISTA\brain256.bmp
文件 66614 2015-06-17 20:13 FISTA\cameraman256.bmp
文件 3298 2015-06-17 20:13 FISTA\FISTA_FT.m
文件 2907 2018-07-07 16:37 FISTA\FISTA_Radon.m
文件 66614 2015-06-17 20:13 FISTA\fruits256.bmp
文件 66614 2015-06-17 20:13 FISTA\lena256.bmp
文件 6031 2015-06-17 20:13 FISTA\mask_radial.mat
文件 66614 2015-06-17 20:13 FISTA\peppers256.bmp
文件 3824 2015-06-17 20:13 FISTA\phantom256.bmp
文件 80168 2015-06-17 20:13 FISTA\ww.mat
目录 0 2018-07-06 15:13 FISTA
----------- --------- ---------- ----- ----
562270 13
- 上一篇:veriloga的模型导入hspice的方法
- 下一篇:PD电源原理图
相关资源
- SCMA仿真程序中文注释
- 基于DWT的数字水印
- PCA代码汇总
- 编程实现NLMS_LMS对比.docx
- mimo 优化功率分配
- 基于s函数的电机建模与仿真
- 静脉识别程序
- Horn-Schunck 法实现的光流法
- 改进的细菌觅食优化算法用于双阈值
- UCSD_GARCH 工具箱
- 基于多项滤波的内插器
- 医学图像课程大作业-滤波反投影
- SSDA模板匹配算法
- 基于Log算子的边缘检测
- v2v信道仿真与特性研究
- VMD实现函数
- 用中值滤波和均值滤波去除高斯白噪
- 蚁群算法进行三维路径规划
- noma系统实现代码
- LDPC 编码,随机生成 H 矩阵,LLR-BP算法
- CEEMD-信息熵-完美运行,你指的拥有。
- 遗传算法函数优化三元二次函数
- 单元级联高压STATCOM仿真-cascaded_Hbrid
- 遗传算法优化bp神经网络权值和单纯
- LSSVM工具箱中文版-LS-SVM.doc
- Matalbpso优化bp网络程序-PSO-bp.rar
- 基于干扰观测器的单机械臂滑模控制
- SAR图像CFAR检测算法实现
- 经典经典的粒子群算法
- Virus Spread Model.rar
评论
共有 条评论