Параметр minNeighbors параметра OpenCV detectMultiScale()

В настоящее время я использую классификаторы Haar для обнаружения объектов. По пути я не понял, что такое параметр minNeighbors, что он представляет? На самом деле я не понимаю, какие соседи обнаружения прямоугольник кандидата. Может кто-нибудь определить соседнюю идею?

Ответ 1

Каскадный классификатор Хаар работает с подходом с раздвижным окном. Если вы посмотрите на каскадные файлы, вы можете увидеть параметр размера, который обычно имеет довольно маленькое значение, например 20 20. Это самое маленькое окно, которое может обнаружить каскад. Таким образом, применяя подход скользящего окна, вы перемещаете окно через изображение, а не изменяете его размер и снова выполняете поиск, пока вы не сможете изменить его размер. Таким образом, с каждым итерационным каскадным классификатором сохраняются истинные выходы. Поэтому, когда это окно сдвинуто на снимке, оно будет изменено и снова сдвинуто; он фактически обнаруживает множество ложных срабатываний. Вы можете проверить, что он обнаруживает, указав minNeighbors 0. Вот пример:

minNeighbors = 0

Таким образом, существует много распознавания лиц из-за изменения размера скользящего окна и множества ложных срабатываний. Таким образом, чтобы устранить ложные срабатывания и получить правильный прямоугольник лица из обнаружений, применяется подход к соседству. Это похоже на то, что он находится в соседстве с другими прямоугольниками, чем в порядке, вы можете передать его дальше. Таким образом, это число определяет, сколько района необходимо передать ему как прямоугольник лица. В том же изображении, когда оно 1:

minNeighbors = 1

Таким образом, увеличивая это число, вы можете исключить ложные срабатывания, но будьте осторожны, увеличивая его, вы также можете потерять истинные положительные результаты. Когда он 3 - отличный результат:

minNeighbors = 3

Ответ 2

От Документация OpenCV:

minNeighbors. Параметр, определяющий, сколько соседей должен иметь каждый прямоугольник кандидата.

Другими словами, этот параметр влияет на качество обнаруженных лиц. Более высокое значение приводит к меньшему количеству обнаружений, но с более высоким качеством.

Идея этого параметра заключается в том, что детектор будет работать в стиле с несколькими шкалами и в то же время после стратегии скользящего окна. После этого шага он даст вам несколько ответов даже для одной области лица. Этот параметр имеет тенденцию фильтровать эти ответы так же, как путем установления порога нижней границы, т.е. Он будет считаться только действительным лицом, если количество ответов для этой грани выше, чем minNeighbors.


Чтобы узнать другие параметры CascadeClassifier:: detectMultiScale, зайдите этот пост что я ответил ранее.