Paramètre OpenCV detectMultiScale () minNeighbors

j'utilise actuellement des classificateurs Haar, pour détecter les objets. Sur mon chemin, je n'ai pas compris ce qu'est le paramètre minNeighbors, ce qui est il représente? En fait je ne comprends pas ce sont les voisins de la détection candidat rectangle. Est-ce que quelqu'un peut définir l'idée voisine?

22
demandé sur blakeO 2014-03-07 16:02:31

2 réponses

Haar cascade classificateur travaille avec une fenêtre coulissante de l'approche. Si vous regardez les fichiers en cascade vous pouvez voir un paramètre de taille qui habituellement une assez petite valeur comme 20 20. C'est la plus petite fenêtre que cascade peut détecter. Donc, en appliquant une approche de fenêtre coulissante, vous glissez une fenêtre à travers l'image que vous redimensionnez et la recherche à nouveau jusqu'à ce que vous ne pouvez pas redimensionner plus loin. Ainsi, à chaque itération, les sorties en cascade des classificateurs de haar sont stockées. Alors quand cette fenêtre est glissé dans l'image redimensionné et glissé à nouveau; il détecte en fait beaucoup de faux positifs. Vous pouvez vérifier ce qu'il détecte en donnant minNeighbors 0 . Ainsi un exemple ici :

minNeighbors = 0

donc il y a beaucoup de détection de visage à cause du redimensionnement de la fenêtre coulissante et beaucoup de faux positifs aussi. Donc pour éliminer les faux positifs et obtenir le rectangle de visage approprié hors des détections, l'approche de quartier est appliquer. C'est comme si c'est dans le quartier de autres rectangles que c'est ok, vous pouvez le passer plus loin. Donc ce nombre détermine la quantité de voisinage est nécessaire pour le passer comme un rectangle de visage. Dans la même image quand il est 1 :

minNeighbors = 1

par l'augmentation de ce nombre, vous pouvez éliminer les faux positifs, mais être prudent, en l'augmentant, vous pouvez également perdre des vrais positifs. Quand il est 3 un résultat parfait:

minNeighbors = 3

61
répondu yutasrobot 2014-07-30 17:53:09

de documentation OpenCV :

minNeighbors – paramètre spécifiant combien de voisins chaque rectangle candidat devrait avoir à le conserver.

en d'autres termes, ce paramètre affectera la qualité des faces détectées. Une valeur plus élevée se traduit par moins de détections, mais avec une qualité plus élevée.

l'idée derrière ce paramètre est que le détecteur fonctionnera sur un échelle multiple style et en même temps suivant stratégie de fenêtre coulissante . Après cette étape, il vous donnera des réponses multiples, même pour une seule région de visage. Ce paramètre a tendance à filtrer ces réponses comme en établissant un seuil inférieur, c'est-à-dire qu'il ne sera considéré comme un visage valide que si le nombre de réponses pour ce visage est supérieur à minNeighbors .


À apprendre d'autres paramètres de CascadeClassifier::detectMultiScale , découvrez ce post que j'ai répondu plus tôt.

7
répondu herohuyongtao 2017-05-23 11:54:17