2013-08-16 116 views
4

首先,讓我給出一些關於我想要做的事情的信息。OpenCV中重疊的人臉檢測

我正在處理使用配置文件面部的人臉驗證問題,而我的第一步是人臉檢測。我使用'haarcascade_profileface.xml'來使用OpenCV人臉檢測器。問題是,探測器不能始終找到人臉。不一致,我的意思是,它在某個地區找到了一張臉,但有時它會發現臉變大,有時變小,有時變成兩個。我希望它始終能夠找到與臉部相同的區域。

我添加了一些圖像來更好地說明我的問題。你可以找到它們here

我應該怎麼做才能克服同一區域中的多重人臉檢測(重疊人臉檢測)?

我想到的第一件事是增加minNeighbors參數,但這會導致檢測率下降,所以我不想這樣做。然後我想在面部圖像上應用一些圖像穩定算法,但我認爲它會太昂貴。如果有人可以給我一些解決這個問題的建議,我會很高興。

我應該提到,我使用的是OpenCV 2.4.5,我將minNeighbor參數設置爲4,scaleFactor爲1.75,沒有設置任何大小限制。

由於提前,

問候,

·居內伊

回答

2

如果傻冒從視頻人臉檢測,你可以在邊框應用過濾器,以保持邊框的變化平穩。它將減少面部邊界框中的「不一致」。

CurrentFrameBoundingBox = A * PrevFrameBoundingBox +(1-α)* DetectedBoundingBox

爲較大時,將前一幀邊界框給予更多的權重,並減少不一致。

對邊界框中的每個座標都這樣做。

+0

我沒有使用視頻,但我正在使用相機,所以我可以應用您提供的內容。但是這會產生另一個問題。假設發現的前10個面大,其他面小。那麼會發生什麼?如果您有解決方案,我一定會使用您的解決方案:) – guneykayim

+1

如果第一張臉比第一張大,而其他臉比較小,那麼邊界框會逐漸變小。但是,我認爲沒有堅實的行爲 - 有時候人臉檢測邊界框很大,有時很小,但是這是隨機發生的。所以基本上,邊界框的大小隨着時間的推移會有所不同。此外,如果您願意考慮OpenCV以外的解決方案,我可以推薦以下文章,其中總結了48個api的人臉檢測和識別: http://blog.mashape.com/post/53379410412/list- 40人臉檢測識別apis – GilLevi

+0

嗯,它肯定會收斂到一定的大小,但直到收斂我可能會得到一些無用的臉部圖像。但仍然可以工作。非常感謝你。 – guneykayim

0

也許您可以根據您對原始邊界檢測框的需求進行自定義的轉移聚類。如果我記得OpenCV正在過濾或聚集這些原始結果,因爲分類器會爲同一個對象多次觸發。如果您對OpenCV中的例程不滿意,您可以嘗試其他基於密度的聚類方法。或者你可以簡單地取這些原始結果的中位數。