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

OpenCV Discussion :

Calcul de distance


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut Calcul de distance
    Bonjour,

    Voila ma situation est la suivante. J'ai une seule webcam avec laquelle je film, et je voudrais savoir si il existe un moyen avec OpenCV (ou autre) de calculer une distance entre la caméra et un objet quelconque ? Si oui comment pourrai-je procéder ?

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Cette question me rappelle 2 sujets:
    1- le scanner en 3D pour réalise des objets 3D de différentes choses, usines, monuments, très gros objets (avion) etc. Dans ce type d'application, il y a toujours au moins 2 points de vue. Pour simplifier, la distance est calculée en fonction de l'angle de convergence des 2 visées sur un même point, à partir de chaque prise de vue.
    2- il y a eu il y a quelques mois une info d'un groupe d'universitaires anglais qui à l'aide d'une unique webcam, réalisait un objet interne 3d (moi j'appelle ça une image plastique) d'un objet quelconque.
    On peur imaginer l'algorithme qui permettrait (conditionnel) de calculer la position sans un certain repère 3D (lequel) d'un point de l'objet réel à partir des différentes visée faites d'une même webcam. Mais, j'y crois pas trop.
    A part cette première info, il n'y a pas eu de suite. Gag, intox, optimisme, je ne sais pas.

    Pour répondre à votre question, la seule piste me paraitrait d'exploiter la modification de la forme et surtout de sa dimension en fonction de ses déplacements.

    Cordialement.

  3. #3
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Bonjour.

    Si l'on veut repérer des objets connus (et solides) et qu'on est capable d'identifier suffisamment de points caractéristiques (7 je crois (dont un n'est pas coplanaire avec les autres)), on peut calculer la position d'un objet (à partir de sa matrice intinsèque, on peut reconstituer sa matrice extrinsèque qu'on peut par exemple calculer en considérent l'objet comme repère). Le nombre de points à calculer peut être également réduit si l'on fait certaines hypothèses (sur la position de la caméra, son orientation etc... ou bien la position et l'orientation de l'objet. dans le cas d'un objet symétrique , on peut fixer arbitrairement certains paramètres).

    C'est a mon avis la seule méthode vraiment connue permettant de détercter la position d'un objet avec une seule image (à part la projection de mires, mais ça revient au même que deux caméras).

    Bonne chance

  4. #4
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    si tu connais la hauteur de ton objet et la hauteur d'un autre objet (la hauteur de la caméra par exemple), le théorème de thales fonctionne très bien

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    C'est une bonne question.

    J'y suis arrivé avec une seule caméra mais j'ai utilisé une mire de calibrage pour me repérer dans la scène sinon tu ne peux pas y arriver je pense...

    Je te joins le calcul j'avais tout fais sur matlab. dans mon calcul ce que tu recherches c'est les coordonnées de ta caméra tx, ty et tz et en particulier tz qui donne la distance entre ton objet et ta caméra.

    Une fois que tu as pris ta photo il faut utiliser un logiciel comme gimp ou photoshop pour remplir le u et v de la matrice que j'ai appelé A (ça marche bien en en prenant 8 points et en les prenants au extrémités de ta mire).
    Tu prends les x et y et z
    en les mesurant sur ta scène réelle.

    ensuite le calcul te donne la distance de ta caméra à un point de ton image piur n'importe quel point.

    J'avais trouvé des résultats assez corrects mais peu précis.

    Voici le calcul :
    Fichiers attachés Fichiers attachés

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour Snake,
    Sur le plan général, c'est un problème très intéressant, mais pour donner des réponses plus précises, il faudrait des hypothèses plus précises.
    Il existe un chapitre en topométrie qui s'appelle la stadimétrie. Le but consiste à calculer une distance à partir d'un appareil vers un point donné. Naturellement, ce genre de chose se fait maintenent avec des appareils à réflexion d'onde, mis il n'est pas question ici de ces méthodes.
    Donc, en stadimétrie on dispose d'une stadia, c'est à dire une mire. Je ne rentrerai pas dans les détails, il y en aurait au moins pour une vingtaine de pages.
    Par contre, ce qu'il faut savoir, c'est que la distance mesurée sur la mire sera multipliée par un grand nombre. Cela signifie qu'il est très important pour la précision du résultat de connaitre de façon précise la position relative de la mire et de l'axe Caméra->objet, ainsi que l'angle de visée par rapport à l'horizontale, sauf si la mire est horizontale.

    Cette question me rappelle maintenant un troisième sujet : quelqu'un cherchait à positionner des panneaux publicitaires inaccessibles, parce que situés en domaine privé. Je ne pense pas qu'il y soit arrivé autrement qu'avec des méthodes traditionnelles.

    La finesse de la webcam est un élément fondamental, mais il faudrait avoir plus de détails.
    Cordialement.

  7. #7
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Tout d'abord merci de votre implication dans mon problème et de vos conseils

    Maintenant il est vrai que je n'ai pas été très exhaustif dans mes explications, je vais donc être plus précis pour que vous puissiez voir exactement ce que j'ai en tête de faire.

    La situation est la suivante, j'ai récemment fais l'acquisition d'un petit robot équipé d'un micro et d'une webcam qui peut avancer, reculer, tourner etc... sur demande. Je dispose aussi de tout le code source le concernant (interface graphique et coeur), lors du démarrage de l'interface graphique j'ai au milieu de celle-ci le rendu en temps réel de la caméra du robot.

    Ce que j'aimerai faire c'est que lorsqu'il avance et qu'il y a un obstacle quelconque à moins de 30cm celui-ci s'arrête tout seul sans que j'ai besoin d'intervenir.

    J'espère que vous voyez maintenant mieux ce que j'aimerais faire

    Pour les pistes que vous m'avez donné, auriez vous des exemples, des explications, des tutos ou autres à me fournir car je dois bien avoué que je n'ai jamais pratiqué la programmation dans ce domaine

    Encore merci en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. calculer la distance qu'il y a entre une div et le bas de page
    Par Henry9 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2007, 00h33
  2. Problème et questions sur un calcul de distance
    Par ale2000 dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 11/09/2007, 20h33
  3. Calculer des distances géodésiques
    Par ToTo13 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 30/11/2006, 08h59
  4. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07
  5. [GEOMETRIE] calcul de distance dans un triangle
    Par gronaze dans le forum Mathématiques
    Réponses: 10
    Dernier message: 29/06/2006, 10h04

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