2012-03-31 94 views
1

我想比較只有兩個面孔,並得到他們的肖像 - 他們匹配多少分數。 我在互聯網上搜索解決方案,但我只能找到一組訓練圖像的臉部識別,我不能找到是否有人對這個問題進行研究 - 我有2個未知臉孔,我想知道是否它是同一個人。 你能給我任何線索,資源什麼可以幫助我嗎?如果有任何實現,它將是偉大的,如果它 - C#,C++ 我試圖使用openCV-檢測面孔,識別面對某些數據庫(獲取特徵距離)並比較euklidean距離,但我收到不好的結果。也許我的方法是錯誤的,我不完全明白eigenfaces和euklid距離)兩面比較

非常感謝!

回答

1

看來你打算做的是找到兩個面孔之間的相似性。 OpenCV提供了兩個圖像之間的基本模板匹配功能。 Here是一個很好的解釋和完整的C代碼。

如上所述,存儲圖像中每個點的匹配輸出。從那裏獲得匹配顯示在this教程中,包括使用的各種標準化。

還遇到這link快速模板匹配使用後來的C + +接口,但沒有親自使用它。

如果你的面孔只是大頭照,旋轉,透視等變化很小,那麼這種基本方法應該足以滿足你的需求。

1

首先,要警告的是,這遠遠沒有解決的問題。事實上,這是計算機視覺領域的一個相對研究領域。請看看Labeled Faces in the Wild dataset,它正好用於你正在談論的任務,比較兩個面孔。您特別感興趣的是results section,它報告了哪些算法(以及相應的論文)最適用。

但是,似乎所有這些可能都比較先進。看起來你可能不太熟悉機器學習和/或計算機視覺,在這種情況下,你可能想看看這些領域的教科書。

無論哪種方式,基本的事情是這樣的:你不想用像素來比較人臉,因爲他們隨着照明和姿勢變化很大。 (你應該嘗試一下!)所以你必須改變像素的方式,使得來自同一個人的面部與來自不同人的面部相似。這是特徵提取,它可以說是人臉識別中最難和最重要的部分。你怎麼知道哪個是改變它們的最好方法?這就是訓練數據集出現的地方。例如,如果使用特徵臉(通過這種方式應該具有相當差的性能),則可以使用訓練數據來獲取最能表示此數據的特徵向量。然後,比較兩個面,將每個面投射到特徵向量上,並使用歐幾里德距離。 (這與使用Mahalonobis距離相同)。

+0

謝謝,到目前爲止,我試圖將這些面對訓練矢量進行分解 - 它給了我一組距離每個訓練集的距離,但是當我通過歐幾里德距離「平均它」時,它給了我可怕的結果 - 相同的照片人比不同人的面孔有更大的距離 – 2012-04-01 09:59:43

+0

對一組人使用相似性並不是一個壞主意 - 有幾篇論文可以用更復雜的方式來完成。但只是使用普通的RGB圖像和歐幾里德功能可能無法在大多數情況下工作;臉部識別是一個比看起來更難的問題! – dimatura 2012-04-03 01:39:12