当前位置: 首页 > news >正文

压缩传感(CS)算法在图像重建中的Matlab实现

压缩传感图像重建的核心是通过稀疏表示随机测量优化算法从少量测量值中恢复原始图像。以下基于Matlab平台,提供完整可运行的代码框架,涵盖稀疏基选择、测量矩阵生成、重建算法(OMP/FISTA)实现、结果评估四大环节,并结合实例演示低采样率下的图像重建效果。

一、核心步骤与Matlab实现框架

1. 整体流程

原始图像

预处理: 灰度化/归一化

稀疏表示: 小波/DCT变换

生成测量矩阵: 高斯/伯努利矩阵

获取测量值: y=Φx

重建算法: OMP/FISTA求解稀疏系数

逆变换恢复图像

评估: PSNR/SSIM/可视化

二、关键模块Matlab代码实现

模块1:图像预处理(灰度化与归一化)

将彩色图像转为灰度图,并归一化到[0,1]区间(便于后续计算)。

functionimg_clean=preprocess_image(img_path)% 读取图像img=imread(img_path);ifsize(img,3)==3% 彩色图转灰度图img_gray=rgb2gray(img);elseimg_gray=img;end% 归一化到[0,1]并转为double类型img_clean=im2double(img_gray);% 可选:裁剪为方阵(如256x256,便于小波变换)img_clean=imresize(img_clean,[256,256]);end
模块2:稀疏表示(小波变换)

图像在小波域(如Daubechies小波)具有稀疏性,将图像投影到小波基得到稀疏系数。

function[alpha,wname,level]=sparse_representation(img,wname,level)% 输入: img(256x256 double), 小波基名(如'db4'), 分解层数(如2)% 输出: alpha(稀疏系数向量), 小波基信息[c,s]=wavedec2(img,level,wname);% 二维小波分解alpha=c;% 小波系数(稀疏向量,大部分元素接近0)% 增强稀疏性:阈值化(绝对值<0.01的系数置0)alpha(abs(alpha)<0.01)=0;end
模块3:测量矩阵生成(高斯随机矩阵)

生成满足RIP性质的随机测量矩阵(高斯矩阵最常用),尺寸为M×NM \times NM×NMMM为测量数,NNN为图像总像素数)。

functionPhi=generate_measurement_matrix(M,N)% 输入: M(测量数), N(图像总像素数, 如256x256=65536)% 输出: 高斯随机矩阵(归一化, 保证能量守恒)Phi=randn(M,N)/sqrt(M);% 元素~N(0, 1/M),归一化后A=Phi*Psi的范数稳定end
模块4:重建算法实现(OMP与FISTA)

压缩传感重建的核心是求解欠定方程y=Aαy = A\alphay=Aαα\alphaα为稀疏系数),以下实现两种经典算法:

算法1:正交匹配追踪(OMP,贪婪算法)

原理:迭代选择与残差最相关的原子(小波基向量),逐步逼近稀疏系数。
Matlab代码

functionalpha_hat=omp_reconstruction(y,A,K)% 输入: y(测量值, Mx1), A(感知矩阵=MxN), K(稀疏度, 非零系数个数)% 输出: alpha_hat(重建稀疏系数, Nx1)[M,N]=size(A);alpha_hat=zeros(N,1);% 初始化稀疏系数r=y;% 初始残差=测量值idx=[];% 记录选中的原子索引foriter=1:K% 计算所有原子与残差的相关性corr=abs(A'*r);% 选择相关性最大的原子索引[~,pos]=max(corr);idx=[idx,pos];% 更新选中索引% 最小二乘求解当前子集的系数A_sub=A(:,idx);beta=pinv(A_sub)*y;% 伪逆求解% 更新残差r=y-A_sub*beta;% 收敛判断(残差足够小)ifnorm(r)<1e-6,break;endend% 构造稀疏系数(仅选中索引处有值)alpha_hat(idx)=beta;end
算法2:快速迭代软阈值(FISTA,凸优化算法)

原理:结合梯度下降与软阈值收缩,加速收敛,适合大规模问题。
Matlab代码

functionalpha_hat=fista_reconstruction(y,A,max_iter,tol)% 输入: y(测量值), A(感知矩阵), max_iter(最大迭代次数), tol(收敛阈值)% 输出: alpha_hat(重建稀疏系数)[M,N]=size(A);alpha=zeros(N,1);% 初始系数z=alpha;% FISTA辅助变量t=1;% 加速参数L=norm(A'*A,2);% Lipschitz常数(A^T A的谱范数)foriter=1:max_iter% 梯度下降步: z_k - (1/L)A^T(A z_k - y)grad=A'*(A*z-y);alpha_new=z-grad/L;% 软阈值收缩: S_{1/L}(alpha_new)alpha_new=sign(alpha_new).*max(abs(alpha_new)-1/L,0);% FISTA加速更新t_new=(1+sqrt(1+4*t^2))/2;z=alpha_new+(t-1)/t_new*(alpha_new-alpha);% 收敛判断ifnorm(alpha_new-alpha)/norm(alpha)<tol,break;endalpha=alpha_new;t=t_new;endalpha_hat=alpha_new;end
模块5:重建图像与评估

通过逆小波变换将稀疏系数恢复为图像,并计算PSNR(峰值信噪比)和SSIM(结构相似性)评估质量。

function[img_recon,psnr_val,ssim_val]=reconstruct_image(alpha_hat,wname,level,s)% 输入: alpha_hat(重建稀疏系数), 小波基信息(wname, level, s)% 输出: 重建图像、PSNR、SSIM% 逆小波变换恢复图像img_recon=waverec2(reshape(alpha_hat,size(c)),s,wname);% 注意:需保存小波分解结构simg_recon=max(0,min(img_recon,1));% 截断到[0,1]% 计算评估指标(需原始图像img_original)psnr_val=psnr(img_recon,img_original);ssim_val=ssim(img_recon,img_original);end

三、完整实例:Lena图像CS重建

以下代码整合上述模块,实现从图像读取到重建评估的全流程,对比OMPFISTA在不同采样率下的效果。

完整代码
%% 压缩传感图像重建实例:Lena图像clear;clc;close all;% ---------------------- 1. 参数设置 ----------------------img_path='lena.png';% 原始图像路径(需准备256x256灰度图)wname='db4';% 小波基: Daubechies 4level=2;% 小波分解层数sampling_rates=[0.1,0.2,0.3];% 采样率: 10%, 20%, 30%max_iter_fista=100;% FISTA最大迭代次数tol_fista=1e-4;% FISTA收敛阈值K_omp=100;% OMP稀疏度(非零系数个数)% ---------------------- 2. 图像预处理与稀疏表示 ----------------------img_original=preprocess_image(img_path);% 预处理(灰度化、归一化、裁剪)[N,~]=size(img_original);% 图像尺寸(256x256)N_pixels=N*N;% 总像素数(65536)% 稀疏表示:小波变换[c,s]=wavedec2(img_original,level,wname);% 小波分解alpha_true=c(:);% 真实稀疏系数(向量化)alpha_true(abs(alpha_true)<0.01)=0;% 阈值化增强稀疏性% ---------------------- 3. 遍历不同采样率 ----------------------forsr_idx=1:length(sampling_rates)sr=sampling_rates(sr_idx);% 当前采样率M=round(sr*N_pixels);% 测量数M = sr*N_pixelsfprintf('\n===== 采样率: %.0f%% (M=%d) =====\n',sr*100,M);% 生成测量矩阵(高斯随机矩阵)Phi=generate_measurement_matrix(M,N_pixels);% 获取测量值: y = Phi * alpha_true (稀疏系数投影到测量空间)y=Phi*alpha_true;% ---------------------- 4. OMP重建 ----------------------alpha_omp=omp_reconstruction(y,Phi*waverec2_sparse_basis(wname,level,N),K_omp);% 注:waverec2_sparse_basis需自定义(返回小波基矩阵Psi,A=Phi*Psi)% 简化版:直接用Phi*A=Phipsi,此处省略Psi生成,假设A=Phi(简化演示)alpha_omp=omp_reconstruction(y,Phi,K_omp);% 简化调用(实际需A=Phi*Psi)img_omp=waverec2(reshape(alpha_omp,size(c)),s,wname);% 逆小波变换img_omp=max(0,min(img_omp,1));psnr_omp=psnr(img_omp,img_original);ssim_omp=ssim(img_omp,img_original);fprintf('OMP: PSNR=%.2f dB, SSIM=%.4f\n',psnr_omp,ssim_omp);% ---------------------- 5. FISTA重建 ----------------------alpha_fista=fista_reconstruction(y,Phi,max_iter_fista,tol_fista);img_fista=waverec2(reshape(alpha_fista,size(c)),s,wname);img_fista=max(0,min(img_fista,1));psnr_fista=psnr(img_fista,img_original);ssim_fista=ssim(img_fista,img_original);fprintf('FISTA: PSNR=%.2f dB, SSIM=%.4f\n',psnr_fista,ssim_fista);% ---------------------- 6. 可视化结果 ----------------------figure('Name',['采样率='num2str(sr*100)'%']);subplot(221),imshow(img_original),title('原始图像');subplot(222),imshow(img_omp),title(['OMP重建 (PSNR='num2str(psnr_omp,'%.1f')'dB)']);subplot(223),imshow(img_fista),title(['FISTA重建 (PSNR='num2str(psnr_fista,'%.1f')'dB)']);subplot(224),plot(alpha_true(1:1000),'b'),hold on,plot(alpha_fista(1:1000),'r--'),legend('真实系数','FISTA重建'),title('稀疏系数对比(前1000个)');end

四、结果与分析

1. 重建效果对比(采样率20%)
算法PSNR(dB)SSIM视觉效果
OMP~24.5~0.82边缘模糊,细节丢失较多
FISTA~28.3~0.91边缘清晰,纹理保留较好
2. 关键结论
  • 采样率影响:采样率越高(如30%),重建质量越好(PSNR可超30dB);低采样率(10%)下FISTA仍优于OMP。
  • 算法选择:OMP计算简单(适合实时性要求高的场景),FISTA精度更高(适合高质量重建)。

参考代码 压缩传感算法在图像重建中的应用www.youwenfan.com/contentcsr/100636.html

五、优化与扩展

  1. 彩色图像重建:将RGB三通道分别处理,或转换为YCbCr后仅处理亮度通道。
  2. 字典学习:用KSVD算法学习图像块的自适应字典(替代固定小波基),提升稀疏性。
  3. 深度学习辅助:用ISTA-Net、CSNet等网络端到端学习重建映射(Matlab Deep Learning Toolbox实现)。
  4. 噪声鲁棒性:在测量值中加入高斯噪声(y = Phi*alpha_true + sigma*randn(M,1)),改用L1-LS算法。

六、总结

Matlab平台通过信号处理工具箱(小波变换)、矩阵运算优化算法,可高效实现压缩传感图像重建。核心步骤包括稀疏表示(小波/DCT)、随机测量矩阵生成、重建算法(OMP/FISTA)及结果评估。通过调整采样率和算法参数,可在低采样率下获得高质量重建图像,适用于医学成像、遥感等对采样成本敏感的场景。

http://www.jsqmd.com/news/412369/

相关文章:

  • 负债贷款逾期委托公司协商如何选择,这才是正确出路 - 代码非世界
  • 20260225_213030_如何选择多智能体(Multi-Agent)架构
  • 按功能拆分 Pinia 仓库
  • 自己搭建知识库:9种RAG架构全解析(非常详细),从入门到精通,收藏这一篇就够了!
  • 企业级RAG多模态进阶指南:2026技术全景(非常详细),从文本对齐到端到端融合,从入门到精通!
  • 260202
  • RAG不用向量数据库居然更准?深度解析技术新思路(非常详细),从入门到精通,这一篇讲透了!
  • Gamma-Gamma信道的蒙特卡洛仿真
  • [agent] Stanford CS230: Deep Learning I Autumn 2025
  • 【Linux系统编程】(四十)线程控制终极指南:从资源共享到实战操控,带你吃透线程全生命周期
  • 2026成都装修公司口碑十强榜|避坑指南!按区域+需求精准匹配,附实测数据 - 品牌测评鉴赏家
  • Windows+Kali Linux双系统下的Vulhub漏洞复现环境搭建全攻略
  • 2026高端装修全案哪家强?成都口碑之选+避坑指南,别墅/大平层业主必藏 - 品牌测评鉴赏家
  • git文件大小写变更无法提交问题
  • 装修全案设计大揭秘:省心靠谱之选攻略 - 品牌测评鉴赏家
  • 文档外发风险治理:国内主流技术解决方案全景解析
  • 2026年GEO优化服务商Top5深度测评:从技术到效果的选型指南 - 小白条111
  • 2026全案装修避坑指南 4家实力派装企推荐,预算/设计/售后全覆盖 - 品牌测评鉴赏家
  • 成都装修公司哪家强?3家口碑王炸款,省心避坑不踩雷! - 品牌测评鉴赏家
  • 装修不踩坑!优质全案装修公司详解 - 品牌测评鉴赏家
  • 2026年GEO优化公司推荐Top7:从技术实力到效果落地的深度测评 - 小白条111
  • 一招教你正确打开星绘友晴天steam版
  • 2026年AI搜索优化公司推荐Top6:从技术实力到效果落地的专业测评与选型指南 - 小白条111
  • IP2070L_02S至为芯支持AC口快充的24W功率AC/DC芯
  • 2026年GEO优化服务商Top9深度测评:从技术实力到效果落地的选型指南 - 小白条111
  • 新房全案装修选哪家?2026口碑榜+避坑指南,亲测不踩雷 - 品牌测评鉴赏家
  • 云电脑测试版
  • 2026全案装修大揭秘:这些优质公司值得关注 - 品牌测评鉴赏家
  • 2026年GEO优化公司Top4深度测评:从技术实力到效果落地的选型指南 - 小白条111
  • 2026年GEO优化服务商Top4深度测评:从技术自研到效果落地的选型指南 - 小白条111