j'ai commencé à expérimenter avec c ++ et opencv parce que je veux apprendre le traitement d'image.
Maintenant, mon premier exercice est de créer un détecteur de peau avec calcHist et calcBackProject .
Mais je ne comprends pas peu de choses:
- l'interprétation statistique du projet arrière, et pourquoi il est nommé "projet arrière"
- j'ai une assez bonne compréhension du paramètre des plages
calcBackProject
. Mais je suis vraiment coincé avec le paramètre gammes encalcHist
fonction. - Pour plus de précision de détection, je pense que cela pourrait être une bonne chose d'utiliser la rétro-projection à plusieurs niveaux: dans chaque canal de rgb et dans chaque canal de hsv. Mais je ne sais pas comment je peux combiner les différents résultats de
calcBackProject
canaux séparés de rgb et hsv.
Et je pense que ma mauvaise compréhension est due au manque de théorie de ce que je fais avec ces 2 méthodes (voir le premier point). Veuillez donc m'expliquer en anglais simple.
Réponses:
Voir What is Back Projection dans les tutoriels openCV
Un histogramme d'image mesure la distribution de la couleur (et de la luminosité) des pixels d'une image.
Si vous prenez une image et identifiez une région d'intérêt, par exemple. une main et calculer l'histogramme des pixels de cet objet.
Prenez ensuite cet histogramme et une deuxième image et inversez essentiellement le processus - vous choisissez les pixels dans la deuxième image qui correspondent à l'histogramme de la première. C'est ce processus inverse qui lui donne le nom de rétroprojection.
Vous faites ensuite l'hypothèse que les zones de l'image dans la deuxième image qui ont la même répartition des couleurs qu'un objet dans la première image sont une image du même objet (ou similaire).
la source