基于NSCT与PCNN的图像融合算法实现
项目介绍
本项目是一个基于MATLAB开发的高级图像融合系统,旨在解决多聚焦图像或多模态图像的融合问题。算法核心结合了非下采样轮廓波变换(NSCT)的多尺度、多方向平移不变性优势,以及脉冲耦合神经网络(PCNN)在处理高频细节信息方面的全局耦合与同步点火特性。
系统能够将两幅具有不同清晰区域的源图像(如多聚焦图像)融合为一幅全清晰图像。代码不依赖庞大的第三方NSCT工具箱,而是通过MATLAB原生函数实现了完整的NSCT分解仿真、PCNN点火融合逻辑以及ModifyLow低频融合策略,具有高度的可移植性和独立性。
功能特性
- 独立的NSCT算法仿真:代码内部实现了基于 'à trous' 算法的非下采样塔式分解(NSP)和基于方向滤波器组的仿真实现,支持多层级(默认3层)和多方向(4方向)分解。
- 自适应PCNN高频融合:利用简化的PCNN模型处理高频子带。通过模拟神经元点火机制生成点火图(Firing Map),根据点火次数的显著性自适应选择高频系数,有效保留边缘和纹理。
- ModifyLow低频策略:针对低频分量,采用基于区域能量(邻域方差)和加权平均相结合的ModifyLow策略,并通过高斯平滑处理决策图,避免了传统融合方法在边界处的伪影问题。
- 自动仿真演示:内置图像生成逻辑,能够自动读取系统图像(如cameraman.tif)并模拟生成左焦、右焦两幅多聚焦源图像,无需准备外部数据集即可直接运行测试。
- 全流程可视化:提供从源图像生成、融合结果展示到差异对比分析的完整视觉反馈,并计算信息熵作为客观评价指标。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
使用方法
- 将项目代码保存至MATLAB工作路径中。
- 直接运行主函数。
- 系统将自动执行以下流程:
* 读取或生成基准图像。
* 模拟生成一对多聚焦源图像(左侧清晰/右侧清晰)。
* 执行NSCT分解、低频与高频融合、NSCT重构。
* 弹出窗口显示源图像、融合结果及对比图,并在控制台输出信息熵评价指标。
详细算法实现说明
本项目在单一脚本中集成了完整的算法逻辑,主要包含以下核心模块:
1. 图像预处理与源图像模拟
为了保证代码的即插即用,程序首先检查是否存在标准测试图。读取图像后,将其转换为灰度图并归一化。随后,利用高斯模糊和加权掩膜(Mask)技术,人工合成两幅互补的多聚焦图像(一幅左侧清晰,一幅右侧清晰),以此作为算法的输入源。
2. NSCT 分解实现细节
代码未调用外部编译库,而是通过Matlab函数模拟了NSCT的核心思想:
- 多尺度分解:采用
upsample_filter 函数对 '9-7' 滤波器进行插值(孔洞算法),实现非下采样塔式分解。每一层分解产生一个低频近似图像和一个高频残差图像。 - 多方向分解:利用构造的四个方向(水平、垂直、对角、反对角)的卷积核,对每一层的高频残差进行滤波,模拟NSCT的方向子带系数。
3. 低频融合策略 (ModifyLow)
低频部分包含了图像的轮廓和能量分布。融合步骤如下:
- 计算两个源图像低频分量的局部邻域方差,以此近似表示区域能量。
- 比较两幅图像的区域能量,生成初始二值决策图(选择能量大者)。
- 利用高斯滤波器对决策图进行平滑处理,使得融合权值在0到1之间平滑过渡。
- 根据平滑后的权值图对源低频系数进行加权重构,既保留了显著特征,又使得光照和背景过渡自然。
4. 高频融合策略 (PCNN)
高频部分包含了图像的边缘和细节。融合步骤如下:
- 构建简化的PCNN神经元模型,参数包括迭代次数(50次)、连接强度、衰减系数等。
- 将每一层、每一个方向的高频系数绝对值作为PCNN的外部激励输入。
- 点火机制:神经元通过内部活动项和动态阈值的相互作用产生脉冲。代码通过循环迭代,统计每个位置神经元的总点火次数(Firing Map)。
- 融合规则:比较两个源图像对应位置的点火次数,点火次数多意味着该位置特征更显著(如边缘更清晰)。融合系数直接选取点火次数较多的一方。
5. NSCT 重构与评价
- 重构:执行分解的逆过程。首先将四个方向的高频细数进行加权累加恢复成单层高频残差,然后将其与当前层的低频分量相加,逐层向上恢复,最终得到融合图像。
- 评价:计算融合后图像的信息熵(Entropy),并绘制源图像与融合图像的并列对比图,便于直观观察清晰度的恢复情况。