资源简介

图像融合算法的matlab实现,包括灰度极大值融合,加权融合,相关系数融合,TOE融合,HIS融合,PCA融合等等

资源截图

代码片段和文件信息

%基于PCA变换的图像融合方法
up=imread(‘D:\MATLABprojects\plane.png‘);
low=imread(‘D:\MATLABprojects\tree.png‘);
[MNcolor]=size(up);
RGB=low;
%把函数类型uint8转换为double
[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));

up_Mx=0;
low_Mx=0;
for i=1:M
    for j=1:N
        up_S=[up_R(ij)up_G(ij)up_B(ij)]‘;%生成由RGB组成的三维列向量
        up_Mx=up_Mx+up_S;%叠加计算RGB各列向量的总和
        low_S=[low_R(ij)low_G(ij)low_B(ij)]‘;
        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(ij)up_G(ij)up_B(ij)]‘;%矩阵转置
        up_Cx=up_Cx+up_S*up_S‘;
        low_S=[low_R(ij)low_G(ij)low_B(ij)]‘;
        low_Cx=low_Cx+low_S*low_S‘;
    end
end
%计算协方差矩阵及特征值
up_Cx=up_Cx/(M*N)-up_Mx*up_Mx‘;%计算协方差矩阵
low_Cx=low_Cx/(M*N)-low_Mx*low_Mx‘;
[up_Aup_latent]=eigs(up_Cx);%协方差矩阵的特征向量组成的矩阵
[low_Alow_latent]=eigs(low_Cx);%即PCA变换的系数矩阵,特征值

for i=1:M
    for j=1:N
        up_X=[up_R(ij)up_G(ij)up_B(ij)]‘;
        up_Y=up_A‘*up_X;%对每个像素点进行PCA正变换
        up_Y=up_Y‘;
        up_R(ij)=up_Y(1);%plane图像的第三主成分
        up_G(ij)=up_Y(2);%plane图像的第二主成分
        up_B(ij)=up_Y(3);%plane图像的第一主成分
        low_X=[low_R(ij)low_G(ij)low_B(ij)]‘;
        low_Y=low_A‘*low_X;
        low_Y=low_Y‘;
        low_R(ij)=low_Y(1);%tree图像的第三主成分
        low_G(ij)=low_Y(2);%tree图像的第二主成分
        low_B(ij)=low_Y(3);%tree图像的第一主成分
 
    end
end
figure;
subplot(311);imshow(uint8(up_R));title(‘plane图像的第三主成分‘);
subplot(312);imshow(uint8(up_G));title(‘plane图像的第二主成分‘);
subplot(313);imshow(uint8(up_B));title(‘plane图像的第一主成分‘);
figure;
subplot(311);imshow(uint8(low_R));title(‘tree图像的第三主成分‘);
subplot(312);imshow(uint8(low_G));title(‘tree图像的第二主成分‘);
subplot(313);imshow(uint8(low_B));title(‘tree图像的第一主成分‘);

for i=1:M
    for j=1:N
        up_Y=[up_R(ij)up_G(ij)up_B(ij)]‘;
        up_X=up_A*up_Y;%对每个像素点进行PCA反变换
        up_X=up_X‘;
        up_r(ij)=up_X(1);
        up_g(ij)=up_X(2);
        up_b(ij)=up_X(3);
        low_Y=[low_R(ij)low_G(ij)up_B(ij)]‘;%用plane图像的第一主成分替换
        low_X=low_A*low_Y;
        low_X=low_X‘;
        low_r(ij)=low_X(1);
        low_g(ij)=low_X(2);
        low_b(ij)=low_X(3);
 
    end
end
for i=1:M
    for j=1:N
        RGB(ij1)=round(low_r(ij));
        RGB(ij2)=round(low_g(ij));
        RGB(ij3)=round(low_b(ij));
    end
end

figure;
subplot(311);imshow(up);
subplot(312);imshow(low);
subplot(313);imshow(uint8(RGB));title(‘融合后图像‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-06-16 10:55  新建文件夹 (2)\images\
     文件       23329  2007-01-07 19:04  新建文件夹 (2)\images\clock1.bmp
     文件       26535  2007-01-07 19:04  新建文件夹 (2)\images\clock2.bmp
     文件       17263  2004-06-13 15:46  新建文件夹 (2)\images\high.jpg
     文件       12150  2004-06-13 15:47  新建文件夹 (2)\images\low.jpg
     文件        2887  2020-05-04 19:40  新建文件夹 (2)\PCA_2.m
     文件        2791  2020-05-04 18:13  新建文件夹 (2)\PCA_ronghe.m
     文件       83485  2020-05-04 16:13  新建文件夹 (2)\plane.png
     文件        2804  2020-05-04 19:17  新建文件夹 (2)\ronghe1.m
     文件        1117  2020-05-04 21:14  新建文件夹 (2)\ronghe2.m
     文件      670977  2020-05-04 15:58  新建文件夹 (2)\tree.png

评论

共有 条评论