基于POCS算法的图像超分辨率重建系统
项目简介
本项目实现了一个基于凸集投影法(Projection Onto Convex Sets, POCS)的图像超分辨率重建系统。该系统通过MATLAB编写,旨在从具有亚像素位移的低分辨率(LR)观测图像序列中,恢复出一幅高分辨率(HR)图像。
程序包含完整的仿真流程:从原始高清图像生成低分辨率序列(包含位移、模糊、下采样和噪声),到利用POCS算法进行核心重建,最后进行质量评价和可视化展示。该方法有效利用了多帧图像之间的时间冗余信息,能够显著优于传统的单帧插值方法。
功能特性
- 全流程仿真:内置从高分辨率图像生成劣化低分辨率序列的完整模拟过程,无需外部数据集即可运行。
- 亚像素运动模拟:支持生成具有随机亚像素位移的图像序列,利用频域相位平移实现精确控制。
- POCS核心算法:实现了基于POCS理论的迭代重建,包含前向观测模型模拟和残差反向投影修正。
- 多约束集机制:集成了幅度约束(像素值范围限制),并预以此为基础构建凸集投影框架。
- 客观质量评价:内置PSNR(峰值信噪比)和SSIM(结构相似性)计算模块,量化评估重建效果。
- 可视化对比:提供详细的结果展示,包括LR输入、双立方插值对比、POCS重建结果、局部细节放大图以及收敛曲线。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
使用方法
直接运行主脚本即可启动系统。程序会自动执行以下步骤:
- 初始化参数并生成模拟数据。
- 执行POCS迭代重建算法。
- 计算评价指标并在命令行输出。
- 弹出图形窗口展示重建图像、细节对比及收敛趋势。
---
核心算法与实现逻辑
本项目的主程序(main.m)逻辑严密,具体实现细节如下:
1. 系统参数初始化
程序首先定义了超分辨率重建的关键参数:
- 放大倍数:默认为2倍重建。
- 观测帧数:默认使用16帧低分辨率图像。
- 迭代控制:设置最大迭代次数(30次)和收敛阈值(1e-4)。
- PSF设置:定义了高斯模糊核作为点扩散函数,用于模拟成像模糊。
2. 数据生成与预处理(模拟成像链路)
为了验证算法,程序构建了一个逆向的成像模型:
- 图像源:尝试读取标准测试图(cameraman.tif),若缺失则自动生成合成纹理图像,并归一化为灰度浮点数据。
- 亚像素位移:生成随机的亚像素运动向量(范围[-1, 1]像素),并强制第一帧为参考帧(无位移)。
- 劣化过程:对每一帧执行“频域亚像素平移 -> 高斯模糊 -> 下采样 -> 加性高斯白噪声”,生成LR观测序列。
3. POCS重建过程
这是系统的核心部分,采用迭代修正策略:
- 初始估计:使用第一帧LR图像的双立方插值结果作为高分辨率图像的初始猜测。
- 迭代循环:
1.
运动补偿与前向投影:根据每帧的运动向量,将当前的HR估计图像进行位移、模糊和下采样,模拟出对应的“估计LR图像”。
2.
残差计算:计算实际观测的LR帧与“估计LR帧”之间的差值。
3.
反向投影(修正):
* 将残差上采样(稀疏填充)到HR网格。
* 利用旋转后的PSF将残差模糊回去(模拟相关性/反投影)。
* 进行反向位移补偿,将修正量对齐回参考帧坐标系。
* 根据松弛因子和PSF能量归一化权重,更新HR估计图像。
4.
凸集约束:
*
幅度约束:也就是灰度值范围约束,强制将像素值截断在 [0, 1] 之间,确保解在物理意义上有效。
5.
收敛监测:每轮迭代计算MSE和PSNR,并根据前后两次估计的相对差异范数判断是否收敛。
4. 质量评价
程序在重建结束后,分别对“双立方插值结果”和“POCS重建结果”计算以下指标:
- PSNR:通过均方误差计算峰值信噪比。
- SSIM:计算亮度、对比度和结构的相似性指数。
5. 结果可视化
最终生成由6个子图组成的综合展示窗口:
- 显示第1帧低分辨率输入。
- 显示双立方插值结果及其PSNR。
- 显示POCS重建结果及其PSNR。
- 显示原始高分辨率(Ground Truth)图像。
- 细节对比带:将插值、POCS重建和原图的中心区域(ROI)拼接在一起,直观展示边缘和纹理恢复情况。
- 收敛曲线:绘制PSNR随迭代次数变化的曲线图,展示算法的稳定性。
---
关键辅助函数说明
项目包含几个重要的内部函数用于支撑核心逻辑:
shift_image
利用傅里叶变换的平移性质实现亚像素级别的图像位移。
- 原理:在频域中引入线性相位偏移 $exp(-j cdot 2pi cdot (uDelta x/W + vDelta y/H))$。
- 作用:相比空间域插值,频域位移能保持图像频谱信息,避免插值带来的额外平滑,通过
fft2 和 ifft2 实现。
my_psnr
标准的峰值信噪比计算函数。
- 基于MSE(均方误差)计算,处理了MSE为0的理想情况,输出单位为dB。
my_ssim
结构相似性(SSIM)计算函数的实现。
- 原理:遵循Wang et al. (2004) 定义的算法,综合考虑图像的亮度(Mean)、对比度(Variance)和结构(Covariance)信息。
- 实现细节:利用定义的常数(K1, K2, L)来稳定计算过程,通过滑动窗口统计局部统计量。