基于平均滤波的红外和可见光图像融合
使用平均滤波将原始图像分解为两尺度表示。基层得到如下:
Bn= un∗ Z, n = 1,2
其中un(n = 1,2)为原始图像,Z为平均滤波,其大小为30×30。在基础层的基础上,可以很容易地得到细节层:
Dn= un− Bn, n = 1,2
两尺度分解的目的是将每幅源图像分割为一个基层和一个细节层。基础层包含图像中的大尺度变化,细节层包含小尺度细节。两尺度分解将源图像分成两个尺度,每个尺度包含不同的信息。这使得后期的融合信息更加全面和具体,使得融合规则更具针对性。
融合规则:
低频使用平均融合规则;
高频使用绝对值最大融合规则;
Two尺度图像重建:
通过以上步骤,我们可以得到融合的基层和细节层。最后,将源图像的两层相加,得到完整的融合图像:
u = B + D
clear
clc
tic;%计时
%%%%%%%%%%%% 局部能量最大法
A=imread('E:\shearlet_toolbox_1 - 0927\liuch\pictures\IR7.bmp');
C=imread('E:\shearlet_toolbox_1 - 0927\liuch\pictures\VIS7.bmp');
x1=double(A);
x2=double(C);
PSF=fspecial('average',30);
%算术均值滤波(低频)
B1=imfilter(x1,PSF);
B2=imfilter(x2,PSF);
%高频
D1=x1-B1;
D2=x2-B2;
%低频融合规则
B=B1+B2; %计算平均值
B=0.5*B;
%%%%%%%高频融合
% sizes1=size(D1);
% for j=1:sizes1
D=jueduizuida(D1,D2);
% end
xx=B+D;
%图像显示
figure;
imshow(A),title('红外图像');
figure;
imshow(C),title('可见光图像');
figure;
imshow(uint8(xx)),title('融合后的');
axis square
[entropy,AveGrad,StD,Q,Sf]=myparameter(xx,A,C);
canshu=[entropy,AveGrad,StD,Q,Sf];
toc; %计时结束
function y3=jueduizuida(y1,y2)
[r,c]=size(y1); %根据低频融合算法进行图像融合
for i=1:r %首先取两幅源图像相应的小波分解系数绝对值最大者的值作为融合图像的分解系数
for j=1:c
if( abs(y1(i,j)) >= abs(y2(i,j)) )
y3(i,j)=y1(i,j);
elseif( abs(y1(i,j)) < abs(y2(i,j)) )
y3(i,j)=y2(i,j);
end
end
end
end
参考论文: Multi-focus image fusion based on fractional-order derivative and intuitionistic fuzzy sets