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 :

Problème avec SIFT


Sujet :

OpenCV

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut Problème avec SIFT
    Bonjour,

    je suis en train de réaliser du traitement d'image et pour cela je doit utiliser la méthode SIFT.

    Je travaille sur des images de 11Mpixels, donc assez volumineux une fois en Mat.
    Malheureusement, lors de l'exécution de SIFT j'ai le droit à ce message d'erreur :

    OpenCV Error: Insufficient memory (Failed to allocate 122880004 bytes) in unknown function, file ..\..\..\src\opencv\modules\core\src\alloc.cpp, line 52


    Est-ce que je m'y prends mal ou cela est normal et je dois donc dégrader mon image pour travailler avec SIFT ?

    Merci

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut
    Salut 122880004 ca fait 110 mb +
    Donc pour trouver cela en mémoire surtout si c'est contigu c'est difficile.

    Mais pour le sift tu devrais le faire sur une image à la fois et dé-allouer au fur et à mesure des images que tu parcours.

    Tu obtiens cette erreur après le chargement de 1 image?

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut
    j'utilise SIFT sur 2 images car je travaille sur de la stéréo-vision. Le programme plante durant l'exécution de SIFT.

    Voici le bon de code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            // SIFT constructor
            SIFT sift(nFeatures, nOctaveLayers, contrastThreshold, edgeThreshold, sigma);
            //déclaration et allocation des differens parametres
            vector<KeyPoint> keypointsRight, keypointsLeft;
            Mat descriptorsRight, descriptorsLeft;
            //Detects keypoints and computes SIFT descriptors for them
            sift( imageLeft, Mat(), keypointsLeft, descriptorsLeft, false );
            sift( imageRight, Mat(), keypointsRight, descriptorsRight, false );

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut
    Peut-être qu'il n'a plu de mémoire car il trouve trop de points caractéristiques.

    Tu peux downscale tes images par deux au moins je pense que tu ne perdras pas trop en qualitié..
    Sinon fait le sift sur la première image, dé-load la et fait le sift sur la deuxième image.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut
    Par curiosité quel algo vas-tu utiliser pour faire de la stéréo?
    Je suppose que tu vas te servir des points caractéristiques comme référence forte?
    Mais comment interpoler les pixels aux alentours?

    Merci

  6. #6
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut
    En fait je dois réaliser une reconstruction 3D de cliché en milieu aquatique.
    Je dois réaliser un traitement se basant sur une thèse.

    1- Je recherche les points d'intérêts en utilisant Harris et SIFT
    2- maillage par delaunay en 2D
    3- mise en relation des 2 maillages en espace 3D

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut
    Ok mais pour faire une reconstruction 3D il faut plus de deux images non?

    Par exemple 100 images de la scène que tu cherches a reconstruire?

  8. #8
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut
    Pour mon cas 2 images suffisent (comme pour pas mal de logiciel d'ailleurs). Bon, certes, on obtient pour une reconstruction 3D complète (limité à la vision des 2 caméras) mais cela suffit pour faire une modélisation 3D.

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

Discussions similaires

  1. Problème avec un programme de Sift
    Par jp_developpeur dans le forum Images
    Réponses: 4
    Dernier message: 25/02/2009, 11h50
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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