matlab实现主成分分析(遥感图像处理)

数据说明:采用的数据源是从别人那里拷的2012年全年的Sea Surface Temperature(海标温度,SST)数据,一直想找一份比较好的主成分分析数据,也没找到。

Matlab自身有主成分分析的函数princomp,其中返回的第二个数据就是样本经过K-L变换后的各个成分数据,第三个参数就是特征值大小。(第一个参数貌似是协方差矩阵,我还没看)

PCA的基本原理:

  一般图像的线性变换可以表示为:

y=Tx,

  式中X为待变换图像数据矩阵,Y为变换后的数据矩阵,T为实现这一线性变换的变换矩阵。如果变换矩阵T是正交矩阵,并且它是由原始图像数据矩阵X的协方差矩阵S的特征向量所组成,则该线性变换成为主成分分析,并且成Y矩阵的每一行矢量为变换后的一个主成分。

  具体的算法步骤为:

马上要走了,偷个懒,直接把握之前做的一个PPT放出来了(话说也真是懒啊,这n多年没更新一点内容能不懒嘛!!!(⊙o⊙)…)

以下为代码实现部分:

close all;
clear all;
clc;

%% PCA_Test

path = ‘data\sst\2012\‘;
filelist = dir(‘data\sst\2012\*.sst.txt‘);
len = length(filelist);
% savepath = ‘data\sst_pic\‘;

figure;
% 读取文件
for i = 1:len
    filename = [path filelist(i).name];
    date = filename(15:20);
    sst_data(i,:) = dlmread(filename);%读取

    min_val = min(sst_data(i,:));
    max_val = max(sst_data(i,:));

    pic = reshape(sst_data(i,:),360,180);
    pic = rot90(pic);
    subplot(4,3,i),imshow(pic,[min_val max_val]),title(date);
    colormap;
%     % 保存数据图像
%     pic = reshape(sst_data(i,:),360,180);
%     pic = rot90(pic);
%     strI = int2str(i);
%     save_path = [savepath strI ‘.tif‘];
%     imwrite(pic,save_path);

end

% 取得样本数据
X = sst_data‘;
tempX = X;

% 取样本大小:维度m,样本数n
[m n] = size(X);

% 求各样本平均值
meanVal = mean(X);

% 样本矩阵中心化
X = X - repmat(meanVal,64800,1);

% 计算协方差
S = X‘ * X ./ (m - 1);   %".*"表示矩阵元素对应相乘

% 计算特征值eg和特征向量Ev
[Ev eg] = eig(S);

% 由大到小排列对应
Ev = fliplr(Ev);
eg = fliplr(eg);

% % 特征向量转置
% EvT = Ev‘;

% 得到新的成分
Y = tempX * Ev;

% 将各个成分进行输出
figure;
for i = 1:n
    outpic = Y(:,i);

    min_num = min(outpic);
    max_num = max(outpic);

    outpic = reshape(outpic,360,180);
    outpic = rot90(outpic);
    %outtitle = [‘特征值=‘ num2str(latent(i))];
    subplot(4,3,i),imshow(outpic,[min_num max_num]),title(outtitle);%显示,并输出特征值
    colorbar;
end

处理的结果对比显示:

主成分结果显示(按照特征值由大到小):

这个结果是和它内部的函数运算出来的结果是一样的:

% PCA
[coeff score latent] = princomp(sst_data‘);
[m,n] = size(score);
%
figure;
for i = 1:len
    outpic = score(:,i);

    min_num = min(outpic);
    max_num = max(outpic);

    outpic = reshape(outpic,360,180);
    outpic = rot90(outpic);
    outtitle = [‘特征值=‘ num2str(latent(i))];
    subplot(4,3,i),imshow(outpic,[min_num max_num]),title(outtitle);%显示,并输出特征值
    colorbar;
end

唉哟,这个博客园居然对Matlab着色显示的时候都不怎么想要支持,看来还是我程序界都不怎么用Matlab哦

正在写Python的实现方式,过两天有时间了再放上来看看吧~~~

有点仓促,就此搁笔。

2016年1月11日22:38

时间: 2024-10-12 08:28:36

matlab实现主成分分析(遥感图像处理)的相关文章

Exelis ENVI v5.3, IDL v8.5, LiDAR v5.3 1DVD遥感图像处理平台

Exelis ENVI v5.3, IDL v8.5, LiDAR v5.3 1DVD遥感图像处理平台ENVI——完整的遥感图像处理平台ENVI(The Environment for Visualizing Images)是美国Exelis Visual Information Solutions公司的旗 舰产品.它是由遥感领域的科学家采用交互式数据语IDL(Interactive Data Language)开发的一套功能强大的遥感图像处理软件.它是快速 .便捷.准确地从影像中提取信息的首屈

在matlab中进行遥感影像地理坐标的相互转换

在matlab中进行图像处理,一般使用的都是图像本地坐标,以左上角(1,1)开始.处理完成后,如果要将结果在带地理坐标的遥感影像中显示,或者需要输出成shp文件,就需要涉及到本地坐标和地理坐标的转换,我们可以使用pix2map函数来实现这个功能. clc;clear;close all; [pic, R] = geotiffread('boston.tif'); %读取tif图像 figure(1),imshow(pic);% pic即为本地图像,下面对本地图像进行操作 gray=rgb2gra

MATLAB做主成分分析(PCA)

简单的主成分分析.第一次见识PCA,我的认识是,尽量用更少的维度来描述数据,以达到理想(虽不是最好,但是''性价比''最高)的效果. %% 主成分分析降维 clear; % 参数初始化 inputfile = 'F:\Techonolgoy\MATLAB\file\MTALAB数据分析与挖掘实战\Datasets\chapter4\chapter4\示例程序\data\principal_component.xls'; outputfile = 'F:\Techonolgoy\MATLAB\fi

在matlab中实现遥感影像和shp文件的结合显示

clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure, mapshow('boston.tif'); %读取tif遥感影像并显示 axis image manual off; %关闭本地坐标系统 surveyFeetPerMeter = unitsratio('sf','meter'); %将米级单位转换成surveyFeet单位 colorTab='rgbcymkw'; %颜色代码表,不同等级的公路

遥感图像处理学习笔记二——遥感图像的分类处理

1. 基本概念 地物的类:具有同种特性的地物集合称为一类. 一类地物具有同一标志,不同种类地物具有不同的光谱特性(地物反射和发射电磁波能量的能力) 分类:根据各类样本内在的相似性,采用某种判决准则,将特征空间分割成若干集合 的过程. 2. 基本思想 区分不同地物的理论依据:不同的地物类型具有不同的光谱信息和空间信息.   3. 多光谱图像的表示方法: 假设某个多光谱图像包括n个波段,则对于任一位置(i , j)的像素的亮度值,可以用矢量x=(x1, x2, …, xn)来表示,其中每个分量xi代

图像处理与机器视觉行业分析

图像处理与机器视觉 一 行业分析 数字图像处理是对图像进行分析.加工.和处理,使其满足视觉.心理以及其他要求的技术.图像处理是信号处理在图像域上的一个应用.目前大多数的图像是以数字形式 存储,因而图像处理很多情况下指数字图像处理.此外,基于光学理论的处理方法依然占有重要的地位. 数字图像处理是信号处理的子类, 另外与计算机科学.人工智能等领域也有密切的关系. 传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪.量化等.然而,图像属于二维信号,和一维信号相比,它有自己特殊的一

图像处理与分析导论

主要内容: 数字图像处理与分析概述 1.数字图像处理基本概念 2.数字图像处理历史发展 3.基础理论与学科关系 "数字图像处理与分析"应用实例概览 遥感领域图像处理应用概述 一.数字图像处理与分析概述 1.什么是图像? ?"图"是物体投射或反射光的分布,"像"是人的视觉系统对图的接受在大脑中形成的印象或反映: ?"一幅图像是一个东西的另一个表示",是其所表示物体的信息的一个浓缩和高度概括: ?   是客观和主观的结合: ?  

图像处理方向

以下仅是了解的一些图像处理方向,实际不止这些: 1.搜索方向:基于内容的图像或视频搜索.手段:必须有很强的编程能力,很好的图像处理和模式识别的背景. 2.医学图像方向:a)图像分类是对病种进行分类.b)目标检测是检测病灶的位置信息.C)医学图像分割的目的就是将图像中感兴趣的区域清楚的提取出来,这样就能为后续的定量.定性分析提供图像基础,同时它也是三维可视化的基础.d)医学图像配准是指对于一幅医学图像通过一种或一系列的空间变换,使它与另一幅医学图像上的对应点达到空间上的一致.配准的结果应使两幅图像

图像处理数学方法

图像处理数学方法 在图像处理的发展过程中,数学始终起着举足轻重的作用,并渗透在图像处理的所有分支之中. 到上世纪六七十年代为止,以Fourier分析为代表的线性处理方法占据了几乎整 个数字图像处理领域.在此期间,借助于随机过程理论,人们建立了图像模型通过概率论以及在此基础上建立的信息论建立了图像编码的框架:线性滤波(维纳滤 波.卡尔曼滤波)方法为低层图像处理提供了有力的理论支持:而FFT则被广泛使用在图像处理的几乎所有分支中.这些数学工具极大地促进了图像处理的发展和 应用. 自上世纪八十年代开始