iPhone iOS UIImage comment détecter un point «pointeur laser» sur un flux de caméra?

9

J'ai un robot robot suivi et je le contrôle avec un iPhone. Le robot génère un flux de caméra en direct d'une taille d'image connue et je l'affiche sur UIImage.

J'ai ajouté un pointeur laser au robot et l'ai fixé le long de l'axe du robot. J'essaie de détecter le pointeur du pointeur laser sur l'image et donc de calculer la proximité de l'objet. Si le point laser est loin du centre, je sais que le robot est collé contre le mur et doit reculer.

Comment puis-je détecter un point de pixels lumineux blanc-rouge sur un écran? Une solution consisterait à échantillonner la couleur des pixels dans un certain rayon du centre et à détecter une couleur vive de blob. Quelqu'un peut-il suggérer un algorithme pour cette activité?

Une autre approche serait de garder une trace de la position moyenne du point sur les dernières images, réduisant ainsi le rayon d'estimation. S'il n'y a pas de point dans une région prédéfinie, la région de recherche peut être étendue.

Enfin, je veux pouvoir apprendre au robot à détecter les tapis autour de lui. Le tapis reflète un pointeur laser d'une certaine manière, et je veux comprendre combien de cadres autour du robot ont des propriétés similaires. Si je sais où se trouve le pointeur laser sur un écran, je peux découper un petit rectangle de cette image et les comparer les uns aux autres. Existe-t-il un moyen efficace de comparer plusieurs petites images les unes aux autres pour comprendre si leurs silhouettes correspondent?

J'ai remarqué que le laser est réfléchi sur des surfaces brillantes, et la direction de cette réflexion peut me dire quelque chose sur l'orientation de la surface dans l'espace, conformément aux lois de la réfraction.

Je vous remercie!

Pointeur laser fermer

Pointeur laser 1

Alex Stone
la source
1
Pouvez-vous allumer et éteindre le pointeur laser selon un motif? Comme une image, elle est désactivée, la suivante est activée, et vous soustrayez les images suivantes pour le rendre très évident.
endolith
Voilà une très bonne idée! Mais je n'ai aucun contrôle sur le pointeur laser, qu'il soit activé ou désactivé.
Alex Stone
@AlexStone J'essaie de réaliser une chose similaire, la seule différence est que j'essaie de détecter la lumière laser sur la pupille de l'œil. Pouvez-vous m'aider avec le code ios ou tout autre exemple de code que vous avez poursuivi avec opencv pour suivre le faisceau laser? Merci d'avance pour votre aide, merci AJ.
AmJa

Réponses:

10

OpenCV est compilable pour iOS. Bien qu'il ne soit pas le plus efficace, il vous donne la possibilité de porter l'algorithme. J'ai fait un problème de suivi de marqueur similaire en utilisant l'algorithme ConDensation. Recherchez le suivi des marqueurs avec OpenCV. C'est un très grand domaine de recherche et l'algorithme exact que vous souhaitez dépend entièrement de votre application. Si je me souviens bien, il y a environ 3000 techniques de traitement d'image signalées - en choisir une bonne est un véritable art!

Une solution consisterait à échantillonner la couleur des pixels dans un certain rayon du centre et à détecter une couleur vive de blob. Quelqu'un peut-il suggérer un algorithme pour cette activité?

À propos, c'est l'idée de base derrière ce qu'on appelle un filtre à particules (dont la condensation est une méthode). Bravo, vous avez compris l'idée de base par vous-même!

Une autre approche serait de garder une trace de la position moyenne du point au cours des dernières images, réduisant ainsi le rayon d'estimation. S'il n'y a pas de point dans une région prédéfinie, la région de recherche peut être étendue.

Cela s'appelle la persistance de l'état et peut être modélisé de différentes manières. L'algorithme de condensation utilise une approche stochastique qui n'est pas différente d'un ancien filtre de Kalman ordinaire.

Existe-t-il un moyen efficace de comparer plusieurs petites images les unes aux autres pour comprendre si leurs silhouettes correspondent?

Celui-ci est un peu plus difficile. Vous pouvez essayer la correspondance de modèles, mais je ne sais pas dans quelle mesure il fonctionnera sur iOS (calcul très lourd et appareil photo iOS ne lui convient pas).

Paul de Lange
la source
Paul, merci pour une réponse incroyablement détaillée! J'ai obtenu le framework OpenCV et vais chercher des exemples de projets l'utilisant.
Alex Stone
Salut Paul, avez-vous une idée de l'exemple d'application pour la détection laser via une caméra iOS utilisant openCV?
AmJa