2013-07-02 83 views
1

我尝试使用Eigenfaces来做this人脸识别示例。并且无法理解这些函数子空间项目()subspaceReconstruct()实际上做的。我试图在http://docs.opencv.org/上搜索,但没有任何描述链接。FaceRec教程解释

你能解释一下这部分代码实际上在做什么吗?

Mat evs = Mat(W, Range::all(), Range(0, num_components)); 
Mat projection = subspaceProject(evs, mean, images[0].reshape(1,1)); 
Mat reconstruction = subspaceReconstruct(evs, mean, projection); 
    // Normalize the result: 
reconstruction = norm_0_255(reconstruction.reshape(1, images[0].rows)); 

我的意思是这些函数做什么,它们返回什么样的cv :: Mat?

回答

1

subspaceProject()基本上会给你一个降维。

projection = (images[0] - mean) * evs 

减去平均值可确保图像接近子空间。假设evs是截断的右奇异向量。

subspaceReconstruct()

reconstruction = projection * transpose(evs) + mean 

重建仅仅是突起的相反,除了因为EVS被截断,就不能是完美的。

请参阅PCA