IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

Déterminer le déplacement d'un objet sur base de deux photos


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Specialiste DataCenter
    Inscrit en
    Juin 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Specialiste DataCenter

    Informations forums :
    Inscription : Juin 2015
    Messages : 14
    Par défaut Déterminer le déplacement d'un objet sur base de deux photos
    Bonjour,

    Je recherche a faire une sorte de "tourelle" photographique (principalement pour l’observation spatial) et j'aimerais donc savoir comparer deux photo et de déterminer le niveau de déplacement d'un objet dessus.


    Exemple :

    Photo 1
    Nom : Dessin sans titre.png
Affichages : 834
Taille : 4,7 Ko

    Photo 2
    Nom : Dessin sans titre (1).png
Affichages : 853
Taille : 4,7 Ko

    Pour ainsi déterminer le déplacement en X et Y (en pixel c'est deja parfait )
    Nom : Dessin sans titre (2).png
Affichages : 884
Taille : 16,3 Ko


    Le resultat de X et Y est ensuite envoyer a un PLC qui fera le mouvement


    J'ai pas mal chercher sur le net et honnêtement je trouve pas vraiment de solution adapter a mon problème.

    De base j'utilise Stellarium qui m'envois les coordonnée d'une étoile en presque temps réel, mais j'aimerais pouvoir aller plus loi pour faire du hot tracking d'objet en mouvement ( Lune, satelites, ISS, voir avions, oiseaux, etc.. )


    Mon idée c'est de rajouter un viseur avec une petite optique, un appareil photo, et le script ferais ceci :


    //Start

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    photo1 = Prendre.photo();
    delay(1000);
    while(start) 
    {
       photo2 = Prendre.photo();
       X = compare(photo1, photo2, x);
       Y = compare(photo1, photo2, y);
       Print(x, " -  ", y);
       photo1 = photo2;
       delay(1000);
    }



    Pouvez vous m'aidez ou me donner le chemin a suivre ? Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Bonsoir

    Je n'ai pas vraiment saisi : vous voulez déplacer un objet étant donné un vecteur de déplacement connu, ou bien calculer un vecteur de déplacement entre 2 images ?

    Sous quel format stocker vous l'information de vos points détecter ? Ce serait pas mal de donner un petit bout de code, sans fournir les images, juste en donnant ce qui est détecté sur les images, qu'on voit un peu le format.

  3. #3
    Membre averti
    Homme Profil pro
    Specialiste DataCenter
    Inscrit en
    Juin 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Specialiste DataCenter

    Informations forums :
    Inscription : Juin 2015
    Messages : 14
    Par défaut
    Hello,

    Citation Envoyé par lg_53 Voir le message
    Bonsoir

    Je n'ai pas vraiment saisi : vous voulez déplacer un objet étant donné un vecteur de déplacement connu, ou bien calculer un vecteur de déplacement entre 2 images ?.
    Non je souhaite juste suivre un objet photographier et déterminer son déplacement pour envoyer ses infos au cerveau moteur, et donc, calculer un vecteur de déplacement entre 2 images



    Citation Envoyé par lg_53 Voir le message
    Sous quel format stocker vous l'information de vos points détecter ? Ce serait pas mal de donner un petit bout de code, sans fournir les images, juste en donnant ce qui est détecté sur les images, qu'on voit un peu le format.
    Juste deux nombre, X et Y

    Par exemple si la deuxième photo est déplacer de 40 pixel vers la droite et 20 vers le bas : > 20 - 40
    si c'est en haut a gauche : -20 -40

    Etc..
    Je n'ai pas encore de bout de code car je vois pas trop comment faire cela ou s'il existe un logiciel qui existe déjà.

    Merci !

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par Gruniek Voir le message
    Juste deux nombre, X et Y
    .

    Non ca c'est la forme du résultat voulu, mais ma question portait aussi sur les données d'entrée !
    Vos images, quelle est le format de donnée qui les représente ? Une matrice de pixel avec des 0 si c'est blanc et des 1 si c'est noir ?
    Ou bien juste une liste de couple (x_i, y_i) indiquant l'emplacement des points blancs ? Ou bien autre chose encore ?
    Et donc du coup vous devriiez déjà au moins avoir du code pour la lecture de chacune des images.

  5. #5
    Membre averti
    Homme Profil pro
    Specialiste DataCenter
    Inscrit en
    Juin 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Specialiste DataCenter

    Informations forums :
    Inscription : Juin 2015
    Messages : 14
    Par défaut
    En entrée ça serait juste deux photos prise via un appareil dédier, donc le script déclencherais la capture de photo pour faire la comparaison.
    Je voyais ensuite partir sur une variable a deux tableau ou y serait intégrer l'image (au préalable traiter avant en monochrome)
    ensuite c'est un peu floue, j'ai ma petite idée mais j'ai peur que ca enduit trop d’opération pour respecter un bon ratio de traitement par seconde, dans les cas les plus rapide, serait quand une a deux mise a jour des coordonnée par seconde.

    Et je n'ai pas encore de code actuellement car je suis qu'au stade de l’étude et la faisabilité du programme
    Par contre je vais commencer sous peu l’écriture pour la capture de l'image, c'est vrai que dans tous les cas, j'en aurai besoin.

    Je posterais ici le code quand il sera fait

    Merci

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Le temps d'exécution est secondaire pour le moment. Vous devez déjà avoir un code qui fonctionne correctement avant de vous demander s'il tourne suffisamment vite pour faire du temps réel. Si vos images ne sont pas plus grosses que ca, ca prend tout de même pas beaucoup de temps à Python de traiter environ un millier de pixel. A moins de vouloir un rafraichissement de l'ordre de la millisecondes, et encore ...

    Donc commençons par le début.

    Pour lire les images, on peut regarder :
    https://deptinfo-ensip.univ-poitiers...ui:tuto_images

    Ensuite, il faut passer d'une matrice de pixels, à une liste de pixel d'intérêt. Si vos pixel d'intérêt sont tous blanc, alors un np.argwhere devrait suffire.

    Puis ensuite une fois que vous avez vos listes de pixels d'intérêt sur chacune de vos images, vous en faite la différence point par point.

    Enfin, soit votre déplacement est parfait (pas de distortion physique), et donc toutes les différences sont égales, soit (ce qui me semble plus réaliste), vous aurez des déplacements qui ne seront pas tout à fait les mêmes. Dans ce dernier cas, là à vous de voir quelle est l'information que vous voulez en tirer, mais de prime à bord, la moyenne des déplacements sera déjà pas mal.

    Dans tout ce que je viens de dire, ça représente vraiment pas beaucoup de ligne de code. Prenez les 2 images de votre 1er post, et essayez d'écrire le code pour calculer le déplacement entre elles 2, avec les étapes que je vous ai donné.

    EDIT : Sur votre image, je n'arrive pas à bien voir si 1 point = 1 pixel, ou bien si 1 point blanc est un ensemble de pixel. Si le point est un ensemble de pixel, alors effectivement là il y a un peu plus de travail. La manière la plus rapide (en temps d'execution) serait surement du machine learning avec des réseaux de neuronnes convolutionnels. Et si vous n'etes pas famillier de ca comme, là je pense que c'est assez simple de faire un traitement à la main (par exemple en downsamplant vos images, de sortes à réduire le nombre de pixel par points blancs).
    Ou alors, on peut très bien considérer que 1 point blanc = plusieurs pixels = autant de points d'intérêt (car finalement on s'en fiche si c'est un point c'est une ou plusieurs données, si à la fin, on veut le déplacement moyen ! )

Discussions similaires

  1. [XL-2016] Sélectionner un cellule sur base de deux variables
    Par thomanneca dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/02/2019, 17h15
  2. [XL-2007] Rechercher une valeur sur base de deux critères
    Par HIGGUINS dans le forum Excel
    Réponses: 2
    Dernier message: 10/11/2010, 18h28
  3. Déplacement journal de transaction sur base en Log Shipping
    Par tibal dans le forum Administration
    Réponses: 4
    Dernier message: 15/07/2010, 07h38
  4. [XSD] [XML Schemas] Valider un Objet sur base du schéma
    Par Invité dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/03/2009, 14h10
  5. Réponses: 8
    Dernier message: 14/02/2007, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo