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 :

Déterminer les coordonnées 3D d'un système stéréo


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut Déterminer les coordonnées 3D d'un système stéréo
    Bonjour,
    je suis en train de train sur la meilleur solution afin de déterminer les coordonnées 3d à partir d'un couple d'image mis en correspondance.
    Pouvez me donner plusieurs pistes, et surtout celles qui sembleraient être les plus précises sachant que je dispose des paramètres de calibration du système (matrice intrin/extrinsèque et fondamentale).

    Merci pour votre aide!
    A+

  2. #2
    Membre expérimenté Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Par défaut
    Une simple triangulation fait l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    int Stereo::GetDisparity(IplImage *disp_map, CvPoint right)
     
     
     
    		{
     
    		///////////////////////////////////////////////////////////////////////////////////
     
    		//The GetDisparity method get the value of disparity for a given 2D point
     
    		//The 2D point is a point of the right image.
     
    		//Knowing the disparity and the right coordinates of the points we will be able 
     
    		//To compute the 3D coordinates of the point
     
    		//Reminder : 
     
    		//Z=b/D   =====> D = (y'-y), b is the remaining coeeficient of the right cam to left cam transform matrix (correspondng gto y axis tanslation)
     
    		//X=xZ
     
    		//Y=yZ
     
    		///////////////////////////////////////////////////////////////////////////////////
     
    		uchar disp_value;
     
     
     
    		disp_value = ((uchar*)(disp_map->imageData+disp_map->widthStep*right.y))[right.x];
     
    		//printf("Disp : %i\n",disp_value);
     
    		return (int)disp_value;
     
    		}
     
    //////////////////////////////////////////////////////////////////
     
    CvPoint3D32f Stereo::compute3Dcoordinates(CvPoint right, float b, int disparity)
     
    	{
     
    	double x,y,z;
     
        float f = f_rect;
     
    	z = (b*f / disparity);
     
    	x = (right.x * z)/f /**1.02e-3*/;
     
    	y = (right.y * z)/f /**0.9375e-3*/;
     
    	//z = (b / disparity)*600;
     
    	//x = right.x * z *3e-4;
     
    	//y = right.y * z *3e-4;
     
    	if (x!=0 && y!=0 && disparity )
     
    	{
     
    	printf("x=%f , y=%f , z=%f  \n",x,y,z);
     
    	}
     
    	/*z = z*600;
     
    	x = x*600*5.6e-4;
     
    	y = y*600*5.6e-4;
     
    	*/
     
    	//printf("x=%f cm, y=%f cm, z=%f cm \n",x*634*5.6e-4,y*634*5.6e-4,z*634);
     
    	return cvPoint3D32f(x,y,z);
     
     
     
    	}
    Voila mon code pour ça

  3. #3
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut
    Bonjour,

    J'ai regardé votre code et je ne vois pas à quoi correspond f_rect (=> distance focale surement) mais comment l'obtenir ?
    Merci pour votre aide

  4. #4
    Membre expérimenté Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Par défaut
    effectivement f correspond à la focale rectifiée qui etait (honte a moi ) en global dans mon code de vision 3D

    elle est obtenu grace à la matrice des paramètres intrinsèques.

  5. #5
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut
    Bonjour,
    J'ai pleins de questions
    1) Comment déterminer b (est ce que c'est un élément de la matrice essentielle du style transformation, si oui sur l'axe z?)
    2) J'ai du mal a voir comment obtenir la disparité théoriquement et dans votre code
    3) Pourquoi f = focal rectifié et pas la focal de base (pb qui vient de la correspondance?)

    Merci pour ces éclaircissements ça m'aide beaucoup

  6. #6
    Membre expérimenté Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Par défaut
    Alors quelques réponses

    1-Pour b faut que je recherche je sais plus
    2-Pour trianguler il faut avoir la correspondance entre les deux images, je pense que la on est d'accord. Donc une fois la correspondance établie tu crée une carte de disparité et la valeur de chaque pixel de cette carte de disparité correspond à la disparité (la distance sur la ligne en gros) entre un point de l'image droite (resp gauche) avec son correspondant dans l'image de gauche (resp droite)
    3-La réponse est dans ta question : la correspondance est réalisée sur des images rectifiées, donc f_rect, enfin il faudrait que je refasse les shémas pour avoir les idées claires mais bon...

    Alors b mmhhhh dans mes souvenirs correspond à la distance intra caméra
    Je confirmerai ça mais sinon je te conseille ce livre :
    http://perception.inrialpes.fr/peopl...re-hermes.html

Discussions similaires

  1. [Python 2.X] Déterminer les coordonnées d'un rect -Pygame-
    Par Marty_and_Doc dans le forum Programmation multimédia/Jeux
    Réponses: 3
    Dernier message: 21/05/2015, 18h42
  2. Déterminer les coordonnées d'un usercontrol
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 12/09/2007, 17h41
  3. Déterminer les coordonnés d'un cercle
    Par nizartu dans le forum MATLAB
    Réponses: 1
    Dernier message: 30/03/2007, 15h51
  4. Déterminer les coordonnées d'une image
    Par blaise4714 dans le forum Images
    Réponses: 2
    Dernier message: 27/11/2006, 19h05
  5. Réponses: 4
    Dernier message: 27/11/2006, 18h06

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