java利用opencv降维_opencv中PCA降维

PCA--主成分分析,主要用在降维上。

具体原理讲解的很多,在这里就不多说了。

PCA主要计算步骤如下:

1、事先把每个样本归一化,把原始数据中每个样本用一个向量表示,然后把所有样本组合起来构成一个矩阵。

2、求该矩阵的协防差矩阵

3、求步骤2中得到的协方差矩阵的特征值和特征向量。

4、将求出的特征向量按照特征值的大小进行组合形成一个映射矩阵,并根据指定的PCA保留的特征个数取出映射矩阵的前n行或者前n列作为最终的映射矩阵。

5、用步骤4的映射矩阵对原始数据进行映射,达到数据降维的目的。

PCA的应用:

1、人脸识别

2、其他运算的预处理也叫数据的白化

opencv中PCA类的主要函数有:

C++: PCA::PCA(InputArray data, InputArray mean, int flags, int maxComponents=0)

//参数依次为:原始数据;原始数据均值,输入空会自己计算;每行/列代表一个样本;保留多少特征值,默认全保留

C++: PCA::PCA(InputArray data, InputArray mean, int flags, double retainedVariance)

//参数依次为:原始数据;原始数据均值,输入空会自己计算;每行/列代表一个样本;保留多少特征值,百分比,默认全保留

C++: PCA& PCA::computeVar(InputArray data, InputArray mean, int flags, double retainedVariance)

//参数依次为:原始数据;原始数据均值,输入空会自己计算;每行/列代表一个样本;保留多少特征值,百分比,默认全保留

C++: Mat PCA::project(InputArray vec) const

//原图像,投影到新的空间

C++: Mat PCA::backProject(InputArray vec) const

//先进行project之后的数据,反映摄到原始图像

变量值有:mean--------原始数据的均值

eigenvalues--------协方差矩阵的特征值

eigenvectors--------特征向量

函数使用测试:#pragma once#pragma execution_character_set("utf-8")

#include 

#include 

#include 

#include 

using namespace cv;

using namespace std;

#define DIMENTIONS7

#define SAMPLE_NUM31

float Coordinates[DIMENTIONS*SAMPLE_NUM] = {

101.5, 100.4, 97.0, 98.7, 100.8, 114.2, 104.2

, 100.8, 93.5, 95.9, 100.7, 106.7, 104.3, 106.4

, 100.8, 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值