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

Traitement d'images Discussion :

accés au pixels d'une image


Sujet :

Traitement d'images

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    bonjour
    je suis entrain de terminer un projet sur la détection des plaques d'immatriculation
    je suis arrivée à détecter les plaques , à installer un OCR dans mon application mais le problème est que pour avoir tous chiffres de mes plaques je dois segmenter l'image de la plaque en chiffres,en effet l'image principale à été transformée en niveau de gris puis j'ai détecté la plaque et j'ai transformé l'image résultat en binaire noir et blanc comme suit (cpy c'est l'image de la matricule)
    Code C : 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
     
    int width2 = cpy -> width;  
    int height2 = cpy-> height;
     
    int step  = cpy->widthStep;
    int channels  = cpy->nChannels;
    char * data  = cpy->imageData;
    for(int i=0;i<height2;i++)
      for(int j=0;j<width2;j++)
        for(int k=0;k<channels;k++)
         { 
           if(data[i*step+j*channels+k]<20)
             data[i*step+j*channels+k]=255;	
           else
             data[i*step+j*channels+k]=0;
         }
    puis j'ai essayer de faire une fonction qui me permettra de réaliser la segmentation
    Code C : 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
     
    int sommecolonne(j,IplImage* image)
    {
      int som = 0;// elle va prendre la somme des valeurs des pixels d'une colonne 
     
      for (int i=0;i<image->width;j++){
        for(int k=0;k<image->channels;k++)
        {
          som=som+data[i*step+j*channels+k];
        }
      }
      return(som)
    }
     
    int minimum( int *t, n)
    // si la colonne à la somme la plus faible alors c'est une ligne qui sépare deux //chiffres 
    {
      int min=t[0];
      for(int i=0;i<n;i++){
        if(t[i]<min)
          min=t[i];
      }
      return(min)
    }
     
    void segmentation()
    {
      IplImage* cpy = image->détection matricule();
      int width = cpy -> width;  
      int height = cpy-> height;
      int step      = cpy->widthStep;
      int channels  = cpy->nChannels;
      char * data  = cpy->imageData;
      int *t;
      for(int j=0;j<width;j++)
      {
        t[j]=sommecolonne(j,cpy);
      }
     
      for(int j=0;j<width;j++)
      {
        if(t[i]<minimum( t, width)
          cvLine(cpy, cvPoint(j ,0), cvPoint(j,height), cvScalar(255,0,0,0), 8,1);
      }
     
      IplImage* resize =  cvCreateImage(cvSize(250,50),IPL_DEPTH_8U ,0);
      cvResize(  cpy, resize,1);
      cvNamedWindow( "segmentation",1);
      cvShowImage("segmentation", resize);
    }

    le problème c'est ça ne marche pas sur mes plaques et qu'il ne prend pas la valeur width et height comme longueur et largeur de l'image
    j'avoue que je ne comprends pas ou je me plante
    alors si quelqu'un peut m'aider ,ça serait géniale

    rebonjour j'ai oublié de préciser que la plaque est une image en fond noir et les chiffre en blanc
    merci

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (t[i]<minimum( t, width)) ...
    j'avoue que j'ai du mal à comprendre l'objectif de ce test.

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    salut
    voilà le principe est le suivant
    si je considère mon image comme la matrice suivante

    T=
    1 1 1 1 1 1 1 1 1 1
    1 0 0 1 1 1 0 0 1 1
    1 0 0 0 1 1 0 0 0 1
    1 1 0 0 1 1 1 0 0 1
    1 1 1 1 1 1 0 0 1 1

    Som=5 3 2 2 5 3 2 2 4 5

    Dans le vecteur Som, on somme les cases de la même colonneLe tableau initial T est divisible en 2 tableaux T1(1..5) et T2(5..10) suivant ici maximum du tableau Som qui est la 5ème colonne car j'ai considéré que les pixels en noir val= 1




    T1=

    1 1 1 1
    1 0 0 1
    1 0 0 0
    1 1 0 0


    T2=


    1 1 1 1
    1 0 0 1
    1 0 0 0
    1 1 0 0

    puisque mes images sont de fond noir donc un pixel vaut 0
    donc la colonne doit être un minimum pour tracer la ligne

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Je connais déjà le principe de la segmentation des histrogrammes.

    Ce que je ne comprend pas c'est le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int j=0;j<width;j++)
      {
        if(t[i]<minimum( t, width)) ...
    tu cherches un t[i] qui soit strictement inferieur au minimum des valeurs de t[]. A priori c'est impossible d'avoir un élément strictement inferieur au minimum de l'ensemble des éléments, non ?

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Je connais déjà le principe de la segmentation des histrogrammes.

    Ce que je ne comprend pas c'est le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int j=0;j<width;j++)
      {
        if(t[i]<minimum( t, width)) ...
    tu cherches un t[i] qui soit strictement inferieur au minimum des valeurs de t[]. A priori c'est impossible d'avoir un élément strictement inferieur au minimum de l'ensemble des éléments, non ?
    je suis désolée mais , une faute de frappe

    c'est t[j]==minimum( t, width))

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par amira2007 Voir le message
    je suis désolée mais , une faute de frappe

    c'est t[j]==minimum( t, width))
    ah, ok. Et dans ce cas ça te trace tes lignes ?

  7. #7
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    ah, ok. Et dans ce cas ça te trace tes lignes ?
    salut malheureusement non je ne sais pas ou est le problème
    elle ,ne trace rien de tout et en plus elle ,ne considère pas width and height comme la longueur et la hauteur de l'image !!!!!!!

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par amira2007 Voir le message
    salut malheureusement non je ne sais pas ou est le problème
    elle ,ne trace rien de tout et en plus elle ,ne considère pas width and height comme la longueur et la hauteur de l'image !!!!!!!
    Ça m'a plus l'air d'un problème d'utilisation de OpenCv que d'un problème d'algorithmique.

  9. #9
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Ça m'a plus l'air d'un problème d'utilisation de OpenCv que d'un problème d'algorithmique.
    donc à votre avis , il n'ya pas de fautes dans le programme , sinon est ce que vous pouvez me proposez une autre démarche?

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/03/2011, 17h35
  2. Accès aux pixels d'une Image
    Par PerpetualSnow dans le forum Silverlight
    Réponses: 3
    Dernier message: 10/11/2008, 18h39
  3. diffusion des pixels d'une image
    Par hagui dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 11/05/2006, 18h31
  4. acces aux pixels d'une image
    Par bassidi meryeme dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/10/2005, 11h20
  5. Réponses: 1
    Dernier message: 26/03/2005, 12h31

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