应用主成分分解PCA法的图像融合技术.doc
《应用主成分分解PCA法的图像融合技术.doc》由会员分享,可在线阅读,更多相关《应用主成分分解PCA法的图像融合技术.doc(5页珍藏版)》请在冰豆网上搜索。
应用主成分分解PCA法的图像融合技术
1、实现代码:
%functionPca=PCA(TM);
clear
up=imread('high.jpg');%读图像
low=imread('low.jpg');
figure
(1)%建立第一幅图像
imshow(up);%显示图像
title('PCA-RGB表示的高分辨率图像');%图像标题为…
figure
(2)%建立第二幅图像
imshow(low);%显示图像
title('PCA-RGB表示的低分辨率图像');%图像标题为…
%up是一个三维数组,高分辨率图像被分解成R,G,B三个分量
[up_R]=double(up(:
:
1));
[up_G]=double(up(:
:
2));
[up_B]=double(up(:
:
3));
%low是一个三维数组,低分辨率图像被分解成R,G,B三个分量
[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;
fori=1:
M
forj=1:
N
up_S=[up_R(i,j),up_G(i,j),up_B(i,j)]';
%生成由R,G,B组成的三维列向量,每一个位置对应的rgb的值表示出来
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_Mx也是一个矩阵,每个元素都除以M*N
up_Cx=0;
low_Cx=0;
fori=1:
M
forj=1:
N
up_S=[up_R(i,j),up_G(i,j),up_B(i,j)]';
up_Cx=up_Cx+up_S*up_S';
%up_Cx加上up_S矩阵乘以矩阵的转置
low_S=[low_R(i,j),low_G(i,j),low_B(i,j)]';
low_Cx=low_Cx+low_S*low_S';
end
end
up_Cx=up_Cx/(M*N)-up_Mx*up_Mx';
%运用公式cov(x,y)=E(xy)-ExEy计算协方差矩阵
low_Cx=low_Cx/(M*N)-low_Mx*low_Mx';
[up_A,up_latent]=eigs(up_Cx);
%协方差矩陈的特征向量组成的矩阵----PCA变换的系数矩陈,特征值%up_latent为6个最大特征值,up_A的列向量为对应特征向量。
[low_A,low_latent]=eigs(low_Cx);
fori=1:
M
forj=1:
N
up_X=[up_R(i,j),up_G(i,j),up_G(i,j)]';
%生成由R,G,B组成的三维列
up_Y=up_A'*up_X;%每个象素点进行PCA变换正变换up_A'为特%征向量的转置
up_Y=up_Y';%转置
up_R(i,j)=up_Y
(1);%高分辨率图片的第1主分量
up_G(i,j)=up_Y
(2);%高分辨率图片的第2主分量
up_B(i,j)=up_Y(3);%高分辨率图片的第3主分量
low_X=[low_R(i,j),low_G(i,j),low_G(i,j)]';
low_Y=low_A'*low_X;
low_Y=low_Y';
low_R(i,j)=low_Y
(1);%低分辨率图片的第1主分量
low_G(i,j)=low_Y
(2);%低分辨率图片的第2主分量
low_B(i,j)=low_Y(3);%低分辨率图片的第3主分量
end
end
fori=1:
M
forj=1:
N
up_Y=[up_R(i,j),up_G(i,j),up_B(i,j)]';
%生成由R,G,B组成的三维列向量
up_X=up_A*up_Y;%每个象素点进行PCA变换反变换
up_X=up_X';%转置
up_r(i,j)=up_X
(1);
up_g(i,j)=up_X
(2);
up_b(i,j)=up_X(3);
low_Y=[up_R(i,j),low_G(i,j),low_B(i,j)]';
%生成由R,G,B组成的三维列向量,并将低分辨率的
%全色图像的第一主成分替换成高分辨率的第一主成分
low_X=low_A*low_Y;
low_X=low_X';
low_r(i,j)=low_X
(1);
low_g(i,j)=low_X
(2);
low_b(i,j)=low_X(3);
end
end
%生成最终的融合图像
RGB(:
:
1)=low_r;
RGB(:
:
2)=low_g;
RGB(:
:
3)=low_b;
figure(3)%建立第三副图像
imshow(uint8(RGB));%显示图像
title('PCA-RGB表示的融合图像');
2、运行结果: