2014-03-07 529 views
16

我目前使用Haar分類器來檢測對象。 在我的路上,我不明白什麼是minNeighbors參數,它代表什麼 它代表什麼? 其實我不明白候選矩形的檢測 的鄰居是什麼。請有人可以定義鄰居的想法?OpenCV detectMultiScale()minNeighbors參數

+2

看看這個.. [http://stackoverflow.com/questions/20801015/opencv-detectmultiscale-parameters](http:// stackoverflow。com/questions/20801015/opencv-detectmultiscale-parameters) – Naren

回答

51

哈爾級聯分類器適用於滑動窗口方法。如果你看一下級聯文件,你可以看到一個大小參數,通常是一個非常小的值,如20 20。這是級聯可以檢測到的最小窗口。因此,通過應用滑動窗口方法,您可以在窗口中滑動窗口,而不是調整窗口大小並重新搜索,直到無法進一步調整窗口大小。因此,每次迭代haar的級聯分類器都會存儲真實輸出。所以當這個窗口被滑動時,圖片被重新調整大小並再次滑動;它實際上檢測到許多許多誤報。您可以通過給minNeighbors 0來檢查它檢測到的內容。所以這裏一個例子:

minNeighbors = 0

所以也有很多人臉檢測,因爲調整的滑動窗口和大量的誤報過的。因此,爲了消除誤報並從檢測中獲得適當的臉部矩形,應用鄰域方法。就好像它在其他矩形附近,而不是它可以,你可以進一步傳遞它。所以這個數字決定了需要多少鄰域才能將它作爲一個臉部矩形傳遞。在相同的圖像時,它是:

minNeighbors = 1

所以通過增加此號碼,您可以消除誤報,但要小心,通過增加它也可以失去真陽性了。當它是一個完美的結果:

minNeighbors = 3

+3

- 沒有恐懼,圖片都是可見的。 – berak

+1

+1 - 很好的解釋 –

+0

但爲什麼在將minNeighbors設置爲1的情況下,它不會選擇標記的區域? [鏈接](https://drive.google.com/file/d/0Bwc6G0Ct0fzFeURXbWJHdUswYlk/edit?usp=sharing) – blakeO

5

OpenCV documentation

minNeighbors - 參數,指定每個候選矩形應該有多少個鄰居有把它保留下來。

換句話說,這個參數會影響檢測到的人臉的質量。較高的值會導致較少的檢測,但質量較高。

此參數背後的想法是,探測器將在多尺度的風格運行,並在同一時間下滑動窗口戰略。完成這一步之後,即使是單個人臉區域,它也會給你多個答案。該參數傾向於過濾這些響應,就像通過設置下限閾值一樣,即,如果該面的響應數量高於minNeighbors,它將僅被計爲有效面。


要了解的CascadeClassifier::detectMultiScale其他參數,請this post我在前面回答。

相關問題