Question

J'espère obtenir une aide à la détection d'objets 2D. Je vais vous donner un bref aperçu du contexte dans lequel sera mis en œuvre.

Il y aura une image prise du plafond. Le plafond aura des marqueurs placés sur si l'orientation de la caméra peut être déterminée. Les photos seront toujours prises face vers le haut. Mon but est de détecter l'un de ces marqueurs dans l'image et déterminer sa rotation. Ainsi, la rotation et mise à l'échelle (dans une moindre mesure) seront les deux principaux facteurs utilisés dans la détection d'image. Je vais écrire le logiciel C # ou Matlab (pas tout à fait sûr encore).

Par exemple, le marqueur peut être une flèche comme ceci:

Arrow Référence

Une image prise du plafond pourrait contenir des marqueurs. Le logiciel doit détecter un seul marqueur et déterminer qu'il a subi une rotation de 170 degrés.

Les flèches de plafond

Je n'ai aucune expérience préalable avec l'analyse d'images. Je sais que le traitement d'image est un sujet assez large et espérais obtenir des conseils sur la direction que je dois prendre et qui techniques serait le mieux pour mon application. Merci!

Était-ce utile?

La solution

Je vous recommande Matlab ou si vous avez l'intention d'utiliser C #, Emgu CV est assez bonne.

Hough transforme sont une excellente idée. Une fois que vous détectez les bords de l'image, en utilisant, par exemple un Canny détecteur de bord, vous obtenez un image de bord (qui est l'image binaire avec seulement 1 ou 0 pour les valeurs).

Alors, la ligne droite transformation de Hough (essentiellement) fait tourner une ligne sur chaque pixel blanc dans l'image de bord (la résolution de la ligne dépend de vous) à l'aide d'une fonction paramétrée pour la ligne et calcule le nombre total de blanc (d'une valeur à 1) pixels le long de chaque ligne de filé et stocke ces informations dans un grand accumulateur qui stocke les données indexées par les paramètres de la ligne.

texte alt http://upload.wikimedia.org/wikipedia /en/a/af/Hough_space_plot_example.png

Dans l'exemple ci-dessus, la forme paramétrique pour une ligne est la suivante:

rho = x*cos(theta) + y*sin(theta)
  

où rho est la distance et thêta est   l'angle

Comme vous pouvez le voir, si vous regardez le bac à une orientation particulière, vous pouvez savoir combien de lignes sont orientées à cet angle. Bien sûr, vous aurez à faire un travail supplémentaire pour savoir quelles lignes sont orientées à cet angle puisque vous avez 5 autres lignes par flèche, mais cela ne devrait pas être trop dur.

Autres conseils

Je ne suis pas directement dans ce domaine, mais je vous dire de commencer par regarder dans la détection de bord spécifique. Si vous avez une formation en mathématiques / ingénierie des matériaux sont assez faciles à comprendre:

Cela semble susciter quelques idées: http://www.cfar.umd.edu/~fer/ cmsc426 / conférences / edge1.ppt

comme toujours en vision par ordinateur, votre premier problème est l'illumination de l'image et l'acquisition. avant d'aller plus loin, comment établir vos marqueurs seront imprimés au plafond, ce qui leur forme sera, ce que la lumière que vous utiliserez pour les voir, et ce que la configuration de la caméra vous a choisi de regarder les marqueurs.

donné un bon matériel, une bonne lumière et un bon appareil photo, vous pouvez avoir aucun problème pour traiter l'image. par exemple, vous pouvez imprimer une flèche pleine dans un matériau rétroréfléchissant, avec une queue plus longue que votre exemple, utiliser une lumière colorée et un filtre correspondant de l'appareil photo. maintenant tout ce que vous avez sur votre image est des flèches ... il y a beaucoup d'autres façons d'acquérir l'image qui vous aider.

une fois que vous avez des flèches simples, une simple analyse de blob (qui consistent à calculer des moments statistiques des objets dans l'image) vous donnera beaucoup d'informations: chaque flèche doit avoir des valeurs presque égales pour les 7 hu moments, ce qui vous permet pour filtrer les objets efficacement, aussi l'orientation calculée à partir des moments centraux vous donnera l'angle de la flèche. analyse de blob étant seulement statistique, il est extrêmement rapide.

Plusieurs systèmes ont été développés pour détecter les marqueurs et leur orientation avec vigueur:

Si votre objectif principal est de ne pas apprendre, mais de faire le travail d'application, je vous suggère d'utiliser l'un de ces. Il n'est pas une tâche triviale pour un débutant pour détecter la position et avec vigueur l'orientation d'un marqueur au hasard dans une image.

Par contre, si vous êtes intéressé à apprendre virile , je voudrais aussi vous diriger vers ARToolKit et ses publications (et leurs références) qui expliquent comment implémenter la détection des marqueurs avec vigueur.

Vous devrez explorer la détection de bord, alors regardez dans les filtres Hough. Après cela, vous aurez besoin de regarder dans classificateurs de motif et l'extraction de caractéristiques.

Cet article a un algorithme qui semble fonctionner sans détection de bord. Cet extrait du livre est plus orienté vers le type de détection de symbole vous avez l'intention, une fois que vous avez fait la détection de bord.

Une façon rigoureuse afin de déterminer l'orientation d'une imagé acquise sous la géométrie projective (la plupart des appareils) utilise le points de fuite et lignes de fuite . De bonnes nouvelles pour vous: votre marqueur peut être utilisé pour trouver cette information! D'autres bonnes nouvelles, l'image peut être rectifié , de sorte que les colonnes d'image (l'axe-y) correspondent à la direction de haut en bas. Vous trouverez plus sur ce genre de choses dans le chapitre 8 de Hartley et le livre de Zisserman, Multiple Voir la géométrie dans Computer Vision .

Souvenez-vous également que vous aurez probablement besoin de travailler sur le, la distorsion causée par la lentille de la caméra problème de distorsion radiale . Les autres gars ont raison sur le problème de détection de flèche: vous devez utiliser la détection bord et, après cela, transformation de Hough ou correspondant modèle . Reportez-vous au livre de Gonzalez et Woods Digital Image Processing pour plus de détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top