资源简介
图像融合算法的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
- 上一篇:罗兰c信号生成
- 下一篇:Itti-Matlab.rar
相关资源
- Itti-Matlab.rar
- 运输问题初始解求法MATLAB实现最小元
- 0-9的数字识别,
- 基于matlab的iir滤波器和gui设计.rar
- 脉搏信号特征提取
- NSCT非下采样contoulet变换matlab代码
- DCT处理图像matlab代码
- 灰度共生矩阵在matlab中实现纹理缺陷
- 图像重建迭代算法matlab
- 偏微分方程的MATLAB解法
- 多种群遗传算法-函数优化matlab代码
- MATLAB直流潮流计算
- MATLAB2019b
- 基于PSO算法的PID控制器设计与实现论
- 运输问题西北角法
- 可用——matlab GUI密码登陆界面.zip
- Levinson快速递推法估计功率谱
- 简单潮流计算matlab
-
三相逆变器simuli
nk仿真模型 - 用MATLAB产生各类信号
- matlab水果识别系统设计成品,代码,
- 一个基于bp神经网络的matlab 识别0-9数
- 二分法、牛顿法、割线法、简易牛顿
- 汽车三自由度 非线性状态微分方程
- 杂波程序matlab
- matlab滑动t检验代码
- matlab 2015b 永磁同步电机恒压频比调速
- matlab数据基线调整
- 天牛须搜索算法pdf资源
- matlab查看雷达波形堆积图
评论
共有 条评论