c++程序不好找,找到一些matlab程序进行梳理。
至少明白了一个道理,别拿新浪博客不当资源…
主要梳理下面2个程序:
1)PCA变换:基于主成分变换(PCA)的图像融合
2)PCA融合:基于PCA的图像融合
前者是对图像进行PCA变换,并将第一主分量放在R通道(3个主分量依次放入R、G、B通道);
后者是对图像进行PCA融合。
注:
1)第一个程序,要求输入图像均为3通道
,且大小一致
% 基于PCA变换的图像融合方法
%------------------------读入图片
up = imread('pic/high.jpg');
low = imread('pic/low.jpg');
subplot(2,2,1);imshow(up);title('高分辨率图像');
subplot(2,2,2);imshow(low);title('低分辨率图像');
[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)]; % 生成由RGB组成的三维列向量
up_Mx = up_Mx + up_S; % 叠加计算RGB各列向量的总和
low_S = [low_R