图像压缩传感 (CS) 实验项目
项目介绍
本项目由香港大学电气电子工程学系沙威(Wei Sha)开发,是一个基于 MATLAB 开发的环境,旨在演示和实现标准测试图像 LENA 的压缩传感(Compressive Sensing, CS)处理流程。该项目深度结合了信号稀疏化编码理论与非相干采样技术,核心目标是探索如何在采样率远低于奈奎斯特采样定理要求的情况下,利用少量的随机测量值精确地重构出原始图像的高维信息。
功能特性
- 图像稀疏化表征:利用离散余弦变换(DCT)将图像从空间域转换到稀疏域,使能量集中在少数变换系数上。
- 随机高斯测量模拟:通过构造随机高斯测量矩阵对稀疏信号进行线性投影,模拟物理层面的低速亚采样过程。
- 矩阵正交化优化:在构造测量矩阵过程中引入正交化处理,有效提高数值稳定性和重构精度。
- 分块处理机制:采用 8x8 像素分块策略进行采样与重构,大幅降低内存消耗并模拟实际硬件的局部处理方式。
- 贪婪迭代重构算法:内置高效的正交匹配追踪(OMP)算法,根据观测数据和传感矩阵从低维测量空间反推回高维图像空间。
- 自动化模拟保障:具备自动检测机制,若缺少外部图像输入,程序能自动生成带边缘纹理和噪声的模拟图像以确保运行。
- 全方位结果评估:提供重构图像与原图的对比显示、重构绝对误差的可视化分布图,并实时计算峰值信噪比(PSNR)。
实现逻辑与流程
- 参数配置:设定 0.5 的采样率(通常为 50% 测量值)、8x8 的块大小以及预计保留的 25 个稀疏系数。
- 图像预处理:将输入图像强制调整为 256x256 分辨率的灰度图像,或根据内置算法生成模拟图像,并将其数据类型转换为双精度浮点型进行后续数学运算。
- 传感矩阵构建:
- 矩阵生成:根据定义的块大小,利用手动编写的子函数生成对应维度的离散余弦变换基。
- 测量投影:生成随机高斯矩阵,并对其进行转置正交化处理(orth),随后将其与变换基结合,形成最终的传感矩阵(Theta)。
- 循环分块执行:
- 数据向量化:按照步长遍历图像,提取每个小块并拉伸为一维列向量。
- 采样阶段:通过测量矩阵与图像向量的乘法运算,获得低维的线性观测值。
- 重构阶段:调用 OMP 算法求解最优化问题,获取稀疏域系数。
- 反变换:将求解出的系数通过离散余弦反变换转回空间域,并重新拼装进重构图像矩阵。
- 指标评估:基于均方误差(MSE)计算重构质量,利用公式计算出以分贝(dB)为单位的 PSNR 数值。
核心算法与实现细节
- 离散余弦变换 (DCT) 矩阵构造:程序没有依赖外部工具箱,而是通过余弦函数计算直接生成变换矩阵。它负责将时域(空间域)信号映射到频域,为压缩传感提供前提条件。
- 测量矩阵的正交性处理:在生成随机高斯矩阵后,通过对转置矩阵求正交基的方式,确保了观测矩阵的行与行之间具有更好的独立性,这对满足有限等距性质(RIP)至关重要。
- 正交匹配追踪 (OMP) 算法:
- 关联度搜索:在每一次迭代中,计算传感矩阵每一列与当前残差的关联度(投影),选择投影值最大的原子。
- 原子正交化:将选中的原子加入索引集,利用最小二乘法(矩阵左除运算)在当前已选子空间中求解最优系数。
- 残差更新:从原始测量值中减去已重构部分,并以此残差进行下一轮迭代。
- 容差退出:如果残差模值小于设定的阈值(1e-6),则提前停止迭代,提高效率。
使用方法
- 环境准备:确保本地安装有 MATLAB 运行环境。
- 资源放置:将程序代码及对应的测试图像放置在同一工作目录下。
- 执行处理:在 MATLAB 命令行中直接调用对应的入口函数。
- 结果查看:程序将自动弹出可视化窗口,展示原始图像、重构图像及误差分布,同时在数据总结区域列出最终的 PSNR 指标。
系统要求
- 平台兼容性:支持 Windows、Linux 及 macOS 系统下的各版本 MATLAB。
- 内存需求:由于采用了分块处理技术,该程序对硬件内存要求极低,普通 PC 即可运行。
- 外部依赖:无需安装额外的图像处理或信号处理工具箱,所有核心函数均为原生实现。