基于稀疏表示的图像融合方法

基于稀疏表示(Sparse Representation,SR)的图像融合方法


一、核心原理

  1. 稀疏假设
    任何图像块 x 均可表示为“过完备字典 D”上少数原子 α 的线性组合:
    x ≈ Dα,且 α 中绝大多数元素 ≈ 0。
  2. 融合思路
    将多幅源图像的稀疏系数 α₁, α₂, … 按一定规则合并为 αf,再用 D 重构得到融合图像:
    x_f = Dα
    f。
    该思想贯穿像素级、特征级与决策级融合 。

二、通用实施步骤(可直接在 MATLAB 复现)

步骤 作用 关键命令/函数
1. 分块 将源图像滑窗为小块(8×8 或 16×16) im2col / mat2cell
2. 字典学习 K-SVD、DCT、MOD、卷积稀疏字典 ksvddictlearn
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 年最新改进方案

  1. NSCT-SR-PCNN(非下采样轮廓波 + 稀疏 + 脉冲耦合网络)

    • 低频:OMP 稀疏编码 + 范数融合规则
    • 高频:PCNN 点火图引导融合,显著性增强 。
  2. CS-MCA(卷积稀疏形态分量分析)

    • 用卷积字典直接对整幅图建模,避免滑窗块效应 。
  3. 低秩-稀疏联合(LRSR)

    • 将红外/可见光分解为低秩背景 + 稀疏显著性,再分别融合 。
  4. 轻量化实现

    • 字典尺寸 ≤ 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('融合结果');

 

五、典型应用

参考代码 基于稀疏表示的图像融合方法 www.youwenfan.com/contenttec/45788.html

用 8×8 分块 + K-SVD 字典 + OMP 稀疏编码 + 最大值融合规则,即可在 30 行 MATLAB 代码内完成高保真图像融合;最新 NSCT-SR-PCNN 与卷积稀疏表示方案在边缘/纹理保持上再提升 5–10 % 。

专注于matlab/simulink,电子电路,编程