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

Mathématiques Discussion :

Calcul de position 3D par triangulation


Sujet :

Mathématiques

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut Calcul de position 3D par triangulation
    Bonjour à tous,

    Je cherche les formules dites d'aerotriangulation qui permettent de calculer la position d'une camera P(Px,Py,Pz) à partir de points de references dont les positions sont connues :
    - dans le repere camera n1(n1x,n1y,n1z), n2(n2x,n2y,n2z)...
    - et dans le repere reel N1(N1x,N1y,N1z), N2(N2x,N2y,N2z)...

    ## EDIT ##
    On connait la focale, et donc l'angle de champs sur toutes les dimensions de l'image... Bien sur !
    ## EDIT ##

    Quel sera le nombre minimum de points de reference pour determiner la position P(Px,Py,Pz) dans le repere reel ?

    Je pense qu'il existe deux formulations differentes aboutissant a ce meme resultat :
    - une resolution matricielle
    - une resolution trigonometrique

    Mais je n'ai pas de preference entre les deux (je ne suis pas sectaire !).

    En tout cas merci d'avance pour vos reponses

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par neoirto Voir le message
    Quel sera le nombre minimum de points de reference pour determiner la position P(Px,Py,Pz) dans le repere reel ?
    11 inconnues => 11 equations => 6 points

    (cf. Camera Calibration)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Merci de ta reponse pseudocode !

    Je viens de me griller le neurone sur le lien que tu m'as communiqué. Bon, c'est pas gagné... Et pourtant il est bien fait ce doc, il reprend tous les points du travail que je veux realiser...

    Dans la slide 21 j'ai bien repéré la methode preconisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Find null vector C of P using SVD
     
    C is the unit singular vector of P corresponding to the
    smallest singular value (the last column of V, where P
    = U D VT is the SVD of P)
    Mais j'ai bien peur que ce soit au-dela de mes competences ! Car je ne vois pas comment implementer tout ca.

    Je crois que les geometres utilisent tous les jours une formule de trigonometrie spherique pour obtenir le meme resultat. Ce sera peut etre plus simple a implementer, non ... ???

    Alors si quelqu'un peut m'orienter dans ce sens ce serait top

    Finalement, je suis sectaire...

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par neoirto Voir le message
    Dans la slide 21 j'ai bien repéré la methode preconisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Find null vector C of P using SVD
     
    C is the unit singular vector of P corresponding to the
    smallest singular value (the last column of V, where P
    = U D VT is the SVD of P)
    Mais j'ai bien peur que ce soit au-dela de mes competences ! Car je ne vois pas comment implementer tout ca.
    Tu peux passer directement au slide 24 pour le calcul de la matrice : la methode DLT (Direct Linear Transformation). Il faut alors minimiser un système d'equations, par exemple avec les moindres carrés (Least Square).

    Si tu cherches ces 2 termes sur internet tu trouveras tous les détails.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Ok je te remercie !
    Je vai creuser ça, et faire quelques essais...

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    Par défaut triangulation
    bonjour,

    En c++, tu peux aller voir la librairie VXL 1.10 Regarde le répertoire contrib/gel/mrc/vpgl
    Pour la théorie : R.Hartley, A.Zisserman Multiple View Geometry, Cambridge University Press, second edition 2003.

    Cordialement
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Bon alors j'ai creusé vos deux reponses, et je confirme que tout est exact :
    - La methode DLT est une des plus efficace et precise pour l'estimation de la position
    - La librairie VXL comporte un ensemble d'outils tres impressionnant permettant de realiser ce calcul.

    Le seul hic, c'est que je ne sais pas compiler un petit executable a partir de ce code...

    Que je n'ai pas matlab non plus ! Quel boulet me direz vous !

    Bon sinon j'ai acces à Octave (sous unix), qui remplit les memes fonctions qu'un matlab non ?

    Alors est ce que quelqu'un peut m'aider a nouveau : m'orienter dans mes recherches, parce que tous les logiciels qui realise ce calcul (parmi d'autres fonctions, coutent 10 000 $ minimum !

    C'est fou non ?

    Merci !!!!

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par neoirto Voir le message
    Bon alors j'ai creusé vos deux reponses, et je confirme que tout est exact :
    - La methode DLT est une des plus efficace et precise pour l'estimation de la position
    - La librairie VXL comporte un ensemble d'outils tres impressionnant permettant de realiser ce calcul.
    Comme quoi on ne dit pas forcément que des bêtises.

    Bon sinon j'ai acces à Octave (sous unix), qui remplit les memes fonctions qu'un matlab non ?
    en cherchant "Direct Linear Transformation octave" sur , je pense qu'on doit pouvoir trouver quelque chose.

    Alors est ce que quelqu'un peut m'aider a nouveau : m'orienter dans mes recherches, parce que tous les logiciels qui realise ce calcul (parmi d'autres fonctions, coutent 10 000 $ minimum !
    Vache. Ça fait cher pour une homographie.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    YES !

    En plus ca a l'air compatible Octave !

    Alors sur :
    http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/

    Je trouve CA :

    ransacfitfundmatrix7.m :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    % Arguments:
    %          x1  - 2xN or 3xN set of homogeneous points.  If the data is
    %                2xN it is assumed the homogeneous scale factor is 1.
    %          x2  - 2xN or 3xN set of homogeneous points such that x1<->x2.
    %          t   - The distance threshold between data point and the model
    %                used to decide whether a point is an inlier or not. 
    %                Note that point coordinates are normalised to that their
    %                mean distance from the origin is sqrt(2).  The value of
    %                t should be set relative to this, say in the range 
    %                0.001 - 0.01

    Est ce que c'est bien ca que je cherche (j'avoue n'en etre pas tres sur !) : trouver la matrice fondamentale, qui me permet par la suite de retrouver les coordonnees de la camera dans chacun des 2 reperes ?

    Si c'est le cas je ne comprends pas tres bien comment le script peut gerer ce calcul sans la valeur d'angle de champ...

    Donc dans cette fonction, j'alimente avec les correspondances d'un minimum de 7 points dans mes deux reperes x1, x2 et zou ???

  11. #11
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par neoirto Voir le message
    Est ce que c'est bien ca que je cherche (j'avoue n'en etre pas tres sur !) : trouver la matrice fondamentale, qui me permet par la suite de retrouver les coordonnees de la camera dans chacun des 2 reperes ?
    Avec la matrice fondamentale, tu peux passer du repère "image" au repère "réel" (ou inversement)

    Dans le repère "image", la position de la caméra est :
    • sur la droite perpendiculaire au plan focal passant par le milieu de l'image
    • à une distance "d" du plan focal (distance focale)


    C'est à dire aux coordonnées (0,0,d). Reste à passer dans le repère "réel"
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    Par défaut
    bon, là, il y a possibiité de confsusion !!
    Pour répondre à ta question, j'ai été lire le post initial (j'aurai dû le faire la première fois, meaculpa). Ma réponse est une question.

    tu dis :

    Je cherche les formules dites d'aerotriangulation qui permettent de calculer la position d'une camera P(Px,Py,Pz) à partir de points de references dont les positions sont connues :
    - dans le repere camera n1(n1x,n1y,n1z), n2(n2x,n2y,n2z)...
    - et dans le repere reel N1(N1x,N1y,N1z), N2(N2x,N2y,N2z)...

    les points de référence sont connus dans le repère camera ou ce que tu appele ni(...), sont les coordonnées dans l'image (auquel cas, les niz sont constant)?
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Effectivement Nihao, les Ni.z sont constants et nuls.

    En revanche, la position de la camera se trouve, dans le referentiel image a : C( width/2, heigth/2, distance_focale ), comme le dit Pseudocode.

    Et bien sur, dans le monde reel, aucun points coplanaires !

    Cette distance focale, je la calcule avec les valeurs exiftool. En sachant qu'il y a deja une petite source d'imprecision a ce niveau car les images ont egalement ete rectifiées prealablement de leur distorsion (ce qui "rogne" un petit peu). Mais c'est un autre probleme !

    Alors si je resume les fonctions matlab qui peuvent m'etre utiles :

    - http://www.csse.uwa.edu.au/~pk/Resea...e/fundmatrix.m
    Apparemment, il faut un minimum de 8 points

    - http://www.csse.uwa.edu.au/~pk/Resea...nefundmatrix.m
    La matrice fondamentale a partir de 4 points a partir d'une fonction affine (c'est moins precis c'est ca ???).

    - http://www.csse.uwa.edu.au/~pk/Resea...itfundmatrix.m
    Apparemment, il faut un minimum de 8 points

    - http://www.csse.uwa.edu.au/~pk/Resea...tfundmatrix7.m
    Apparemment, il faut un minimum de 7 points

    - http://www.csse.uwa.edu.au/~pk/Resea...itaffinefund.m
    Apparemment, il faut un minimum de 4 points


    Je choisi quelle methode, en sachant que j'ai la plupart du temps + de 8 points, et que je peux egalement faire un tri pour reduire à un certain nombre de points sur un critere de surface (je conserve les points couvrant le max de surface).

    Si j'alimente avec plusieurs centaines de points, ça risque pas de ramer ???

    Merci à vous deux

  14. #14
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    A propos de la distance focale, j'ai un gros doute d'un seul coup...

    On prends la distance focale en equivalent 35mm c'est bien ca ? C'est a dire la focale donnee dans les exif, multipliee par le rapport de conversion ???

    Parce qu'en regardant plus en detail sur le net, je vois que dans certains programmes, les coordonnees des points dans le repere image sont exprimées en mm...

    Rien de bien etonnant : on peut convertir sans probleme les coordonnees x,y,z du repere image en mm, c'est bien ca ?

    Et donc a partir de la focale equivalent 35 mm ??

  15. #15
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    Par défaut
    bon, alors si on ne considère que ton post #1, il n'y a pas de correspondances 2D-2D (donc pas de matrice fondamentale, quoi que.... j'y reviens après). Par contre, il y a correspondances 3D-2D et tu es dans le cas signalé par pseudocode post #2 ( avec 6 pts en thèorie). Une règle empirique est que le nombre de contraintes soit 5 fois supérieur au nombre d'inconnues; d'ou le 28 pts du lien de pseudocode. Une formulation peut être moins matricielle est là : http://perception.inrialpes.fr/peopl...re-hermes.html

    Une fois qur tu as P, qui est une matrice 3x4, tu l'as décompose en utilisant ou en t'inspirant de http://www.robots.ox.ac.uk/~vgg/hzbo...gg_KR_from_P.m

    sinon, quelques remarques :

    - etudies à fond ça : http://www.robots.ox.ac.uk/~vgg/hzbook/

    - oublie l'exif pour reconstruire les paramètres intrinsèque de la camera (matrice K). Les données constructeurs sont fausses ou approximative.

    - Puisque tu parles d'aérotriangulation, ça veut dire que tu as plusieurs images se recouvrant partiellement. Là, tu as une correspondance 2D-2D entre les coordonnées des points entre deux images successives. Tu peux à ce moment construire la géométrie épipolaire ( matrice F : fondamentale). Avec 8 pts tu as une seule solution dans le cas générale ou les points ne sont pas sur un plan et le mouvement de la caméra n'est pas une rotation pure (peu de chance dans un avion).

    Voilà, mais surtout lit et étudie les liens que nous t'avons donnés en gardant à l'esprit que :
    "ce n'est pas parceque les choses sont difficiles qu'elles nous font peur mais c'est parcequ'elles nous font peur qu'elles sont difficiles"
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  16. #16
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par nihao Voir le message
    Une fois qur tu as P, qui est une matrice 3x4, tu l'as décompose en utilisant ou en t'inspirant de http://www.robots.ox.ac.uk/~vgg/hzbo...gg_KR_from_P.m
    Pour avoir seulement la translation, on peut se contenter de calculer le noyau de la matrice.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Merci les gars,

    La je me sens bien lancé... Je vai potasser plus serieusement !

    "ce n'est pas parceque les choses sont difficiles qu'elles nous font peur mais c'est parcequ'elles nous font peur qu'elles sont difficiles"
    Tout a fait d'accord ! C'est presque ma devise... A une precision pres :
    - tout probleme n'est qu'une somme de sous problemes simples agencés de facon compliquée
    - le probleme, et la peur n'interviennent que lorsque vous ne possédez pas la connaissance des "briques de base" permettant d'apprehender un ou plusieurs de ces sous problemes.

    Petit exemple tout bete : un francais sera peu destabilisé devant un poeme de Rimbaud (pourtant du domaine complexe), alors qu'une simple liste de course (meme pas du domaine du compliqué !) rédigée en hieroglyphes égyptiens lui fera peter les pedales !

    Et en l'occurence vous deux venez de me donner toutes les pistes et orientations nécessaires a l'acquisition de ces "briques de base"... Vous avez due comprendre que la manipulation des matrices et moi, jusqu'ici, ca faisait... 1000 ?!!

    D'ou mon enthousiasme !

    Donc je potasse et je reviens vers vous !

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut solution
    quelqu'un a une solution transposable en code ?
    ou les N équations à N inconnues ?

Discussions similaires

  1. calcul de positions par rapport a un centre
    Par Lorenzo77 dans le forum Mathématiques
    Réponses: 11
    Dernier message: 11/02/2011, 17h42
  2. Réponses: 2
    Dernier message: 05/07/2007, 18h35
  3. [Math] Calcul de position de vecteur.
    Par Lucyberad dans le forum DirectX
    Réponses: 4
    Dernier message: 19/05/2007, 17h15
  4. Réponses: 6
    Dernier message: 12/11/2006, 20h00
  5. Réponses: 17
    Dernier message: 29/08/2005, 14h53

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