cvCalcEigenDecomposite——opencv内置PCA算法的第二个函数小记。

本文详细解析了PCA(Eigenface)方法在人脸识别领域的核心作用,并深入探讨了cvEigenDecomposite函数如何通过Eigenface变换矩阵将人脸图像投射到子空间,极大降低数据维度,便于后续的聚类和识别过程。通过具体例子,阐述了该函数的使用方式和训练与测试阶段的函数调用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

PCA(Eigenface)方法是人脸识别的主流方法之一。cvEigenDecomposite()函数作用是将人脸图像通过Eigenface变换矩阵,投射到子空间中。子空间中的人脸向量,是一个1×nEigens(nEigens由自己取得)的行向量,极大地降低了数据维度,便于下一步的聚类、识别。结合具体例子,尽量清楚地跟大家讨论这个函数的用途。

 

 

函数说明如下:

EigenDecomposite

Calculates all decomposition coefficients for input object

计算输入目标的所有的分解系数

void cvEigenDecomposite( IplImage* obj, int nEigObjs, void* eigInput,
                         int ioFlags, void* userData, IplImage* avg, float* coeffs );

 

obj
Input object.
输入目标
nEigObjs
Number of eigen objects.
自选eigen数量
eigInput
Pointer either to the array of IplImage input objects or to the read callback function according to the value of the parameter ioFlags.
eigenface向量组成的变换矩阵,数据结构属于IplImage队列,或者根据ioFlag参数值变化的回调函数。
ioFlags
Input/output flags.
userData
Pointer to the structure that contains all necessary data for the callback functions.
avg
Averaged object.
coeffs
Calculated coefficients; an output parameter.
这是唯一一个输出,即人脸在子空间的投影,,,(decomposition coefficients... 数学不太好- -)

The function cvEigenDecomposite calculates all decomposition coefficients for the input object using the previously calculated eigen objects basis and the averaged object. Depending on ioFlags parameter it may be used either in direct access or callback mode.

 

在程序中,cvCalcEigenObject()只需要在训练时使用,依据训练样本,计算Eigenface的变换矩阵。如本页的装饰图片所示。

而cvEigenDecomposite(),既需要产生训练样本的投影,又需要产生测试脸的投影。

  cvEigenDecomposite(
   faceImgArr[i],
   nEigens,
   eigenVectArr,
   0, 0,
   pAvgTrainImg,
   projectedTestFace);

这里是对于每张测试脸faceImgArr[i],产生投影。训练时得到训练样本投影脸的函数调用方法如下:

 for(i=0; i<nTrainFaces; i++)
 {
  //int offset = i * nEigens;
  cvEigenDecomposite(
   faceImgArr[i],
   nEigens,
   eigenVectArr,
   0, 0,
   pAvgTrainImg,
   projectedTrainFaceMat->data.fl + i*offset);
 }

转载于:https://www.cnblogs.com/linzhao/archive/2012/01/05/2312758.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值