MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 基于DCT与小波变换的压缩感知图像重构仿真系统

基于DCT与小波变换的压缩感知图像重构仿真系统

资 源 简 介

本项目基于MATLAB平台,深入研究并实现压缩感知(Compressive Sensing, CS)理论在图像处理中的应用。系统核心功能包含构建基于离散余弦变换(DCT)和离散小波变换(DWT)的两种稀疏基模型,用于将非稀疏的自然图像转化为稀疏信号。项目将模拟压缩感知的数据采集与恢复过程:首先利用高斯随机矩阵或伯努利矩阵构建测量矩阵,对稀疏化后的图像信号进行降维观测(压缩采样);随后在接收端,采用正交匹配追踪(OMP)算法或基追踪(BP)算法,通过求解优化问题从少量的线性投影值中高精度地重构出原始图像。项目将提供可视化界面或脚本,允许用户调节采样率(压缩比),并实时对比DCT变换与小波变换在不同图像特征(如平滑区域、纹理细节)下的重构性能。此外,系统会自动计算峰值信噪比(PSNR)、均方误差(MSE)以及结构相似性(SSIM)等指标,量化评估两种变换方式在压缩感知框架下的具体表现,验证CS理论在低于奈奎斯特采样率条件下的信号恢复能力。

详 情 说 明

基于DCT与小波变换的压缩感知图像重构仿真系统

项目介绍

本项目是一个基于MATLAB实现的压缩感知(Compressive Sensing, CS)图像重构仿真系统。该系统旨在验证和对比在低于奈奎斯特采样率的条件下,利用不同稀疏基(离散余弦变换DCT与离散小波变换DWT)对自然图像进行重构的性能。

系统采用分块压缩感知(Block CS)架构,模拟了从高斯随机观测到正交匹配追踪(OMP)算法重构的完整流程,并提供详细的性能指标(PSNR、SSIM、运行时间)以及直观的稀疏性分析图表。

核心功能特性

  • 多重稀疏基对比:实现了基于离散余弦变换(DCT)和Haar小波变换(DWT)的两种稀疏表示方法,支持在同一测试条件下对比两者的重构效果。
  • 分块压缩感知架构:为了降低计算复杂度并便于处理,系统将图像分割为16x16的局部块进行独立观测与重构。
  • 高斯随机投影:使用高斯随机矩阵作为测量矩阵,模拟非相干采样过程。
  • OMP重构算法:内置手写的正交匹配追踪(OMP)算法,包含相关性匹配、索引集更新及最小二乘拟合步骤。
  • 多采样率仿真:支持自动遍历多个采样率(0.3, 0.4, 0.5, 0.6),评估压缩比对图像质量的影响。
  • 性能量化评估:自动计算峰值信噪比(PSNR)、均方误差(MSE)以及结构相似性(SSIM)。
  • 可视化分析
* 稀疏性分析:直观展示图像块在DCT和DWT域下的系数衰减情况。 * 结果对比:展示重构后的图像效果及各项指标。

系统要求

  • MATLAB R2016a 或更高版本
  • Image Processing Toolbox(用于图像读取与缩放)

使用方法

  1. 确保MATLAB当前工作目录包含主脚本文件。
  2. 在MATLAB命令窗口输入 main 并回车即可运行。
  3. 程序将自动处理名为 cameraman.tif 的内置图像(若不存在则自动生成体模图像)。
  4. 运行过程中,控制台将实时输出不同采样率下的PSNR、SSIM及运行时间对比。
  5. 程序运行结束后,将弹出稀疏性分析窗口和最终的重构结果对比图。

代码实现逻辑详解

系统的主流程在 main 函数中严格按照以下步骤执行:

1. 图像预处理

  • 读取与转换:读取 cameraman.tif,若为彩色图像则转为灰度图。
  • 尺寸归一化:为了确保能够被16x16的分块整除,图像被强制缩放为256x256像素。
  • 数据类型:图像数据转换为 double 类型以便通过矩阵运算进行处理。
  • 稀疏性分析可视化:在重构开始前,提取图像中心块,计算并绘制其DCT系数和Haar小波系数的幅度衰减曲线,直观展示自然图像的稀疏特性。

2. 稀疏基构建

代码中未直接调用MATLAB内置变换函数进行重构,而是显式构造了变换矩阵:
  • DCT基:生成一维N点反离散余弦变换矩阵。
  • DWT基:通过多级分解逻辑,迭代构造了N点的Haar小波反变换正交矩阵。

3. 重构仿真循环

程序遍历预设的采样率列表 [0.3, 0.4, 0.5, 0.6],对每个采样率执行以下操作:
  • 测量矩阵生成:根据观测维数 $M$ 构建高斯随机矩阵 $Phi$,并对列进行归一化。为保证DCT与DWT测试条件的公平性,使用了固定的随机数种子。
  • 分块重构(Block CS)
* 分别传入DCT和DWT基矩阵调用重构子函数。 * 计时:独立记录两种变换方式的重构耗时。
  • 指标计算:计算原始图像与重构图像之间的PSNR和SSIM。
  • 结果存储:保存特定采样率(默认为0.5)下的重构图像用于最终展示。

4. 结果可视化

循环结束后,调用绘图函数展示原始图像以及特定采样率下DCT和DWT的重构图像。

关键算法与函数分析

block_cs_reconstruction (分块重构核心)

该函数实现了分块压缩感知的核心逻辑:
  • 输入:全图数据、测量矩阵 $Phi$、稀疏基反变换矩阵 $Psi$、块大小。
  • 传感矩阵:预计算 $Theta = Phi Psi$。
  • 遍历处理:以16像素为步长,无重叠地提取图像块。
  • 观测:将图像块向量化为 $x$,计算观测值 $y = Phi x$。
  • 求解:调用 omp_algo 求解稀疏系数 $hat{s}$。
  • 恢复:计算 $hat{x} = Psi hat{s}$,并将恢复后的向量重塑回图像矩阵。
  • 后处理:对像素值进行[0, 255]截断,防止数值溢出。

omp_algo (正交匹配追踪算法)

这是一个手写的OMP算法实现,用于求解优化问题 $y = Theta s$:
  • 初始化:设置残差 $r=y$,索引集为空。
  • 迭代过程
1. 匹配:计算传感矩阵各列与当前残差的相关性(点积)。 2. 选列:找到相关性最大的列索引,更新所以集。 3. 投影:通过最小二乘法(Least Squares, ` 运算符)求出当前索引集下的最优系数。 4. 更新残差:计算新的残差向量。 5. 收敛判断:当残差范数小于 $10^{-6}$ 或达到最大迭代次数时停止。
  • 参数设定:稀疏度 $K$(迭代次数)动态设定为观测维数的 $1/2.5$。

create_dwt_basis (小波基生成)

该函数展示了如何通过算法生成矩阵形式的小波变换:
  • 不依赖工具箱的高级封装,而是利用Haar小波滤波器的系数特性 $(1/sqrt{2}, 1/sqrt{2})$ 和 $(1/sqrt{2}, -1/sqrt{2})$。
  • 通过循环和 blkdiag 函数构建多层分解矩阵,最终生成的 $Psi$ 是正交小波变换矩阵的转置(即反变换矩阵)。

calculate_metrics` (指标计算)

  • PSNR:基于均方误差(MSE)的标准计算公式,最大像素值取255。
  • SSIM:实现了一个简化的结构相似性计算,利用全局的均值、方差和协方差进行估算,而非标准的滑动窗口SSIM。