基于MATLAB的红外和可见光图像融合系统[带评价指标]
一、课题介绍
红外技术作为人类认识自然、探索自然的一种新的现代工具,已经被各国普遍的应用于生物、医学、地学等科学领域以及军事侦察方面。红外图像直接反映了物体表面温度分布情况,但由于目标的红外辐射十分复杂,而且影响目标红外辐射的因素很多,红外热图像的清晰度远不如可视图像。可见光图像能够很好的描绘场景中各个物体的外形结构,具有较好的轮廓表现力,所以将红外和可见光图像融为一体有非常好的效果。而通过图像融合是实现这一效果的有效方法,融合后的图像可信度更高,模糊较少,可理解性更好,更适合人的视觉及对源图像的进一步分析、理解以及目标检测、识别或跟踪。图像融合充分利用了多个被融合图像中包含的冗余信息和互补信息,同时又不同于一般意义上的图像增强,它是计算机视觉、图像理解领域的一项新技术。
本文针对红外和可见光图像融合算法进行了研究。通过使用计算机图像处理方法,对同一场景的红外图像和可见光图像进行融合处理,得到一副单一的融合图像,它成功包含了两副源图像的信息。本文主要研究了利用MATLAB软件实现对红外和可见光图像的处理和融合,采用对应像素取大值、取小值、平均值,区域能量、区域对比度比较的融合方法,并且对融合结果图像使用信息熵、标准
差、平均梯度、空间频率的评价指标进行了分析比较。结果表明,融合结果图像
既保留了可见光图像的清晰的轮廓信息,同时也显示了目标物体的表面温度分布情况。
二、图像融合的概念
图像融合(Image Fusion)是指将多源信道所采集到的关于同一目标的图像数据经过图像处理和计算机技术等,最大限度的提取各自信道中的有利信息,最后综合成高质量的图像,以提高图像信息的利用率、改善计算机解译精度和可靠性、提升原始图像的空间分辨率和光谱分辨率,利于监测。图像融合示意图如图 1-4。待融合图像已配准好且像素位宽一致,综合和提取两个或多个多源图像信
冗余信息
互补信息
图 1- 4 图像融合示意图
息。两幅(多幅)已配准好且像素位宽一致的待融合源图像,如果配准不好且像素位宽不一致,其融合效果不好。图像融合的主要目的是通过对多幅图像间的冗余数据的处理来提高图像的可靠性,通过对多幅图像间互补信息的处理来提高图像的清晰度。
图像融合的主要目的包括:
- 增加图像中有用信息的含量,改善图像的清晰度,增强在单一传感器图
像中无法看见或看清的某些特性;
(2) 改善图像的空间分辨率,增加光谱信息的含量,为改善检测、分类、理解、识别性能获取补充的图像信息;
(3) 通过不同时刻的图像序列融合来检测场景或目标的变化情况;
(4) 通过融合多个二维图像产生具有立体视觉的三维图像,可用于三维重建或立体投影、测量等;
(5) 利用来自其他传感器的图像来替代或弥补某一传感器图像中的丢失或故障信息。
三、仿真结果及源码
Matlab是图像处理的一项重要工具,其封装了一系列算法函数,提高了图像处理速度和效率。因此,本文图像处理过程中,使用Matlab工具箱进行进行图像融合。
本文共使用一组可见光与红外图像,分别通过对应像素取大值和取小值、对应像素取平均值和加权平均值、基于区域的能量和对比度融合方法实现图像融合,其实验结果如下,并且根据上一节的评价方法对融合图像进行了客观的融合质量评价,详见表5-1。
1.对应像素取最大值和取小值
1)对应像素取大值:
MATLAB仿真程序:
clear all;
A=imread('p.jpg'); %读取灰度图像
B=imread('q.jpg'); %读取红外图像
A1=double(A);B2=double(B); %将图像转换为double类型
[x,y]=size(A);
for i=1:x
for j=1:y
if A(i,j)>B(i,j)
C(i,j)=A(i,j);
else C(i,j)=B(i,j);
end
end
end
subplot(2,2,1);imshow(A);
xlabel('a)可见光图像')
subplot(2,2,2);imshow(B);
xlabel('b)红外图像')
subplot(2,2,3);imshow(C,[])
xlabel('c)对应像素取大值融合后图像')
融合结果:
图 5- 对应像素取最大值融合后的图像
2)对应像素取小值:
clear all;
A=imread('p.jpg'); %读取灰度图像
B=imread('q.jpg'); %读取红外图像
A1=double(A);B2=double(B); %将图像转换为double类型
[x,y]=size(A);
for i=1:x
for j=1:y
if A1(i,j)>B2(i,j)
C(i,j)=B(i,j);
else C(i,j)=A(i,j);
end
end
end
subplot(2,2,1);imshow(A);
xlabel('a)可见光图像')
subplot(2,2,2);imshow(B);
xlabel('b)红外图像')
subplot(2,2,3);imshow(C,[])
xlabel('c)对应像素取小值融合后图像')
融合结果:
图 5- 对应像素取最小值融合后的图像
2.对应像素取平均值
MATLAB仿真程序:
clear all;
A=imread('p.jpg');
B=imread('q.jpg');
K=imadd(A,B,'double'); %将两幅图像转换为double型,再相加
C1=imdivide(K,2);
subplot(2,2,1);imshow(A);
xlabel('a)可见光图像')
subplot(2,2,2);imshow(B);
xlabel('b)红外图像')
subplot(2,2,3);imshow(C,[]);
xlabel('c)对应像素取平均值融合后图像')
融合结果:
图 5- 对应像素取平均值融合后的图像
3.对应像素取加权平均值
MATLAB仿真程序:
clear all;
P1=imread('p.jpg'); %读取灰度图像
P2=imread('q.jpg'); %读取红外图像
L1=double(P1);L2=double(P2); %将图像转换为double类型
A=immultiply(L1,0.3);
subplot(2,2,1);imshow(P1);
xlabel('a)可见光图像')
subplot(2,2,2);imshow(P2);
xlabel('b)红外图像')
subplot(2,2,3);imshow(C,[])
xlabel('c)对应像素加权平均融合后图像')
融合图像结果:
图 5- 对应像素加权平均融合后的图像
4.基于区域能量比较的融合
1)区域能量取大的融合:
MATLAB仿真程序:
clear all;
P1=imread('p.jpg'); %读取灰度图像
P2=imread('q.jpg'); %读取红外图像
L1=double(P1);L2=double(P2); %将图像转换为double类型
A=L1.^2;B=L2.^2;
[x,y]=size(P1);
for m=2:x-1
for n=2:y-1
a=m-1;b=m+1;c=n-1;d=n+1;
if sum(sum(A([a:b],[c:d])))>sum(sum(B([a:b],[c:d])));
C(m,n)=P1(m,n);
else C(m,n)=P2(m,n);
end
end
end
subplot(2,2,1);imshow(P1);
xlabel('a)可见光图像')
subplot(2,2,2);imshow(P2);
xlabel('b)红外图像')
subplot(2,2,3);imshow(C,[])
xlabel('c)基于区域能量取大融合后图像')
融合结果:
图 5- 基于区域能量取大融合后的图像
- 区域能量取小的融合:
MATLAB仿真程序:
clear all;
P1=imread('p.jpg'); %读取灰度图像
P2=imread('q.jpg'); %读取红外图像
L1=double(P1);L2=double(P2); %将图像转换为double类型
A=L1.^2;B=L2.^2;
[x,y]=size(P1);
C=P1;
for m=2:x-1
for n=2:y-1
a=m-1;b=m+1
if sum(sum(A([a:b],[c:d])))<sum(sum(B([a:b],[c:d])));
C(m,n)=P1(m,n);
else C(m,n)=P2(m,n);
end
end
end
subplot(2,2,1);imshow(P1);
xlabel('a)可见光图像')
subplot(2,2,2);imshow(P2);
xlabel('b)红外图像')
subplot(2,2,3);imshow(C,[])
xlabel('c)基于区域能量取小融合后图像')
图 5- 基于区域能量取小融合后的图像
5.基于区域对比度比较的融合
MATLAB仿真程序:
clear all;
P1=imread('p.jpg'); %读取灰度图像
P2=imread('q.jpg'); %读取红外图像
A=double(P1);B=double(P2); %将图像转换为double类型
[x,y]=size(P1);
C1=A;C2=B;
D1=minus(A,C1);D2=minus(B,C2); %A-C1
E1=rdivide(D1,C1);E2=rdivide(D2,C2);
F=A;
for m1=2:x-1
for n1=2:y-1
a=m1-1;b=m1+1;c=n1-1;d=n1+1;
if mean(mean(E1([a:b],[c:d])))>mean(mean(E2([a:b],[c:d])))
F(m1,n1)=P1(m1,n1);
else F(m1,n1)=P2(m1,n1);
end
end
end
subplot(2,2,1);imshow(P1);
xlabel('a)可见光图像')
subplot(2,2,2);imshow(P2);
xlabel('b)红外图像')
subplot(2,2,3);imshow(F,[])
xlabel('c)基于区域对比度取大融合后图像')
融合结果:
图 5- 基于区域对比度融合后的图像
- 下表列出了不同融合方法所得到的图像的评价结果
表 5- 融合结果图像评价
图像融合方法 | 评价标准 | |||
信息熵E | 标准差std | 平均梯度 | 空间频率 | |
对应像素取最大值 | 6.6948 | 29.5083 | 4.2927 | 9.1607 |
对应像素取最小值 | 6.5223 | 23.8603 | 4.3085 | 8.4296 |
图像融合方法 | 评价标准 | |||
信息熵E | 标准差std | 平均梯度 | 空间频率 | |
对应像素取平均值 | 6.2178 | 22.2666 | 3.2953 | 6.4550 |
对应像素加权平均 | 6.2819 | 21.4988 | 3.3771 | 6.6744 |
基于区域能量取大 | 6.7375 | 29.9311 | 4.6958 | 11.4168 |
基于区域能量取小 | 6.5445 | 24.3389 | 4.5668 | 9.5732 |
基于区域对比度 | 1.8530e-04 | 33.9577 | 16.2664 | 36.5167 |
由融合结果图像和上表可以看出基于区域能量的融合方法优于对应像素的融合方法。基于区域能量取大的融合方法所得到的图像质量最好,信息熵、标准差、平均梯度、空间频率的值最大,融合图像所含的信息丰富,图像清晰。
对应像素融合的方法中,对应像素取平均值的方法融合的结果图像质量最差,包含的信息不够丰富,图像模糊。对应像素取加权平均值的方法标准差最小,色调单一均匀,看不出太多的信息。像素值取大和像素值取小法所得到的融合图像,它们对图像的整体把握不好,要么图像整体暗淡,要么整体就偏亮,且边缘信息比较模糊,对比度较低。
基于区域对比度的融合方法所得到的图像模糊,信息熵小,分析编写程序和算法可能是在计算过程中灰度值超出了0~255的范围,也可能是计算的高频分量值过小,对比度值异常过大,接近于无穷大,导致了图像局部偏亮或者局部暗淡,融合图像质量不够好。
将以上实验结果中的融合图像与原可见光图像和红外图像作对比,不难看出,融合结果图像既有可见光图像中的边缘特征,同时也反映了红外图像中目标物体或者场景的温度分布信息,实现了可将光图像特点与红外图像特征的有效结合,能更全面并且准确地表达目标物体或者场景所包含的信息,能够很好地实现目标识别和监测等实际应用。