2011-04-19 26 views
6

上週我一直在研究和試驗面部識別。預期的應用是通過簡單地拍攝他們的臉部圖像,人們能夠在數據庫(SQL)中查找個人的信息。最初的期望是能夠將10壓縮到一個密鑰或散列,並將其用作數據庫lokup。這不需要非常準確,因爲查看信息的人可能並最有可能最終將原始圖像和站在他們面前的人進行比較。在Java中「快速和骯髒」的面部識別和數據庫存儲/查找

OpenCV/JavaCV似乎是一個明顯的出發點,它提供的面部檢測效果很好,但是面部識別的Eigenfaces的實現並不理想,因爲每次重新編譯成千上萬的用戶面部需要將新面孔添加到訓練集不起作用。

我在使用OpenCV的Haar Cascade特性提取的人臉上使用SURF描述符進行了試驗,這似乎讓我更接近預期的結果,但是我無法想到一種有效查找和比較大約30個描述符的方法(它們是64或128維向量)。我已經做了一些關於LSH和譜散列算法的閱讀,但是沒有找到適用於Java的實現,而且我的數學算法還不足以實現它們。

有沒有人對如何可能完成的任何想法或意見,或者如果它甚至有可能?

+0

你有沒有遇到過這種情況?我們正在嘗試做幾乎相同的事情。 – Bernesto 2012-08-23 16:53:10

回答

2

散列並不複雜,也不需要數學學位。

假設任何2個圖像會導致一個相當類似的「描述」的編號,然後只需要你得到一個合理的匹配足夠他們獲得足夠高的置信度。

具體怎麼將這些描述符確定什麼級別的碰撞,你可以在你的哈希算法接受。

當你有幾個人,我會建議你什麼都不需要太複雜的 - 畢竟,你可能想「模糊」的搜索水平?

從簡單的事情開始 - 試驗和改進。你甚至可能會發現,對於不同的描述符你需要不同的哈希算法 - 也就是說有些可能比其他描述符更具體。

希望一些思考的食物。

相關問題