【图像融合】基于matlab增强随机游走算法多焦点图像融合【含Matlab源码 1975期】
一、 增强随机游走算法图像融合简介
1 引言
红外图像与可见光图像具有很多互补的特性。红外传感器通过捕捉物体的热辐射成像,受光线、天气等条件的影响较小,且能够识别出伪装、遮挡下的目标,但红外传感器的成像分辨率较低,缺乏场景的细节信息。可见光传感器成像分辨率较高,且细节丰富,但较难检测到受遮挡、伪装的目标。为此,融合红外与可见光图像可充分利用两者的优势,有效弥补单一传感器的不足。
基于多尺度分解的红外与可见光图像融合方法是最为经典的也是最为有效的一类融合算法。基于多尺度分解的融合算法主要分为3个步骤:首先,采用多尺度分解方法对每幅输入图像进行多尺度分解,分解为具有不同尺度特征的基本层和细节层;然后,对基本层和细节层采用不同的融合规则进行融合,一般采用“取平均值”规则融合基本层,采用“取最大绝对值”规则融合细节层;最后,对融合的基本层和细节层进行多尺度逆变换输出融合图像。常见的基于多尺度分解的融合方法包括基于拉普拉斯金字塔的融合方法[1]、基于小波变换的融合方法[2]、基于高斯与双边滤波的联合多尺度融合方法[3]、非下采样轮廓波变换的融合方法[4]等。
基于多尺度分解的融合方法经过多尺度分解,将红外图像(可见光图像)分解为一个基本层和多个细节层。目前绝大多数融合规则在融合基本层或者细节层时,都仅从细节层或者基本层中提取一个尺度的信息来比较显著性,然后把显著性大的像素融合进最终的细节层或者基本层中。尽管细节层或者基本层是经过多尺度分解得到的,但是每个细节层或者基本层中依然存在着丰富的、不同尺度的细节信息和结构信息。基于像素或基于区域的融合规则主要将研究重点集中于如何融合每个细节层(基本层)中的单尺度信息,因而,尽管各种复杂的融合规则取得了较好的融合效果,但是这些融合规则并不能将每个细节层(基本层)中的多尺度信息都融合进输出图像中。
为了解决该问题,本文提出的融合规则从多个尺度层面比较了细节层和基本层中信息的显著性,然后采用随机游走算法将不同尺度下的显著信息有效地结合起来,最终可使融合的细节层和基本层具有更加丰富的细节信息与结构信息,从而使融合图像更有益于人眼观察。通过实验比较,证明本文提出的基于随机游走的融合算法具有更好的融合效果。
2 方法介绍
图1所示为本文提出的图像融合算法流程。
图1 红外与可见光图像融合算法流程图
由图1可以看出,本文算法首先利用了经典的拉普拉斯金字塔多尺度分解算法对红外与可见光图像进行多尺度分解,将两幅图像分别分解为一个基本层和多个细节层。基本层和细节层采用相同的融合规则。以基本层融合为例,融合规则首先采用大尺度和小尺度两个均值滤波对红外基本层和可见光基本层进行滤波处理,滤波后可得到不同尺度下的基本层信息,将对应尺度下的基本层信息进行比较可得到大尺度显著图和小尺度显著图;然后采用随机游走算法将两幅显著图估计为一幅理想的显著图,运用该显著图对红外基本层与可见光基本层进行加权求和即可得到融合的基本层;最后结合融合的基本层与细节层即可输出融合图像。
2.1 基于拉普拉斯金字塔的多尺度分解
基于拉普拉斯金字塔的多尺度分解算法首先采用高斯滤波对输入图像进行多尺度滤波(即首先对输入图像进行滤波,之后将滤波后的输出图像作为下一次滤波的输入图像,以此类推,迭代多次),然后将两次相邻的滤波输出图像相减,即可得到细节层和基本层。
- 首先采用高斯滤波对图像进行处理
- 将相邻两次的输出图像相减可得到细节层
2.2 大、小两尺度显著图生成
首先采用窗口半径为r1(r1表示小尺度参数)的小尺度均值滤波对细节层和基本层进行滤波处理
使用引导滤波对大、小尺度显著图进行改进
2.3 基于随机游走的融合规则
求得。将式(10)分解得
其中,
2.4 基本层与细节层融合
融合的基本层B可由估计的显著图C0得到
B=C0d01+(1-C0)d02 (18)
融合的细节层Dm可由估计的显著图Cm(m=1,2,…,T)得到
Dm=Cmdm1+(1-Cm)dm2 (19)
则结合融合的基本层与细节层即可得到融合图像F为
F=B+D1+…+DT 。 (20)
二、部分源代码
function [FocusMap,Fused] = TwoScale_Fusion(I1,I2)
img1 = I1;img2 = I2;
if size(I1,3) == 3
I1 = rgb2gray(I1);
I2 = rgb2gray(I2);
end
% structure-based focus measure for generating two-scale focus maps
sigma1 = 3;
sigma2 = 8;
[map1,map2] = Multiscale_ST(I1,I2,sigma1,sigma2);
% improve the two-scale focus maps using the guided filter
r1 = 5;
eps1 = 10^(-2);
r2 = 11;
eps2 = 10^(-2);
[map1_guided,map2_guided] = Multiscale_Guided(I1, map1, map2, r1, eps1, r2, eps2);
% weight h_ik
alpha1 = 0.9;
alpha2 = 0.8;
[h1,h2] = weight_h(map1_guided,map2_guided,alpha1,alpha2);
% sparse data interpolation for efficient estimation
sigma = 0.02;
g = uint8(I1 * 255);
h = h1 + h2;
F1 = FGS(h1, g, sigma);
F2 = FGS(h, g, sigma);
x1 = F1 ./ (F2 + eps(F2));
x2 = 1 - x1;
% generating the estimated focus map
FocusMap = zeros(size(map1_guided));
FocusMap(x1 >= x2) = map1_guided(x1 >= x2);
FocusMap(x2 >= x1) = map2_guided(x2 >= x1);
% construct the fused image
if size(img1,3) == 1
Fused = FocusMap.*img1 + (1-FocusMap).*img2;
else
Fused(:,:,1) = FocusMap.*img1(:,:,1) + (1-FocusMap).*img2(:,:,1);
Fused(:,:,2) = FocusMap.*img1(:,:,2) + (1-FocusMap).*img2(:,:,2);
Fused(:,:,3) = FocusMap.*img1(:,:,3) + (1-FocusMap).*img2(:,:,3);
end
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]马金磊,徐永强,李雷,余爱国,孟浩.基于随机游走算法的红外与可见光图像融合[J].电光与控制. 2021,28(10)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/126049683
- 点赞
- 收藏
- 关注作者
评论(0)