1

我尝试使用 Eigenfaces 来做这个人脸识别示例。并且无法理解这些函数subspaceProject()subspaceReconstruct()实际做了什么。我试图在http://docs.opencv.org/上搜索,但没有任何描述链接。

你能解释一下这部分代码的实际作用吗?

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 ?

4

1 回答 1

1

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

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

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

并且对于subspaceReconstruct()

reconstruction = projection * transpose(evs) + mean

重建只是投影的逆过程,除了因为evs被截断,它不可能是完美的。

PCA

于 2013-07-02T15:17:04.673 回答