首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《机器视觉》人工智能之人脸识别(二)——PCA

在目前人工智能领域,模型的得出主要还是依靠数据驱动,面对几十万甚至上百万的数据,如何对数据进行清洗、提取有代表性的信息成了主要的选择。

在数据处理中PCA最主要的作用为:数据压缩、降维——将高维数据提取主成分,用主成分的性质代表数据的整体特征。通过降维可以减少大量的计算量、降低计算的复杂性。在本文中,我们就来分析一下"PCA"是如何把高维数据变为低维数据的。

一、PCA原理

PCA的思想为:通过分析数据的相同部分与不同部分,保持数据的主成分(数据固有特性)不变,同时对于对无关信息的损失,达到将高维数据降到低维数据的目的。

PCA的要点:(1)主成分不变;(2)细微的损失;(3)高维数据降到低微数据;

PCA降维的过程如图:

在图像中而言,通过PCA分析,可以提前图像的关键因素——重心;在另一个层面,对图像进行PCA分析,既可以实现对图像数据的降维,又可起到对图像特征的提取。

PCA降维过程描述为

样本数据:样本数据可以是来自社会或生活中各种各样的数据,不论大小,只要可以用矩阵进行表述即可;

减去均值:对数据进行整体降低数值,降低计算难度;

计算协方差矩阵:求取协方差矩阵,大大降低了数据的维度;

计算特征值与特征向量:提取数据的主要特征,及整体特征,并依据特征值的大小保留特征当中最具代表性的特征;

形成新的数据样本:依据提取的K个主要特征便可重新生成具有相同特征的低维度的数据样本。

二、Opencv中PCA分析

在图像处理中如何使用PCA的呢?一般情况下,首先对图像进行轮廓提取,得到轮廓特征及其轮廓坐标构造二维特征。然后将二维轮廓特征组成二维轮廓数组进行PCA降维。

在此以寻找图像的重心为例来说明对PCA的使用。

分析的原始图像如下:

处理结果为:

分析:(1)图中的蓝色线即为“”第一“”的主成分;

(2)显示出了各个特征值及特征向量(即图像的主键)

(3)长线与短线分别代表主要特征与次要特征,可利用此特征对图像进行几何分析

主要代码粘贴如下:

double calcPCAOrientation(vector

&pts, Mat &image)

{

//对数据进行格式转换

int size = static_cast(pts.size());

Mat data_pts = Mat(size,2,CV_64FC1);

for (int i = 0; i

{

data_pts.at(i, 0) = pts[i].x;

data_pts.at(i, 1) = pts[i].y;

}

// 对符合格式的数据进行PCA分析

PCA pca_analysis(data_pts,Mat(),CV_PCA_DATA_AS_ROW);//PCA perform

//上面的API已经完成了PCA分析,以下为对PCA解析结果的分解

//每组数据的重心位置

circle(image ,cnt,2,Scalar(0,255,0),2,8,0);

vector

eigen_vectors(2);

vector eigen_vals(2);

//获取特征向量与特征值

for (int ii = 0; ii

{

printf("the %d eigen value : %.2f\n",ii,eigen_vals[ii]);

}

Point p1 = cnt +0.02* Point(static_cast(eigen_vectors[0].x*eigen_vals[0]), static_cast(eigen_vectors[0].y*eigen_vals[0]));

Point p2 = cnt -0.05*Point(static_cast(eigen_vectors[1].x*eigen_vals[1]), static_cast(eigen_vectors[1].y*eigen_vals[1]));

line(image,cnt,p1,Scalar(255,0,0),2,8,0);

line(image, cnt, p2, Scalar(255, 255, 0), 2, 8, 0);

double angle = atan2(eigen_vectors[0].y, eigen_vectors[0].x);

cout

return angle;

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180802G1WZLK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券