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 :

Calcul de gradient


Sujet :

OpenCV

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 98
    Par défaut Calcul de gradient
    Bonjour,

    j'ai développé ce code voir ci dessous.

    image originale:image_filtré:http://cjoint.com/?fyuAd0XUyH)

    image résultat du produit de convolution entre masque h=[-1 0 1] et image filtrée avec matlab :http://cjoint.com/?fyuFf4vH

    image résultat du produit de convolution entre masque h=[-1 0 1] et image filtrée avec c++:http://cjoint.com/?fzlKMVYkT4

    image résultat du produit de convolution entre masque verticale V et l'image filtrée avec c++:http://cjoint.com/?fzlL0ZOmvN

    ma question pourquoi les images obtenue avec c++ sont noir par rapport a celle avec matlab. normalement ils doivent donnée le même résultat.

    est ce qu'il y a une faute dans ma code.

    s'ils vous plait qcq peut m'aider.

    Merci d'avance.

    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
    92
    93
    94
    95
    96
    97
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 
    //*** programme :
    // ecrit le: 24/05/2010
    // par:Aydi walid
    // encadré par:Mrs : Nouri Masmoudi et Lotfi Kamoun
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    #include <cv.h>
    #include <highgui.h>
    #include <cvaux.h>
    #include <stdio.h>
    int main()
    {	
     
       // Initialisations
     
       // image de base, et sa version « niveaux de gris »
     
       IplImage* img;
     
       //chrgement image jpeg
     
       img= cvLoadImage( "image_filtré.jpg");									
     
       //teste si image est chargée
     
       if(img==NULL) printf("Impossible de charger le fichier image: \n");  
     
       //cvGetSize(img) ou cvSize(640,480)  ** IPL_DEPTH_8U means an  8-bit unsigned image ** 1 means grayscale image
     
       IplImage* img_nvg  ;
     
     
        //creation d'une image 
     
       img_nvg   = cvCreateImage( cvGetSize(img),IPL_DEPTH_8U,1);   
     
     
       // creation du gradient horz et vert
     
       IplImage* gradienthorz   = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U,1);   
       IplImage* gradientvert   = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U,1);   
     
       // Masques de convolution ** allocation de matrice "cvCreateMat"
     
       CvMat* masquehorz  = cvCreateMat( 1, 3, CV_32FC1);
       CvMat* masquevert  = cvCreateMat( 3, 1, CV_32FC1);
     
     
      //|  0  -1 1| gradient Horizontale
        cvSetReal2D(masquehorz, 0,0, 0);
        cvSetReal2D(masquehorz, 0,1,-1);
        cvSetReal2D(masquehorz, 0,2, 1);
     
      //|  0 |		gradient verticale
      //| -1 |
      //|  1 |
        cvSetReal2D(masquevert, 0,0, 0 );
        cvSetReal2D(masquevert, 1,0,-1);
        cvSetReal2D(masquevert, 2,0, 1);
     
        //cvConvert(img,img_nvg);
     
        // Convolution
     
        cvFilter2D( img_nvg,gradienthorz,masquehorz );
        cvFilter2D( img_nvg,gradientvert,masquevert);
     
     
        // Affichage
    	//cvNamedWindow("originale",CV_WINDOW_AUTOSIZE );
     
    	cvNamedWindow("originale",CV_WINDOW_AUTOSIZE);
        cvNamedWindow( "gradient_horizontale",CV_WINDOW_AUTOSIZE);
        cvNamedWindow( "gradient_verticale", CV_WINDOW_AUTOSIZE );
     
    	cvShowImage( "originale",img );
        cvShowImage( "gradient_horizontale",gradienthorz );
        cvShowImage( "gradient_verticale", gradientvert );
        cvSaveImage("gradienthorz.jpg",gradienthorz);
        cvSaveImage("gradientvert.jpg",gradientvert);
     
        cvWaitKey(0);
     
        // Destruction des fenêtres
        cvDestroyAllWindows();
     
        // Libération de la mémoire
        cvReleaseImage( &gradienthorz);
        cvReleaseImage( &gradientvert);
        cvReleaseMat( &masquehorz);
        cvReleaseMat( &masquevert);
        cvReleaseImage( &img_nvg);
     
        return 0;
    }
    Images attachées Images attachées     

Discussions similaires

  1. calcul de gradient entre deux images
    Par enita dans le forum Images
    Réponses: 5
    Dernier message: 28/05/2013, 13h14
  2. Implémenter sobel et calculer son gradient
    Par Goffer dans le forum Traitement d'images
    Réponses: 34
    Dernier message: 17/05/2010, 01h55
  3. Comment optimiser le calcul du gradient d'une image dans matlab
    Par MPEG4 dans le forum Traitement d'images
    Réponses: 19
    Dernier message: 28/04/2009, 18h36
  4. calculer le gradient d'un polynome avec matlab
    Par wajdiisi2007 dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/01/2009, 22h34

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