基于稀疏表示(Sparse Representation,SR)的图像融合方法
一、核心原理
- 稀疏假设
任何图像块 x 均可表示为“过完备字典 D”上少数原子 α 的线性组合:
x ≈ Dα,且 α 中绝大多数元素 ≈ 0。 - 融合思路
将多幅源图像的稀疏系数 α₁, α₂, … 按一定规则合并为 αf,再用 D 重构得到融合图像:
x_f = Dαf。
该思想贯穿像素级、特征级与决策级融合 。
二、通用实施步骤(可直接在 MATLAB 复现)
| 步骤 | 作用 | 关键命令/函数 |
|---|---|---|
| 1. 分块 | 将源图像滑窗为小块(8×8 或 16×16) | im2col / mat2cell |
| 2. 字典学习 | K-SVD、DCT、MOD、卷积稀疏字典 | ksvd、dictlearn |
| 3. 稀疏编码 | OMP、BP、Lasso 求解 α | omp(SPAMS) |
| 4. 系数融合 | 最大值、加权平均、PCNN 点火图 | max, mean, pcnn_fire |
| 5. 图像重构 | 字典反变换 + 重叠平均 | col2im, ifft2 |
| 6. 客观评价 | 熵、Q_AB/F、SSIM、Friedman 检验 | entropy, ssim, friedman |
三、2024-2025 年最新改进方案
-
NSCT-SR-PCNN(非下采样轮廓波 + 稀疏 + 脉冲耦合网络)
- 低频:OMP 稀疏编码 + 范数融合规则
- 高频:PCNN 点火图引导融合,显著性增强 。
-
CS-MCA(卷积稀疏形态分量分析)
- 用卷积字典直接对整幅图建模,避免滑窗块效应 。
-
低秩-稀疏联合(LRSR)
- 将红外/可见光分解为低秩背景 + 稀疏显著性,再分别融合 。
-
轻量化实现
- 字典尺寸 ≤ 256 原子,OMP 迭代 ≤ 10,单幅 512×512 图 < 1 s(CPU)。
四、MATLAB 代码框架(单文件示例)
%% 1. 读图
A = imread('IR.png'); B = imread('VIS.png');
[im1,im2] = deal(rgb2gray(A), rgb2gray(B));
%% 2. 参数
patchSize = 8; stride = 4;
dictSize = 256; overlap = true;
%% 3. 字典学习(K-SVD)
D = generateDict([im1 im2], patchSize, dictSize);
%% 4. 稀疏编码(OMP)
alpha1 = sparseCoding(im1, D, patchSize, stride);
alpha2 = sparseCoding(im2, D, patchSize, stride);
%% 5. 融合规则:最大值
alphaF = max(abs(alpha1), abs(alpha2)) .* sign(alpha1+alpha2);
%% 6. 重构
F = reconstruct(alphaF, D, size(im1), stride, overlap);
%% 7. 评价
Q = qabf(im1,im2,F);
fprintf('Q_AB/F = %.3f\n', Q);
imshow(F); title('融合结果');
五、典型应用
- 医学:MRI/CT、PET/CT 多模态融合
- 遥感:多光谱与全色图像融合
- 安防:红外与可见光日夜融合
- 工业检测:多焦点缺陷检测
参考代码 基于稀疏表示的图像融合方法 www.youwenfan.com/contenttec/45788.html
用 8×8 分块 + K-SVD 字典 + OMP 稀疏编码 + 最大值融合规则,即可在 30 行 MATLAB 代码内完成高保真图像融合;最新 NSCT-SR-PCNN 与卷积稀疏表示方案在边缘/纹理保持上再提升 5–10 % 。