融合算法算例
- 格式:docx
- 大小:716.03 KB
- 文档页数:9
图像融合算法简介
一、有关IHS变换的遥感图像融合算法及实例计算
1.1 IHS算法
u1=zeros(3,1);
u2=zeros(3,1);
v11=zeros(3,1);
v12=zeros(3,1);
AA=zeros(3,3);
BB=zeros(3,3);
AA=[1/sqrt(3),1/sqrt(3),1/sqrt(3)
1/sqrt(6),1/sqrt(6),-2/sqrt(6)
1/sqrt(2),-1/sqrt(2),0];
BB=[1/sqrt(3),1/sqrt(6),1/sqrt(2)
1/sqrt(3),1/sqrt(6),-1/sqrt(2)
1/sqrt(3),-2/sqrt(6),0];
RGB_up=imread('6.bmp');
RGB_low=imread('5.bmp');
[M,N,color]=size(RGB_up);
R_up=RGB_up(:,:,1);
G_up=RGB_up(:,:,2);
B_up=RGB_up(:,:,3);
[hang,lie,color]=size(RGB_up);
for i=1:hang
for j=1:lie
v11(1)=double(RGB_up(i,j,1));
v11(2)=double(RGB_up(i,j,2));
v11(3)=double(RGB_up(i,j,3));
v12(1)=double(RGB_low(i,j,1));
v12(2)=double(RGB_low(i,j,2));
v12(3)=double(RGB_low(i,j,3));
u1=AA*v11;
u2=AA*v12;
u2(1)=u1(1);
v12=BB*u2;
RGB(i,j,1)=v12(1);
RGB(i,j,2)=v12(2);
RGB(i,j,3)=v12(3);
end
end
r=RGB(:,:,1);
g=RGB(:,:,2); b=RGB(:,:,3);
RGB=uint8(round(RGB));
imshow(RGB)
1.2实例
原MS图像/5 原PAN图像/6
融合后图像
二、有关NSCT变换的医学图像重构算法及实例计算
2.1 NSCT算法
function coeffs = nsct( im, option )
if ~exist('im', 'var')
im = imread ('015.png') ;
elseif isstr(im)
im = imread ( im ) ;
else
error('You shall input valid image name!');
end
% Parameteters: nlevels = [0, 1, 3] ; % Decomposition level
pfilter = 'maxflat' ; % Pyramidal filter
dfilter = 'dmaxflat7' ; % Directional filter
% Nonsubsampled Contourlet decomposition
coeffs = nsctdec( double(im), nlevels, dfilter, pfilter );
% Reconstruct image
imrec = nsctrec( coeffs, dfilter, pfilter ) ;
disp(' ') ;
% Show the reconstruction image and the original image
figure;
subplot(1,2,1), imagesc( im, [0, 255] );
title('Original image' ) ;
colormap(gray);
axis image off;
subplot(1,2,2), imagesc( imrec, [0, 255] );
title('Reconstructed image' ) ;
colormap(gray);
axis image off;
mse = sum( sum( (imrec - double(im)).^2 ) );
mse = mse / numel(im);
disp( sprintf('The mean square error is: %f', mse ) );
disp(' ');
2.2实例
原图像 重构后图像
三、有关Brovey变换的融合算法及实例计算
3.1 Brovey算法
x0=imread('5.bmp');
[a,b,c]=size(x0);
x=double(x0)/255;
y=imread('6.bmp');
y1=double(y)/255;
x1=zeros(a,b);
x2=zeros(a,b);
x3=zeros(a,b);
for f=1:a
for e=1:b
xx(f,e)=x(f,e,1)+x(f,e,2)+x(f,e,3);
x1(f,e)=x(f,e,1)*y1(f,e)/xx(f,e);
x2(f,e)=x(f,e,2)*y1(f,e)/xx(f,e);
x3(f,e)=x(f,e,3)*y1(f,e)/xx(f,e);
end
end
for i=1:a
for j=1:b
p(i,j,1)=x1(i,j);
p(i,j,2)=x2(i,j);
p(i,j,3)=x3(i,j);
end
end
fu=uint8(round(p*255));
%figure,imshow(fu);
%%%%%%%%%%%%%%%%%%%%%%%% 第一主成分 %%%%%%%%%%%%%%%%%%
h=x1(1,1);%最大值
for i=1:a
for j=1:b
if x1(i,j)>h
h=x1(i,j);
else
end
end
end
o=x1(1,1); % 最小值
for i=1:a
for j=1:b
if x1(i,j)
o=x1(i,j);
else
end
end
end
for i=1:a
for j=1:b
xx1(i,j)=(x1(i,j)-o)./(h-o);
end end
%%%%%%%%%%%%%%%%%%%%%%%% 第二主成分 %%%%%%%%%%%%%%%%%%
h=x2(1,1);%最大值
for i=1:a
for j=1:b
if x2(i,j)>h
h=x2(i,j);
else
end
end
end
o=x2(1,1); % 最小值
for i=1:a
for j=1:b
if x2(i,j)
o=x2(i,j);
else
end
end
end
for i=1:a
for j=1:b
xx2(i,j)=(x2(i,j)-o)./(h-o);
end
end
%%%%%%%%%%%%%%%%%%%%%%%% 第三主成分 %%%%%%%%%%%%%%%%%%
h=x3(1,1);%最大值
for i=1:a
for j=1:b
if x3(i,j)>h
h=x3(i,j);
else
end
end
end
o=x3(1,1); % 最小值
for i=1:a
for j=1:b
if x3(i,j)
o=x3(i,j);
else
end
end
end for i=1:a
for j=1:b
xx3(i,j)=(x3(i,j)-o)./(h-o);
end
end
for i=1:a
for j=1:b
l(i,j,1)=xx1(i,j);
l(i,j,2)=xx2(i,j);
l(i,j,3)=xx3(i,j);
end
end
figure,imshow(l);
title('融合后图像');
3.2 实例
原MS图像/5 原PAN图像/6
融合后图像 四、有关PCA变换的图像融合算法及实例计算
4.1 PCA算法
up=imread('6.bmp');
low=imread('5.bmp');
[up_R]=double(up(:,:,1));
[up_G]=double(up(:,:,2));
[up_B]=double(up(:,:,3));
[low_R]=double(low(:,:,1));
[low_G]=double(low(:,:,2));
[low_B]=double(low(:,:,3));
[M,N,color]=size(up);
up_Mx=0;
low_Mx=0;
for i=1:M
for j=1:N
up_S=[up_R(i,j),up_G(i,j),up_B(i,j)]';%生成由R,G, B组成的三维列向量
up_Mx=up_Mx+up_S;
low_S=[low_R(i,j),low_G(i,j),low_B(i,j)]';
low_Mx=low_Mx+low_S;
end
end
up_Mx=up_Mx/(M*N);% 计算三维列向量的平均值
low_Mx=low_Mx/(M*N);
up_Cx=0;
low_Cx=0;
for i=1:M
for j=1:N
up_S=[up_R(i,j),up_G(i,j),up_B(i,j)]';