2015-12-21 17:11:35 baimafujinji 阅读数 12257
  • 机器学习案例实战第六课-PCA与Xgboost视频教学

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 用实例演示机器学习中的Xgboost算法和PCA原理。本视频课程首先讲解两个案例,基于文本分类的股价预测与PCA降维应用在鸢尾花数据集上。简介Xgboost算法原理,并安装xgboost实例演示如何进行操作。 会员卡优惠购买:http://edu.csdn.net/lecturer/1079

    3151 人正在学习 去看看 唐宇迪

欢迎关注我的博客专栏“图像处理中的数学原理详解

全文目录请见 图像处理中的数学原理详解(总纲)

http://blog.csdn.net/baimafujinji/article/details/48467225



如果你对PCA的推导和概念还不是很清楚,建议阅读本文的前导文章

http://blog.csdn.net/baimafujinji/article/details/50372906


6.4.3 主成分变换的实现


本小节通过一个算例验证一下之前的推导。在前面给出的例子中,各点在原始的

由于方程是齐次的,所以不独立。因为系数矩阵有零行列式,所以方程有非无效解。从两个方程的任何一个可见

现在考虑该结论该如何解释。特征向量g1和g2是在原坐标系中用来定义主成分轴的向量,如图6-20所示,其中,e1和e2分别是水平和垂直的方向向量。显而易见,这些数据在新坐标系中是非相关的。该新坐标系是原坐标系的旋转,出于这种原因,可以将主成分变换理解为旋转变换(即使在高维空间上亦是如此)。

6.4.4 基于K-L变换的图像压缩

从图像压缩的角度出发,我们必然希望变换系数协方差矩阵Σx 中除对角线外的所有协方差均为零,成为对角线矩阵,即原来像素间的相关性经变换后全部解除,或者至少大部分协方差要等于或接近于零。为此,需要选择适当的变换矩阵,它作用于Σx 后使其变成对角线型。通过前面的分析和推导,可知这样的变换矩阵是存在的。如果用协方差矩阵Σx 的特征向量作变换的基向量,即由Σx 的特征向量作为正交变换的变换矩阵,就可以得到对角线型的变换域协方差矩阵Σy 。K-L变换就是采用这种矩阵进行变换的正交变换,它可以在变换域完全解除相关性,因此是理论上的最佳变换。同时,换一个角度也可以证明,K-L变换是均方误差最小准则下的最佳变换,即当压缩比确定的情况下,采用K-L变换后,重建图像的均方误差比采用任何其他正交变换的都小。

但是回顾之前进行的K-L变换,哪个步骤可以称为图像压缩的切入点呢?一幅大小为M×N的图像,它的协方差矩阵Σx大小为MN×MN。由上述K-L变换理论可知,对X进行K-L变换的变换矩阵就是Σx的特征向量矩阵,该矩阵大小亦为MN×MN,其大小远远大于原始图像数据矩阵。而且要在解码时恢复原图像,不但需要变换后的系数矩阵Y,还需要知道逆变换矩阵(也就是变换矩阵的转置)。如果不经过任何处理就这样直接将K-L变换用于数字图像的压缩编码,不但达不到任何数据压缩的效果,还极大的增加了数据量。即使仅保留一个最大的特征值,变换矩阵中和该特征值对应的特征向量为M×N维,系数矩阵 Y 保留的元素为一个。要重建图像数据,需要保留的元素个数为仍大于原矩阵,所以达不到压缩的目的。另外,求一个矩阵的协方差矩阵和特征向量矩阵,都是非常复杂的运算过程,需要大量的计算。当X比较大时,运算时间的耗用可能是非常大的。有时甚至会出现因为过于复杂而导致Σx和变换矩阵无法求解的情况。


要解决上述问题,可以考虑将图像分成若干个小块,然后对每个小块分别进行K-L变换(这与本章前面的处理方式基本保持一致)。这样使得Σx和变换矩阵都比较小,计算机处理起来比较容易而且速度快。这里仍然将图像划分为多个不重叠的8×8小块(当图像垂直和水平方向的像素数不是8的倍数时补0,使之均为8的倍数)。然后再分别对每一个小块执行K-L变换,变换矩阵的数目为K个,每个矩阵大小为64×64,仅变换矩阵就要记录K×64×64个数据,还是远远大于原始数据的个数M×N。是否可以让变换矩阵的数量变得少些,最好只保留一个变换矩阵。回忆前面做K-L变换的例子,变换矩阵的大小与输入矩阵的维度有关,而与样本数量无关,据此可以将每个8×8小块变成一个行向量(也就是一个64维的数组),原图中的每一个小方块都是一个64维的样本。所以最后只需要一个64×64的变换矩阵即可,它对于原图像的任意一个数据块都适用。这样的处理方式并不是完全意义上的K-L 变换,因为采用分块的处理方式,各个数据块之间的相关性是没有消除的。但实验亦表明,这样的K-L 变换虽然不能完全消除图像各像素点之间的相关性,也能达到很好的去相关效果,在去相关性性能上优于离散余弦变换。


图像数据经K-L变换后,得到的系数矩阵Y大部分系数都很小,接近于零。只有很少的几个系数的数值比较大,这正是K-L变换所起到的去除像素间的相关性,把能量集中分布在较少的变换系数上的作用的结果。据此,在图像数据压缩时,系数矩阵Y保留M个分量,其余分量则舍去。在实际编程开发中,经K-L变换后的系数矩阵中的数值都是按从大到小的顺序排列的,所以直接舍去后面的64−M个分量即可。通过这一步的处理,便可动态地调节压缩编码系统的压缩比和重建图像的质量。解码时,首先做K-L逆变换,然后将上述过程逆转,可以得到重建后的图像数据矩阵。


我们在MATLAB中编写的示例程序演示了运用上述方法对图像实施基于K-L变换的压缩处理的过程。最后可以通过编程实现基于K-L变换的图像压缩算法并测试其压缩效果,所得之测试结果如图6-22所示。该程序验证了三种不同的压缩比,即舍去排序后的系数矩阵中的32/64(对应压缩比50%)、48/64(对应压缩比75%)以及56/64(对应压缩比87.5%)。相关测试程序源码读者可以从本书的在线支持资源中下载得到。


最后需要补充说明的是尽管K-L变换可以将数据之间的相关性完全去除,所以理论上是一种最理想的数据压缩方案,但它在实际应用过程中仍然受到很大局限。例如,它没有快速算法,不同的图像所对应的变换矩阵也不同,从这个角度来说,单纯将K-L变换直接应用于图像数据压缩的理论价值要大于实际价值。它的存在意义,一方面是可以作为理论验证的参考模板,另一方面就是需要对原始算法加以改进后再付诸应用。


我的“图像处理中的数学原理”专栏中之系列文章已经以《图像处理中的数学修炼》为名结集出版(清华大学出版社)。该书详细介绍图像处理中的数学原理,为你打开一道通往图像世界的数学之门,详细内容及目录请见 http://blog.csdn.net/baimafujinji/article/details/48467225


2019-07-22 20:15:17 Dandelion_2 阅读数 1235
  • 机器学习案例实战第六课-PCA与Xgboost视频教学

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 用实例演示机器学习中的Xgboost算法和PCA原理。本视频课程首先讲解两个案例,基于文本分类的股价预测与PCA降维应用在鸢尾花数据集上。简介Xgboost算法原理,并安装xgboost实例演示如何进行操作。 会员卡优惠购买:http://edu.csdn.net/lecturer/1079

    3151 人正在学习 去看看 唐宇迪

参考资料:https://blog.csdn.net/u013165921/article/details/78339942
基于 IHS 变换和主成分分析变换的图像融合

PCA变换
PCA变换也称霍特林变换或K-L变换,是一种基于信息量的正交线性变换,该变换主要是采用线性投影的方法将数据投影到新的坐标空间中,从而使得新的成分按信息量分布,第一主成分包含的信息量最大,变换后各主成分分量彼此不相关,且随着主成分编号的增加该分量包含的信息量减小。PCA变换后图像的信息主要集中在前几个主成分分量中,在变换域中丢弃信息量小的主成分分量,将原始的海量高光谱数据变换为少量的几个成分,在降低数据维数的同时,最大限度地保持了原始数据的信息。PCA 广泛应用于图像压缩、图像增强、图像编码、随机噪声信号的去除及图像旋转等各种应用。
对图像数据进行主成分变换首先需要计算出一个标准变换矩阵,通过变换矩阵使图像数据转换成一组新的图像数据-主成分数据,从而提高图像的主成分特征,由此构造出的每个新特征都是原特征的线性函数。其变换公式可以用下式表示:
在这里插入图片描述
若 T 是正交矩阵,并且由待变换图像的数据矩阵的协方差矩阵 C 的特征矢量所组成,则此变换称为 K-L 变换,称变换的数据矩阵的每一行矢量为 KL 变换的一个主分量。对低分辨率多光谱图像与高空间分辨率图像融合时,主成分变换的融合方法的
基本思想是:首先对多光谱图像进行主成分变换,然后用拉伸的高空间分辨率图像代替第一主分量进行逆主分量变换,得到融合的图像。
在这里插入图片描述
计算步骤
在这里插入图片描述
PCA算法融合步骤如下
在这里插入图片描述
PCA 变换融合方法的主要优点是:
融合后的图像光谱特性保持好,尤其在波段数较多的情况下;
缺点是:
由于要对自相关矩阵求特征值和特征向量,计算量非常大,实时性比较差。本文采用替代法进行 PCA 变换融合,因为主成分变换后的前几个主分量包含了主要的地物信息,噪声相对较少;而随着信息量的逐渐减少,最后的主分量几乎全部是噪声信息。因此,主成分突出了主要信息,抑制了噪声,达到了图像增强的目的。
基于PCA的图像融合方法主要应用于遥感图像融合领域,适用于多光谱图像与全色图像的融合,PCA图像融合方法将多光谱图像的多个波段看作多维数据集,通过对该数据集进行PCA变换得到多个主成分分量。

% 基于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(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)]';        % 矩阵转置
        up_Cx = up_Cx + up_S * 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';                 % 计算协方差矩阵
low_Cx = low_Cx/(M * N) - low_Mx * low_Mx';

[up_A,up_latent] = eigs(up_Cx);                         % 协方差矩阵的特征向量组成的矩阵
[low_A,low_latent] = eigs(low_Cx);                      % 即PCA变换的系数矩阵,特征值

for i = 1 : M
    for j = 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_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

for i = 1 : M
    for j = 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)]';
       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_up(:,:,1)=up_r;
RGB_up(:,:,2)=up_g;
RGB_up(:,:,3)=up_b;

RGB_low(:,:,1)=low_r;
RGB_low(:,:,2)=low_g;
RGB_low(:,:,3)=low_b;

subplot(2,2,3);imshow(uint8(RGB_up));title('高分辨率PCA变换图像');
subplot(2,2,4);imshow(uint8(RGB_low));title('低分辨率PCA变换图像');


2018-04-01 10:18:58 Chaolei3 阅读数 9145
  • 机器学习案例实战第六课-PCA与Xgboost视频教学

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 用实例演示机器学习中的Xgboost算法和PCA原理。本视频课程首先讲解两个案例,基于文本分类的股价预测与PCA降维应用在鸢尾花数据集上。简介Xgboost算法原理,并安装xgboost实例演示如何进行操作。 会员卡优惠购买:http://edu.csdn.net/lecturer/1079

    3151 人正在学习 去看看 唐宇迪

参考:
https://blog.csdn.net/duanyule_cqu/article/details/54975867
该篇文章主要是使用PCA对一幅图像进行处理,并提取和显示该图像经过PCA的变换后的各主成分。
这里就直接贴代码,PCA原理的部分相信大家都看了许多,其实看来看去,不去实践一个具体的目的,总还有些概念不是很清楚的。

PCA对图像处理的特点

*疑问:
经过PCA变换排在前面的主成分就一定没有噪声吗?
我觉得是不一定的。也就是说排在前面的主成分未必很“纯”。
通过PCA变换,可以把多波段图像中的有用信息集中到数量尽可能少的新的主成分图像中,并使这些主成分图像之间互不相关,从而大大减少总的数据量。但PCA变换对噪声比较敏感,即信息量大的主成分分量,信噪比(信号与噪声的比)不一定高,当某个信息量大的主成分中包含的噪声的方差大于信号的方差时,该主成分分量形成的图像质量就差, PCA变换用于融合处理并不是为了减少噪声,而是通过该变换,使得多光谱影像在各个波段具有统计独立性,即这些波段间的数据互不相关,便于分别采用相应的融合策略。

提取并显示PCA 的各主成分

主代码

>> mul = imread('PCA/low.jpg');
>> extract_pca(mul);

实现 PCA的代码

function [vector ,value,tempMul] = my_pca(mul)
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
% % % 该函数用来实现多光谱图像的PCA算法
% % %    param:
% % %          mul--输入的多光谱图像也可以是多通道的
% % %          value--特征值从大到小排列
% % %          vector--特征向量对应特征值排列,一列是一个特征向量
% % %          tempMul--mul的reshape成pixels*bands形式的2维矩阵
% % % 
% % %  @author:chaolei
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
mul=double(mul)/255;
[r ,c ,bands]=size(mul);
pixels = r*c;
% reshape成pixels*channel
mul = reshape(mul, [pixels,bands]);
tempMul = mul;
% 求各通道的均值
meanValue =  mean(mul,1);

% 数据去中心化
mul = mul - repmat(meanValue,[r*c,1]);
% 求协方差矩阵
correlation = (mul'*mul)/pixels;
%求特征向量与特征值
[vector ,value] = eig(correlation);
% 特征值和特征向量从大到小排序
vector = fliplr(vector);
value = fliplr(value);
value = flipud(value);

end

提取并显示PCA的各主成分

function extract_pca(mul)
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
% % % 该函数用来抽取并显示pca的各个主成分
% % %   param:
% % %       mul--输入图像是多光谱图像或者高光谱图像
% % %  @author:chaolei
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
[r,c,bands]=size(mul);
[vector,~,tempMul]= my_pca(mul);
% Y=AX(X中列为样本,若X行为样本,则Y =XA)
% PCA正变换
PC = tempMul*vector; 
% 提取多光谱图像的各个主成分
for i = 1:bands
    outPic = PC(:,i);
    min_value = min(outPic);
    max_value = max(outPic);
    outPic = reshape(outPic,[r,c]);
    figure;
    str = sprintf('%s%d%s','第',i,'主成分');
    imshow(outPic,[min_value,max_value]);title(str);
%     filename = sprintf('%d%s',i,'.jpg');
%     imwrite(outPic,filename);
end
end

结果

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

实现PCA进行压缩

原本这一小节不想写的,可是觉得自己对用PCA进行压缩一直不清楚。所以还是要赘述一下,写一点代码。从上面的分析中可以看出,由于我输入的图像是3通道的,也即只有3个特征,所以只有3个主成分。
那我们要思考的是如何进行图像压缩?针对这个实例,以前理解的误区在于,即使我选取了2个或者1个主成分,可是我PCA逆变换回去的图像仍是和原始图像一样的尺寸。那这怎么叫压缩呢?
后来帮大金明实现提取PCA的主成分的过程中,理解了这个PCA压缩的概念。假设我们选取其中最前面的2个主成分。从图中可以看出这2个主成分已经包括了大部分的信息。那么我们的PCA压缩实现的就是存储这2个主成分,并且存储2个主成分对应的特征向量。这样算起来其实我们大约少存储了原图像一个通道的数据。也就是实现了压缩。下面贴一下代码。

function  pca_comp_show(mul,n)
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
% % % 该函数用来显示经过PCA压缩后的图像
% % %  param:
% % %     mul--输入的多光谱或者高光谱图像  
% % %     n--指定用多少个主成分
% % % @author:chaolei
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
[vector ,value,tempMul] = my_pca(mul);
% 使用其中最重要的n个主成分,并还原到原图像大小
% PCA逆变换
% 原始数据reshape*特征向量矩阵*特征向量矩阵'
re = tempMul*vector(:,1:n)*vector(:,1:n)';
[r,c,bands] =size(mul);
comp = reshape(re,[r,c,bands]);

str =sprintf('%d%s',n,'个主成分');
figure;imshow(comp);title(str);
end

这里写图片描述

2015-12-21 16:47:14 baimafujinji 阅读数 13928
  • 机器学习案例实战第六课-PCA与Xgboost视频教学

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 用实例演示机器学习中的Xgboost算法和PCA原理。本视频课程首先讲解两个案例,基于文本分类的股价预测与PCA降维应用在鸢尾花数据集上。简介Xgboost算法原理,并安装xgboost实例演示如何进行操作。 会员卡优惠购买:http://edu.csdn.net/lecturer/1079

    3151 人正在学习 去看看 唐宇迪

欢迎关注我的博客专栏“图像处理中的数学原理详解

全文目录请见 图像处理中的数学原理详解(总纲)

http://blog.csdn.net/baimafujinji/article/details/48467225



阅读本文需要最基本的线性代数知识和概率论基础:)


6.4.2 主成分变换的推导

前面提到的一国经济增长与城市化水平关系的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,所以自然会想到使用矩阵来组织这些数据。为了帮助读者理解上面给出的协方差矩阵定义,在此举一个简单的三维的例子,假设数据集有 {x,y,z} 三个维度,则协方差矩阵为


可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。下面通过一个例子来尝试演算协方差矩阵(很多数学软件都为该操作提供了支持)。需要提醒读者注意的是,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。例如有一个样本容量为 9 的三维数据,如下


根据公式,计算协方差需要计算均值,那是按行计算均值还是按列呢,前面也特别强调了,协方差矩阵是计算不同维度间的协方差,要时刻牢记这一点。样本矩阵的每行是一个样本,每列为一个维度,所以要按列计算均值。经过计算,不难得到上述数据对应的协方差矩阵如下


众所周知,为了描述一个点在直角坐标系中的位置,至少需要两个分量。图6-17所示是两个二维数组,其中左图显示的各个点之间相关性微乎其微,而右图所示的各个点之间则高度相关,显然数据散布在一定角度内较为集中。对于右图而言,只要知道某个点一维分量的大小就可以大致确定其位置,两个分量中任一分量的增加或者减少都能引起另一分量相应的增减。相反,左图中的情况却不是这样。


对之前给出的协方差矩阵定义式稍加改写,以使其获得计算上更为直观的便利。则有在X矢量空间(或坐标系下),协方差矩阵Σx的无偏计算公式为


表6-2给出了对于图6-17中左图所示的6个样本点的集合,以及经计算后求得的样本集协方差矩阵和相关矩阵的结果。应当注意,协方差矩阵和相关矩阵二者都是沿对角线对称的。从相关矩阵来看,各个数据分量间存在不相关关系的明显事实就是协方差矩阵(以及相关矩阵)中非对角线元素都是零。

最终计算可得


主成份变换的实现(包含一个实际的计算示例)以及它在图像处理中的应用举例,我将在下一篇文章中给出。

图像处理中的数学原理详解21——PCA实例与图像编码http://blog.csdn.net/baimafujinji/article/details/50373143



我的“图像处理中的数学原理”专栏中之系列文章已经以《图像处理中的数学修炼》为名结集出版(清华大学出版社)。该书详细介绍图像处理中的数学原理,为你打开一道通往图像世界的数学之门,详细内容及目录请见 http://blog.csdn.net/baimafujinji/article/details/48467225



2019-11-01 11:23:03 weixin_43262648 阅读数 110
  • 机器学习案例实战第六课-PCA与Xgboost视频教学

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 用实例演示机器学习中的Xgboost算法和PCA原理。本视频课程首先讲解两个案例,基于文本分类的股价预测与PCA降维应用在鸢尾花数据集上。简介Xgboost算法原理,并安装xgboost实例演示如何进行操作。 会员卡优惠购买:http://edu.csdn.net/lecturer/1079

    3151 人正在学习 去看看 唐宇迪

数字图像处理——影像融合

1. Brovey变换

for k = 1:bands1
    for i = 1:lines2
        for j = 1:samples2
            Image3(i,j,k) = Image2(i,j,k)*Image1(i,j,k)/sum(Image1(i,j,:));
        end
    end
end
figure(1)
subplot(1,3,1);
imshow(uint8(Image1));
title('高光谱影像');
subplot(1,3,2);
imshow(uint8(Image2));
title('全色影像');
subplot(1,3,3);
imshow(uint8(Image3));
title('Brovey变换融合后的影像');

在这里插入图片描述

2.乘积变换

for k =1:bands1
    for i = 1:lines2
        for j = 1:samples2
            Image3(i,j,k) = Image1(i,j,k)*Image2(i,j,k);
        end
    end
end
Image3 = round((Image3 - min(Image3))*255./(max(Image3) - min(Image3)));
figure(2)
subplot(1,3,1);
imshow(uint8(Image1));
title('高光谱影像');
subplot(1,3,2);
imshow(uint8(Image2));
title('全色影像');
subplot(1,3,3);
imshow(uint8(Image3));
title('乘积变换融合后的影像');

在这里插入图片描述

3.PCA变换

AY = PCA(Image1);
A = cell2mat(AY(1));
Y = round(cell2mat(AY(2)));
YY = matching(Image2(:,:,1),reshape(Y(1,:),[lines1,samples1]));
Y(1,:) = reshape(YY,[1,lines2*samples2]);
X = double(uint8(inv(A)* Y));
for i = 1:bands1
Image3(:,:,i) = reshape(X(i,:),[lines1,samples1]);
end
figure(3);
subplot(1,3,1);
imshow(uint8(Image1));
title('高光谱影像');
subplot(1,3,2);
imshow(uint8(Image2));
title('全色影像');
subplot(1,3,3);
imshow(uint8(Image3));
title('PCA融合后的影像');

在这里插入图片描述

4.HSI变换

HSI = RGB2HSI(Image1);
max = max(max(HSI(:,:,3)));
min = min(min(HSI(:,:,3)));
HSI(:,:,3) = round(HSI(:,:,3));
I = matching(Image2(:,:,1),HSI(:,:,3));
% I = Image2(:,:,1);
HSI(:,:,3) = I;
Image3 =HSI2RGB(HSI);
figure(4)
subplot(1,3,1);
imshow(uint8(Image1));
title('高光谱影像');
subplot(1,3,2);
imshow(uint8(Image2));
title('全色影像');
subplot(1,3,3);
imshow(uint8(Image3));
title('HSI变换融合后的影像');

在这里插入图片描述

特征选择之PCA变换

阅读数 514

PCA变换与KL变换

阅读数 878

没有更多推荐了,返回首页