2013-07-02 82 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