1

Je travaille sur la détection de la forme d'un objet. J'ai une image binaire où le fond est en blanc et le premier plan/objet est en noir. J'ai besoin de détecter la forme de l'objet au premier plan qui est en noir.Détection de forme dans le traitement d'image

Comment puis-je le faire? La forme peut être d'un homme/voiture/boîte, etc. S'il vous plaît aider

+0

être invariant d'échelle/rotation? Est-ce pour un jeu ou faut-il prendre de vraies photos en compte? –

+0

Peut-être que cette question obtiendrait plus de réponses si vous nous disiez quel est le but ultime de trouver la forme, car trouver la forme de quelque chose peut signifier beaucoup de choses différentes; la forme suit la fonction. – amphetamachine

Répondre

2

Je ne sais pas qui est votre objectif final amphetamachine dit, mais une approche assez commune pour détecter des formes pourrait être l'utilisation de cvFindContours qui, compte tenu une image binaire et renvoie un ensemble de 'CvContour' (qui est en fait un cvSeq). L'image binaire peut être récupérée assez simplement en seuillant l'image (cvThreshold). Consultez l'exemple contours.c dans l'exemple/du répertoire src opencv. Vérifiez ce lien ainsi:

Noah (2009) opencv tutorial

cet exemple de code vous donnera une idée générale:

cvThreshold(g_gray, g_gray, g_thresh, 255, CV_THRESH_BINARY); 
cvFindContours(g_gray, g_storage, &contours); 
cvZero(g_gray); 
if(contours){ 
    cvDrawContours(
     g_gray, 
     contours, 
     cvScalarAll(255), 
     cvScalarAll(255), 
     100); 
} 
cvShowImage("Contours", g_gray); 

Une fois que vous avez un codage du contour, vous pouvez utiliser cvMatchShapes qui prennent 2 contours et retourner une mesure de similarité entre ces contours.

J'espère que cette approche vous donnera une longueur d'avance!

2

Pour une détection précise de la forme, vous devez utiliser la détection de haar ou au moins K plus proche voisin. La détection de Haar peut être très précise, mais la mise en place prend beaucoup de temps. K plus proche voisin est plus facile à mettre en place mais n'est pas aussi précis. Découvrez this youtube video. Ce type utilise KNN pour détecter différents gestes de la main. Notez que l'image de comparaison est fondamentalement une goutte noire. La mauvaise chose à propos de KNN est que cela prend beaucoup plus de ressources pour exécuter le programme, mais avec la détection haar, le traitement majeur a déjà été fait lorsque vous créez les fichiers xml en cascade avec haartraining.exe

Questions connexes