用特定的算法将两幅或多幅图像综合成一幅新的图像。融合结果由于能利用两幅(或多幅) 图像在时空上的相关性及信息上的互补性,并使得融合后得到的图像对场景有更全面、清晰的描述,从而更有利于人眼的识别和机器的自动探测。
确保待融合图像已配准好且像素位宽一致,且融合后的图像相对原始图像具有较高的空间分辨率和光谱分辨率,具有明显的突出信息和较低的噪声。两幅(多幅)已配准好且像素位宽一致的待融合源图像,如果配准不好且像素位宽不一致,其融合效果不好。
图像融合(Image Fusion) 技术在遥感探测、安全导航、医学图像分析、反恐检查、环境保护、交通监测、清晰图像重建、灾情检测与预报尤其在计算机视觉等领域都有着重大的应用价值。用于较多也较成熟的是红外和可见光的融合,在一副图像上显示多种信息,突出目标。
完整代码:
clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
I1 = imread('bianji2.jpg','jpeg');
I2 = imread('bianji1.jpg','jpeg');%导入两张长宽大小一致的图片
subplot(2,3,1), imshow(I1)
subplot(2,3,4), imshow(I2)
A=[0.8 0.2; 0.2 0.8];
X1=double(A(1,1)*I1+A(1,2)*I2);
X2=double(A(2,1)*I1+A(2,2)*I2);
subplot(2,3,2), imshow(uint8(X1));
subplot(2,3,5), imshow(uint8(X2));
[m,n]=size(X1);
x1=reshape(X1,m*n,1);
x2=reshape(X2,m*n,1);
x1=x1-mean(x1);
x2=x2-mean(x2);
theta0=0.5*atan(-2*sum(x1.*x2)/sum(x1.^2-x2.^2));
Us=[cos(theta0) sin(theta0); -sin(theta0) cos(theta0)];
sig1=sum((x1*cos(theta0)+x2*sin(theta0)).^2);
sig2=sum((x1*cos(theta0-pi/2)+x2*sin(theta0-pi/2)).^2);
Sigma=[1/sqrt(sig1) 0; 0 1/sqrt(sig2)];
X1bar=Sigma(1,1)*(Us(1,1)*X1+Us(1,2)*X2);
X2bar=Sigma(2,2)*(Us(2,1)*X1+Us(2,2)*X2);
x1bar=reshape(X1bar,m*n,1);
x2bar=reshape(X2bar,m*n,1);
phi0=0.25*atan(-sum(2*(x1bar.^3).*x2bar ...
-2*(x2bar.^3).*x1bar)/ ...
sum(3*(x1bar.^2).*(x2bar.^2)-0.5*(x1bar.^4) ...
-0.5*(x2bar.^4)));
V=[cos(phi0) sin(phi0); -sin(phi0) cos(phi0)];
S1bar=V(1,1)*X1bar+V(1,2)*X2bar;
S2bar=V(2,1)*X1bar+V(2,2)*X2bar;
min1=min(min(min(S1bar)));
S1bar=S1bar+min1;
max1=max(max(max(S1bar)));
S1bar=S1bar*(255/max1);
min2=min(min(min(S2bar)));
S2bar=S2bar+min2;
max2=max(max(max(S2bar)));
S2bar=S2bar*(255/max2);
subplot(2,3,3), imshow(uint8(S1bar));
subplot(2,3,6), imshow(uint8(S2bar));