图像处理方面的知识也学了一段时间了,总是光看理论的话,感觉联系不上实际,第一次把理论综合的实现出来,对这些理论的印象才感觉的更深刻,也能够为后续的学习打下良好的基础。

PCA是比较老的算法,但是可靠性挺好,对于我这种新手,练练手还是不错的。

下面开始对这些算法说一说我自己的理解,如果有不正确的地方还请各位牛人指点。

主成分分析(PCA)是多变量分析中一项很老的技术,源于通信理论中的K-L变换,它考虑的是对于d维空间中的n个向量X1,X2......Xn,如何在低维空间中进行表示,这需要对其空间进行变换。

变换具体的表示如下:

其中即为对样本的一种近似表示,是样本的均值,

就是在d'维空间中的主成份分量,也就是经过PCA提取后的一组特征。

是这d'维空间的一组基。

这样即为原样本在d'维空间的一种近似。

看到这,还不知道是如何计算得到的,具体的推理过程就不细说了,想知道的可以自行查阅相关资料,我只写一下他们的计算公式。

是散布矩阵S的前d‘个特征向量,是散布矩阵S的前d‘个特征值,而散布矩阵S为,其中Z为样本矩阵X中的每个样本减去样本均值后得到的矩阵。

S是d*d的矩阵,计算量很大,幸运的是有一种快速计算的方法,这里我们考虑,一般情况下样本数目n原小于样本维数d,所以R的尺寸远小于散布矩阵S。

设是R的特征向量为,则有

对上式两边同时左乘,得

说明为散布矩阵S的特征值,至此,可以计算小矩阵R的特征向量来得到散布矩阵S的特征向量。

当计算出散布矩阵S的特征向量和特征值时,就可以对样本进行表示了。

假设计算的是前20个特征值和特征向量,那么样本就可以用这20个特征值对其进行表示,这也就是样本的主成份。

快速PCA计算的matlab实现代码如下:

function [ pcaA   V] =fastPCA( A,k )



%输入:A------样本矩阵,每行为一个样本

%         k------降维至k维

%输出:pcaA----降维后K维样本特征向量组成的矩阵,每行一个样本,列数k为降维后的样本特征维数

%     V-------主成分分量

[r,c]=size(A);

%样本均值

meanVec = mean(A);

%计算协方差矩阵的转置 covMatT

Z=(A-repMat(meanVec,r,1));

covMatT =Z*Z';

%计算covMatT的前k个本征值和本征向量

[V D] = eigs(covMatT,k);

%得到协方差矩阵covMatT'的本征向量

V = Z'*V;

%本征向量归一化为单位本征向量

for i=1:k

    V(:,i)=V(:,i)/norm(V(:,i));

end





pcaA = Z*V;





end

基于PCA的特征提取的更多相关文章

  1. 基于PCA的人脸识别步骤

    代码下载:基于PCA(主成分分析)的人脸识别 人脸识别是一个有监督学习过程,首先利用训练集构造一个人脸模型,然后将测试集与训练集进行匹配,找到与之对应的训练集头像.最容易的方式是直接利用欧式距离计算测 ...

  2. opencv基于PCA降维算法的人脸识别

    opencv基于PCA降维算法的人脸识别(att_faces) 一.数据提取与处理 # 导入所需模块 import matplotlib.pyplot as plt import numpy as n ...

  3. 基于PCA和SVM的人脸识别

    程序中采用的数据集是ORL人脸库,该人脸库共有400副人脸图像,40人,每人10幅,大小为112*92像素,同一个人的表情,姿势有少许变化. 程序的流程主要分为三部分,数据的预处理(PCA降维和规格化 ...

  4. 基于PCA和SVM的人脸识别系统-error修改

    ------------------------------------------------- Undefined function or variable 'W'. Error in class ...

  5. pca图像识别

    代码下载:基于PCA(主成分分析)的人脸识别 人脸识别是一个有监督学习过程,首先利用训练集构造一个人脸模型,然后将测试集与训练集进行匹配,找到与之对应的训练集头像.最容易的方式是直接利用欧式距离计算测 ...

  6. Atitti 图像处理 特征提取的科技树 attilax总结

    Atitti 图像处理 特征提取的科技树 attilax总结 理论 数学,信号处理,图像,计算机视觉 图像处理 滤波 图像处理 颜色转换 图像处理 压缩编码 图像处理 增强 图像处理 去模糊 图像处理 ...

  7. A tutorial on Principal Components Analysis | 主成分分析(PCA)教程

    A tutorial on Principal Components Analysis 原著:Lindsay I Smith, A tutorial on Principal Components A ...

  8. 基于3D卷积神经网络的人体行为理解(论文笔记)(转)

    基于3D卷积神经网络的人体行为理解(论文笔记) zouxy09@qq.com http://blog.csdn.net/zouxy09 最近看Deep Learning的论文,看到这篇论文:3D Co ...

  9. 人脸和性别识别(基于OpenCV)

    描写叙述 人脸识别包含四个步骤 人脸检測:定位人脸区域,仅仅关心是不是脸: 人脸预处理:对人脸检測出来的图片进行调整优化. 收集和学习人脸:收集要识别的人的预处理过的人脸,然后通过一些算法去学习怎样识 ...

随机推荐

  1. structured sparsity model

    Data representation往往基于如下最小化问题:         (1) 其中X是观测到的数据的特征矩阵,D是字典,Z是字典上的描述.约束项和使得字典dictionary和描述code具 ...

  2. linux命令之seq

    seq命令简述 seq命令比较常用,在需要做循环的时候用于产生一个序列是再合适不过的工具了,常用方法也比较简单: Usage:      seq [OPTION]... LAST      seq [ ...

  3. 在Ubuntu下的Apache上建立新的website,以及enable mono

    1. 在Apache下建立新的web site a. $>cd /etc/apache2/ b. $>vi ports.conf 填加Listen 8090(注意不要打开8080,因为To ...

  4. pd的django个人博客教程----1:效果展示等

    开发环境同to do list 1:首页:localhost/pd/ 2:导航栏测试或者生活点入: 测试:localhost/category/?cid=1 3:点击文章后进入文章显示页面 e.g:进 ...

  5. ASP.Net动态创建GridView

    1.创建Field BoundField requestitem = new BoundField();//注意Field可以是ButtonField,TemplateField,...等等GridV ...

  6. jQuery选择器 之详述

    jQuery选择器 一. 单词小计 Pervious 上一页sibling  同级first  第一last  最后not  不 Even  偶数    odd  奇数 header  页眉 一.jQ ...

  7. nagios配置

    接近两个星期的奋战,nagios的安装搭建以及监控服务自动报警功能终于基本得以实现,现在自己整理一份安装技术手册,方便自己以后查阅和回顾. 接近两个星期的奋战,nagios的安装搭建以及监控服务自动报 ...

  8. 关于textView的字数限制

    在一个项目中遇到texteView的字数限制,在iOS7.0上,会出现崩溃.我在这里栽了一个大跟头,废话不多说,下面直接贴代码吧. - (void)textViewDidChange:(UITextV ...

  9. java下io文件切割合并功能

    package cn.stat.p1.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNot ...

  10. Ghost克隆软件

    克隆软件Ghost初级使用教程 一.什么是Ghost ? Ghost(幽灵)软件是美国赛门铁克公司推出的一款出色的硬盘备份还原工具,可以实现FAT16.FAT32.NTFS.OS2等多种硬盘分区格式的 ...