[..] Traitement vidéo à la volée
Posté : sam. 17 janv. 2015 17:14
Bonjour à tous,
Je viens vous demander de l'aide pour la réalisation d'un programme un peu particulier, que je n'arrive pas à réaliser.
Ses fonctions sont les suivantes :
1) Transformer un fichier vidéo en une succession d'images
2) Chercher dans chacune des images ainsi extraites les coordonnées de trois groupes de points dont la couleur est connue à l'avance.
3) A partir de ces coordonnées, trouver celle de l'orthocentre des trois points.
4) Noter ces coordonnées dans un fichier.
Ma principale contrainte est d'arriver à traiter au moins 5 images par secondes. Si cela n'est pas possible, (je crois qu'un script est monothread... ?) je compte scinder le programme en plusieurs parties et allouer un thread à chaque sous-programme ainsi créé.
Je pense être capable de réaliser l'étape 2 soit avec :
- la fonction PixelGetColor(), avec une boucle itérative, et comparer chaque donnée retournée avec la valeur recherchée (avec un pas de tolérance), puis stocker les coordonnées dans un tableau.
- la fonction PixelSearch(), mais la j'aurais besoin de votre aide car malgré mes recherches je n’arrive pas à comprendre comment l'utiliser efficacement.
Les étapes 3 et 4 ne me posent pas de soucis, mais si vous avez des idées pour optimiser le traitement, je suis preneur ^^.
Mes interrogations sont les suivantes :
- Est-il possible de réaliser l'étape 1 avec AutoIt, car je n'ai pas trouver comment faire... Si non, avez vous une idée de comment faire ? (Passage par un langage annexe ?)
- Peut-on réaliser l'étape 2 sans afficher à l'écran l'image à traiter ? Car cela ne sera pas possible dans le cadre de mon projet (Voir plus bas)
- Que me conseillez vous pour améliorer mon traitement de données ?
- Vaut-il mieux stocker les données de chaque étape dans des tableaux, ou dans des fichiers externes au programme, sous forme de liste de points par exemple ?
Pour plus de détails, voici l'objectif de mon projet :
Réaliser le traitement à la volée d'un flux vidéo radio-transmit (+-5/10FPS), afin d'extraire les coordonnées de trois points de couleur variable, mais connue (la couleur est la même pour les trois points).
Le but est de réaliser le guidage autonome de atterrissage par flux optique d'un système volant muni d'une caméra (un drone) sur une plateforme non connue. Trois LEDS de couleurs sont disposées sur la plateforme et forment un triangle équilatéral dont l'orthocentre est le centre de la plateforme.
Le système de radioguidage ainsi que l'envoie des instructions de vols sont au point, mais le système de traitement du flux optique est à concevoir. (But de ce programme)
Le programme de traitement sera exécuté par un ordinateur non muni de sorties vidéos. L'affichage n'est pas pris en charge.
Merci d'avance pour votre aide,
(et merci d'avoir lu mon pavé jusqu'au bout xD)
Je viens vous demander de l'aide pour la réalisation d'un programme un peu particulier, que je n'arrive pas à réaliser.
Ses fonctions sont les suivantes :
1) Transformer un fichier vidéo en une succession d'images
2) Chercher dans chacune des images ainsi extraites les coordonnées de trois groupes de points dont la couleur est connue à l'avance.
3) A partir de ces coordonnées, trouver celle de l'orthocentre des trois points.
4) Noter ces coordonnées dans un fichier.
Ma principale contrainte est d'arriver à traiter au moins 5 images par secondes. Si cela n'est pas possible, (je crois qu'un script est monothread... ?) je compte scinder le programme en plusieurs parties et allouer un thread à chaque sous-programme ainsi créé.
Je pense être capable de réaliser l'étape 2 soit avec :
- la fonction PixelGetColor(), avec une boucle itérative, et comparer chaque donnée retournée avec la valeur recherchée (avec un pas de tolérance), puis stocker les coordonnées dans un tableau.
- la fonction PixelSearch(), mais la j'aurais besoin de votre aide car malgré mes recherches je n’arrive pas à comprendre comment l'utiliser efficacement.
Les étapes 3 et 4 ne me posent pas de soucis, mais si vous avez des idées pour optimiser le traitement, je suis preneur ^^.
Mes interrogations sont les suivantes :
- Est-il possible de réaliser l'étape 1 avec AutoIt, car je n'ai pas trouver comment faire... Si non, avez vous une idée de comment faire ? (Passage par un langage annexe ?)
- Peut-on réaliser l'étape 2 sans afficher à l'écran l'image à traiter ? Car cela ne sera pas possible dans le cadre de mon projet (Voir plus bas)
- Que me conseillez vous pour améliorer mon traitement de données ?
- Vaut-il mieux stocker les données de chaque étape dans des tableaux, ou dans des fichiers externes au programme, sous forme de liste de points par exemple ?
Pour plus de détails, voici l'objectif de mon projet :
Réaliser le traitement à la volée d'un flux vidéo radio-transmit (+-5/10FPS), afin d'extraire les coordonnées de trois points de couleur variable, mais connue (la couleur est la même pour les trois points).
Le but est de réaliser le guidage autonome de atterrissage par flux optique d'un système volant muni d'une caméra (un drone) sur une plateforme non connue. Trois LEDS de couleurs sont disposées sur la plateforme et forment un triangle équilatéral dont l'orthocentre est le centre de la plateforme.
Le système de radioguidage ainsi que l'envoie des instructions de vols sont au point, mais le système de traitement du flux optique est à concevoir. (But de ce programme)
Le programme de traitement sera exécuté par un ordinateur non muni de sorties vidéos. L'affichage n'est pas pris en charge.
Merci d'avance pour votre aide,
(et merci d'avoir lu mon pavé jusqu'au bout xD)