融合算法算例

  • 格式: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)]';