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!
la source
Réponses:
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!
À 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!
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.
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).
la source
Que diriez-vous de ce code
https://www.youtube.com/watch?v=MKUWnz_obqQ
https://github.com/niitsuma/detect_laser_pointer
Dans ce code, les couleurs HSV sont comparées à l'aide du test du carré t de Hotelling
la source