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 :

La rectification d'images stéreo ?


Sujet :

OpenCV

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Points : 34
    Points
    34
    Par défaut La rectification d'images stéreo ?
    bonjour a tous

    je voudrais connaitre les etapes (fonctions ) a faire pour avoir la rectification

    Ps : j'ai la matrice fondamentale de mes images

    Merci

  2. #2
    Membre actif 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
    Points : 207
    Points
    207
    Par défaut
    J'avais donné quelques éléments ici :
    http://www.developpez.net/forums/d51...orrespondance/
    et ici :
    http://www.developpez.net/forums/d51...ysteme-stereo/

    Je voulais syntétiser tout ça dans une explication, avec code mais le temps m'a manqué.... comme toujours au fond
    J'essayerai d'y revenir si il ya des questions plus précises


    le message le plus précis est je pense le #10
    http://www.developpez.net/forums/d51...o/#post3208105
    =>
    OpenCv Addict

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    slt

    merci pour tes repenses vinsss84 sa ma eait utiles , cependant mes problémes sont plus précise que ça

    j'ai ecris un code et je voudrai savoir si vous remarquer un quelconque prob


    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
    84
    85
    86
    87
    88
    89
    90
    91
        CvMatrix3 matrix;
    CvMatrix3* matrixF;
     
        for(int i=0;i<3;i++)
            for(int j=0;j<3;j++)
            {
                matrix.m[i][j]=(float)cvmGet(Fmatrix,0,1);
     
            }
     
    matrixF=&matrix;
     
    RightImage=cvCloneImage(RectifD);
    LeftImage=cvCloneImage(RectifG);
     
        CvSize ImgSize;
         ImgSize.width=RightImage->width*3;
         ImgSize.height=RightImage->height*3;
         int line_count;
         cvMakeScanlines(0,ImgSize,0,0,0,0,&line_count);
         line_count=2400;
         int* scanlines1;
         int* scanlines2;
         int* scanlinesA;
         scanlines1=(int*)(calloc( line_count * 2, sizeof(int) * 4));
         scanlines2=(int*)(calloc( line_count * 2, sizeof(int) * 4));
        scanlinesA=(int*)(calloc( line_count * 2, sizeof(int) * 4));
         int* lenghts1;
         int* lenghts2;
         int* lenghts;
         lenghts1=(int*)(calloc( line_count * 2, sizeof(int)*4));
         lenghts2=(int*)(calloc( line_count * 2, sizeof(int)*4));
         lenghts=(int*)(calloc( line_count * 2, sizeof(int)*4));
         uchar* dst1;
         dst1=(uchar*)(malloc(ImgSize.width * (line_count) * 3 * 
     sizeof(uchar)));
         uchar* dst2;
         dst2=(uchar*)(malloc(ImgSize.width * (line_count) * 3 * 
     sizeof(uchar)));
         uchar* dst_pix;
         dst_pix=(uchar*)(calloc(ImgSize.width * (ImgSize.height+1), 3 * 
     sizeof(uchar)));
         int* runs1;
         int* runs2;
         runs1=(int*)(calloc(ImgSize.width * ImgSize.height * 2, 2 * sizeof (int)));
         runs2=(int*)(calloc(ImgSize.width * ImgSize.height * 2, 2 * sizeof (int)));
         int* first_corr;
         int* second_corr;
         first_corr=(int*)(calloc(ImgSize.width * ImgSize.height * 2, 2 * sizeof(int)));
        second_corr=(int*)(calloc(ImgSize.width * ImgSize.height * 2, 2 * sizeof(int)));
         int* num_runs1;
         int* num_runs2;
         num_runs1=(int*)(calloc(ImgSize.width * ImgSize.height * 2, 2 *  sizeof(int)));
         num_runs2=(int*)(calloc(ImgSize.width * ImgSize.height * 2, 2 *  sizeof(int)));
     
         ImgSize.width=RightImage->width;
         ImgSize.height=RightImage->height;
     
         cvMakeScanlines(matrixF,ImgSize,0,0,0,0,&line_count);
     
         cvMakeScanlines(matrixF,ImgSize,scanlines1,scanlines2,lenghts1,lenghts2,&line_count) ;
     
         IplImage* image1=cvCreateImage(cvGetSize(RightImage),8,3);
         image1=cvCloneImage(RightImage);
     
         cvPreWarpImage(line_count,image1,dst1,lenghts1,scanlines1);
     
         IplImage* image2=cvCreateImage(cvGetSize(LeftImage),8,3);
         image2=cvCloneImage(LeftImage);
     
         cvPreWarpImage(line_count,image2,dst2,lenghts2,scanlines2);
     
        RectifG=cvCloneImage(image2);
        RectifD=cvCloneImage(image1);
     
    DisplayImage("Image gauche Rectifiée",RectifG,0);
    DisplayImage("Image droite Rectifiée",RectifD,1);
     
         if (scanlines1 != 0)   free (scanlines1);
         if (scanlines2 != 0)   free (scanlines2);
            if (lenghts1 != 0)   free (lenghts1);
         if (lenghts2 != 0)   free (lenghts2);
             if (dst1 != 0)   free (dst1);
         if (dst2 != 0)   free (dst2);
                 scanlines1     = 0;
         scanlines2     = 0;
             lenghts1          = 0;
         lenghts2          = 0;
     
         dst1        = 0;
         dst2        = 0;

    RectifD et RectifG sont mes images originales

    et voila merci

    en tout cas moi je charche qu'a avoir les images rectifiée dc je ss supposé prendre les resultat sur cvPreWarpImage()

    je suis pris par le temps donc toute aide est la bien venue

    un grand Merci a tous

  4. #4
    Membre actif 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
    Points : 207
    Points
    207
    Par défaut
    J'ai pas compris grand chose à ce que tu essayes de faire
    En tout pas je ne suis jamais arrivé a rien avec ces fonctions la d'openCv (elles sont a mon gout très mal documentées et inutilisables.

    Le plus "simple" est, à mon sens de réaliser un vrai calcul de matrice de rectification (matrice de rotation spatiale) et d'appliquer ensuite cette matrice à tes images.
    Va voir du côté des travaux d'A.Fusiello, c'ets à mon gout la rectification la plus simple à mettre en place.
    =>
    OpenCv Addict

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    bonjour

    t'as raison pour les fonctions d'opencv en plus le header cvprewarp() est introuvable

    j'ai vu un peu les travaux de fusiello et sa m'interesse car c'est asser simple comme tu dis
    mais il faudrai calculer la SVD du critaire coméme

    bon j'ai deux class . une pour la SVD et une autre pour le calcul de H1,H2 a partir de F

    je compte poster mon code si j'arrive a le faire marcher car j'ai remarquer qu' y avait un manque en ça sur net .

    aller a +

  6. #6
    Membre actif 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
    Points : 207
    Points
    207
    Par défaut
    J'ai codé tout ça perso mais reaproprier le code pour le mettre a disposition me prendrait bien trop de temps par rapport a celui dont je dispose :/
    =>
    OpenCv Addict

Discussions similaires

  1. rectification plane d'image
    Par aob128 dans le forum Général Java
    Réponses: 0
    Dernier message: 13/05/2012, 12h44
  2. [Débutant] rectification d'images stéréo
    Par info_amel dans le forum Images
    Réponses: 0
    Dernier message: 20/10/2011, 12h39
  3. La rectification des images ?
    Par faroukus dans le forum OpenCV
    Réponses: 1
    Dernier message: 25/08/2008, 19h03
  4. rectification des images
    Par lesafir dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 21/11/2007, 17h11

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