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 :

Carte de disparités


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Par défaut Carte de disparités
    Bonjour à tous,

    Je souhaite construire une carte de disparité à partir d'une paire stéréo. Il parait que certaines méthodes sont déjà développées sous OpenCV. Mise en correspondance par corrélation et même par programmation dynamique. J'ai trouvé ça sur un certain nombre de papier. Malheureusement, je n'arrive pas à trouver les noms des fonctions et surtout des exemples afin de les étudier.

    Connaissez-vous les noms de ces fonctions ? Avez-vous des exemples à me filer ?

    Merci par avance

  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
    cvFindStereoCorrespondence sur une paire stéréo rectifiée,
    il ya des examples dans la doc normalement.
    Sinon il faurait vraiment que je fasse un tuto la dessus \x/

    FindStereoCorrespondence

    Calculates disparity for stereo-pair

    cvFindStereoCorrespondence(
    const CvArr* leftImage, const CvArr* rightImage,
    int mode, CvArr* depthImage,
    int maxDisparity,
    double param1, double param2, double param3,
    double param4, double param5 );

    leftImage
    Left image of stereo pair, rectified grayscale 8-bit image
    rightImage
    Right image of stereo pair, rectified grayscale 8-bit image
    mode
    Algorithm used to find a disparity (now only CV_DISPARITY_BIRCHFIELD is supported)
    depthImage
    Destination depth image, grayscale 8-bit image that codes the scaled disparity, so that the zero disparity (corresponding to the points that are very far from the cameras) maps to 0, maximum disparity maps to 255.
    maxDisparity
    Maximum possible disparity. The closer the objects to the cameras, the larger value should be specified here. Too big values slow down the process significantly.
    param1, param2, param3, param4, param5
    - parameters of algorithm. For example, param1 is the constant occlusion penalty, param2 is the constant match reward, param3 defines a highly reliable region (set of contiguous pixels whose reliability is at least param3), param4 defines a moderately reliable region, param5 defines a slightly reliable region. If some parameter is omitted default value is used. In Birchfield's algorithm param1 = 25, param2 = 5, param3 = 12, param4 = 15, param5 = 25 (These values have been taken from "Depth Discontinuities by Pixel-to-Pixel Stereo" Stanford University Technical Report STAN-CS-TR-96-1573, July 1996.)

    The function cvFindStereoCorrespondence calculates disparity map for two rectified grayscale images.

    Example. Calculating disparity for pair of 8-bit color images

    /*---------------------------------------------------------------------------------*/
    IplImage* srcLeft = cvLoadImage("left.jpg",1);
    IplImage* srcRight = cvLoadImage("right.jpg",1);
    IplImage* leftImage = cvCreateImage(cvGetSize(srcLeft), IPL_DEPTH_8U, 1);
    IplImage* rightImage = cvCreateImage(cvGetSize(srcRight), IPL_DEPTH_8U, 1);
    IplImage* depthImage = cvCreateImage(cvGetSize(srcRight), IPL_DEPTH_8U, 1);

    cvCvtColor(srcLeft, leftImage, CV_BGR2GRAY);
    cvCvtColor(srcRight, rightImage, CV_BGR2GRAY);

    cvFindStereoCorrespondence( leftImage, rightImage, CV_DISPARITY_BIRCHFIELD, depthImage, 50, 15, 3, 6, 8, 15 );
    /*---------------------------------------------------------------------------------*/

    And here is the example stereo pair that can be used to test the example

  3. #3
    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




    2 paires stéréo rectifiées, celle de la doc, et une maison

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Par défaut
    Merci pour cette réponse.
    J'ai pu bien utiliser cette fonction. J'ai comme résultat une carte de disparité dense.
    Le problème maintenant est le suivant : quand j'ai appliqué cette fonction sur deux cartes de contours de la paire sétéro, j'ai énormément de faux appariement. Il faudra probablement trouver une autre méthode de mise en correspondance.

    Ma question est donc :
    Y-a-t-il une fonction qui permet d'avoir une carte de disparité éparse ?

    Merci d'avance.

  5. #5
    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
    non
    Enfin moi j'en ai codé mais pas en état d'être diffusées :")

    Tu peux t'essayer à en faire une toi même en regardant du coté du SSD, ZSSD ou transformée de census (utilisée par TYZX notamment)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 24
    Par défaut
    pratique cette fonction ! Bon avec tes images maison j'ai pas eu de résultat correct, mais c'est pas trop grave.
    Par contre, j'ai une question, est ce que vous savez ou on pourrais trouver des explications détaillé en français sur des algorithmes qui font des cartes de disparités ? J'ai besoin d'implémenter en C pur cet algo utilisant un filtre LoG, une SAD et un lefth/right check mais pour le moment j'ai du mal avec la théorie.

    Merci d'avance si vous avez des tuyaux!!

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/10/2012, 11h59
  2. Fusion des cartes de disparité
    Par 3abirb dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 15/10/2012, 18h04
  3. Réponses: 1
    Dernier message: 11/09/2012, 11h28
  4. Réponses: 4
    Dernier message: 12/08/2010, 16h55
  5. Carte de disparités
    Par kaolite dans le forum OpenCV
    Réponses: 0
    Dernier message: 07/09/2009, 15h42

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