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

C++Builder Discussion :

application d'image en builder c++


Sujet :

C++Builder

  1. #1
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut application d'image en builder c++
    bonjour,je suis d�butant en builder c++ , je veux savoir comment faire la lecteur d'une image et l'affichage c-a-d (l'affichage de l'image original et l'image r�sultat) .merci

  2. #2
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par d�faut
    Image ? BMP ? JPEG ?
    Composant TImage, TBitmap, TPicture, TCanvas

    Voir l'exemple FishFactory fourni dans les D�mos du RAD Studio !


    Bonne Lecture !
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    merci,mon probl�me maintenant c'est la t�l�chargement des images .tif et .jpg
    avec le code suivant je peux t�l�charg� que les images format bmp!

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if (OpenPictureDialog1->Execute())
      Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);

  4. #4
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par d�faut
    t�l�chargement ???
    tu veux dire chargement !
    LoadFromFile g�re un syst�me de fichier windows (local ou r�seau), on ne peut pas parler de t�l�chargement comme avec des protocoles FTP ou HTTP !

    Pour le TPicture, il g�re plusieurs formats nativement mais cela d�pend de la version de C++Builder
    A partir de 2009, le TIFF doit �tre g�r�, ainsi que le JPEG

    En C++Builder 6, tu peux utiliser le TJPEGImage, tu as plein d'exemple d'utilisation
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    plut�t chargement merci bien

  6. #6
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    comment appliqu� cette programme sur une image sous builder c++.
    je suis d�butant en builder et c'est premier fois que j'utilise builder en traitement d'image aide moi svp.

    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
     
    /* otsu_th.c */
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include "mypgm.h"
     
    void otsu_th( )
         /* binarization by Otsu's method 
    	based on maximization of inter-class variance */
     
    {
      int hist[GRAYLEVEL];
      double prob[GRAYLEVEL], omega[GRAYLEVEL]; /* prob of graylevels */
      double myu[GRAYLEVEL];   /* mean value for separation */
      double max_sigma, sigma[GRAYLEVEL]; /* inter-class variance */
      int i, x, y; /* Loop variable */
      int threshold; /* threshold for binarization */
     
      printf("Otsu's binarization process starts now.\n");
     
      /* Histogram generation */
      for (i = 0; i < GRAYLEVEL; i++) hist[i] = 0;
      for (y = 0; y < y_size1; y++)
        for (x = 0; x < x_size1; x++) {
          hist[image1[y][x]]++;
        }
      /* calculation of probability density */
      for ( i = 0; i < GRAYLEVEL; i ++ ) {
        prob[i] = (double)hist[i] / (x_size1 * y_size1);
      }
     
      /* omega & myu generation */
      omega[0] = prob[0];
      myu[0] = 0.0;       /* 0.0 times prob[0] equals zero */
      for (i = 1; i < GRAYLEVEL; i++) {
        omega[i] = omega[i-1] + prob[i];
        myu[i] = myu[i-1] + i*prob[i];
      }
     
      /* sigma maximization
         sigma stands for inter-class variance 
         and determines optimal threshold value */
      threshold = 0;
      max_sigma = 0.0;
      for (i = 0; i < GRAYLEVEL-1; i++) {
        if (omega[i] != 0.0 && omega[i] != 1.0)
          sigma[i] = pow(myu[GRAYLEVEL-1]*omega[i] - myu[i], 2) / 
    	(omega[i]*(1.0 - omega[i]));
        else
          sigma[i] = 0.0;
        if (sigma[i] > max_sigma) {
          max_sigma = sigma[i];
          threshold = i;
        }
      }
     
      printf("\nthreshold value = %d\n", threshold);
     
      /* binarization output into image2 */
      x_size2 = x_size1;
      y_size2 = y_size1;
      for (y = 0; y < y_size2; y++)
        for (x = 0; x < x_size2; x++)
          if (image1[y][x] > threshold)
    	image2[y][x] = MAX_BRIGHTNESS;
          else
    	image2[y][x] = 0;
     
    }
     
     
    main( )
    {
      load_image_data( ); /* input image1 */
      otsu_th( );         /* Otsu's binarization method is applied */
      save_image_data( ); /* output image2 */
      return 0;
    }

  7. #7
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par d�faut
    @Hanou,

    C'est quoi la probl�matiaque au juste? passer de RGV vers niveaux de gris? de plus je te conseil d'utiliser les librairies du traitement d'image c'est plus facile et surtout plus optimis�.

    Expliques la probl�matique, puis on verra



    Citation Envoy� par hanou88 Voir le message
    comment appliqu� cette programme sur une image sous builder c++.
    je suis d�butant en builder et c'est premier fois que j'utilise builder en traitement d'image aide moi svp.

    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
     
    /* otsu_th.c */
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include "mypgm.h"
     
    void otsu_th( )
         /* binarization by Otsu's method 
    	based on maximization of inter-class variance */
     
    {
      int hist[GRAYLEVEL];
      double prob[GRAYLEVEL], omega[GRAYLEVEL]; /* prob of graylevels */
      double myu[GRAYLEVEL];   /* mean value for separation */
      double max_sigma, sigma[GRAYLEVEL]; /* inter-class variance */
      int i, x, y; /* Loop variable */
      int threshold; /* threshold for binarization */
     
      printf("Otsu's binarization process starts now.\n");
     
      /* Histogram generation */
      for (i = 0; i < GRAYLEVEL; i++) hist[i] = 0;
      for (y = 0; y < y_size1; y++)
        for (x = 0; x < x_size1; x++) {
          hist[image1[y][x]]++;
        }
      /* calculation of probability density */
      for ( i = 0; i < GRAYLEVEL; i ++ ) {
        prob[i] = (double)hist[i] / (x_size1 * y_size1);
      }
     
      /* omega & myu generation */
      omega[0] = prob[0];
      myu[0] = 0.0;       /* 0.0 times prob[0] equals zero */
      for (i = 1; i < GRAYLEVEL; i++) {
        omega[i] = omega[i-1] + prob[i];
        myu[i] = myu[i-1] + i*prob[i];
      }
     
      /* sigma maximization
         sigma stands for inter-class variance 
         and determines optimal threshold value */
      threshold = 0;
      max_sigma = 0.0;
      for (i = 0; i < GRAYLEVEL-1; i++) {
        if (omega[i] != 0.0 && omega[i] != 1.0)
          sigma[i] = pow(myu[GRAYLEVEL-1]*omega[i] - myu[i], 2) / 
    	(omega[i]*(1.0 - omega[i]));
        else
          sigma[i] = 0.0;
        if (sigma[i] > max_sigma) {
          max_sigma = sigma[i];
          threshold = i;
        }
      }
     
      printf("\nthreshold value = %d\n", threshold);
     
      /* binarization output into image2 */
      x_size2 = x_size1;
      y_size2 = y_size1;
      for (y = 0; y < y_size2; y++)
        for (x = 0; x < x_size2; x++)
          if (image1[y][x] > threshold)
    	image2[y][x] = MAX_BRIGHTNESS;
          else
    	image2[y][x] = 0;
     
    }
     
     
    main( )
    {
      load_image_data( ); /* input image1 */
      otsu_th( );         /* Otsu's binarization method is applied */
      save_image_data( ); /* output image2 */
      return 0;
    }

  8. #8
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    Citation Envoy� par dz_robotix Voir le message
    @Hanou,

    C'est quoi la probl�matiaque au juste? passer de RGV vers niveaux de gris? de plus je te conseil d'utiliser les librairies du traitement d'image c'est plus facile et surtout plus optimis�.

    Expliques la probl�matique, puis on verra
    salut, le probl�me la binarisation d'une image.
    le programme en c comment je peut l'utulis� en builder c++

  9. #9
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    je veux convertir l'image original au image binaire avec builder c++et bien sur l'affichage de r�sultat sur une fen�tre, et limage original dans une autre fen�tre .

  10. #10
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par d�faut
    Citation Envoy� par hanou88 Voir le message
    je veux convertir l'image original au image binaire avec builder c++et bien sur l'affichage de r�sultat sur une fen�tre, et limage original dans une autre fen�tre .

    D'accord,
    et bien c'est facile de le faire sans pour autant passer par des trucs complexes...
    pour binariser une image t'aurad besoin d'un seuil (threshold), tu parcour la matrice de ton image pixel par pixel, et tu teste: si la valeur rgb est supperieur � se threshold alors tu poses: valeur_pixel(i,j)=1, else valeur_pixel(i,j)=0.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    int Threshold=50; // exemple de seuil, a toi de voir pour cette valeur....
    for(int i=0;i<Bitmap->Height ; i++)
    for(int j=0;j<Bitmap->Width;j++)
    {{
    if(Image->Canvas->Pixels[i][j]>= Threshold)Image->Canvas->Pixels[i][j]=1;
    else Image->Canvas->Pixels[i][j]=0;
    }}
     
    //----fin binarisation
    //sinon pour l'affichage sur la 2° fenêtre c'est facile aussi, il suffit de de sauvegarder l'image binariser et la réouvrire dans la nouvelle fenetre ou de nommer un autre objet image dynamique...

  11. #11
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    oh c'est tout! je pensais que builder comme le c 100%
    est ce que tu a un document sur la programmation de builder c++ dans le traitement d'image?svp aidez moi.
    j'ai comme un projet de fin d'�tude identification par empreinte digitals avec builder c++ et je suis perdu.

  12. #12
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par d�faut
    T'auras pas besoin de Builder pour faire le traitement d'image mais plutot des librairies comme ImageMAgick ou Opencv. C'est plus facile.

    et ce que t'as essay� l'exemple de binarisation?
    Sinon concernant la reconnaissance d'empreinte, c'est le mod�l statistique qui se fait deri�re qui doit �tre pr�parer car l'�tape de binarisation doit �tre fait a priori, pour que le mod�l � HMM ou r�seaux de neuronnes re�oit l'image binari�e pour la traiter....

    Par contre, je croyait les images des empreintes sont d�ja binaris�es? je me trompe?


    Citation Envoy� par hanou88 Voir le message
    oh c'est tout! je pensais que builder comme le c 100%
    est ce que tu a un document sur la programmation de builder c++ dans le traitement d'image?svp aidez moi.
    j'ai comme un projet de fin d'�tude identification par empreinte digitals avec builder c++ et je suis perdu.

  13. #13
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    Citation Envoy� par dz_robotix Voir le message
    T'auras pas besoin de Builder pour faire le traitement d'image mais plutot des librairies comme ImageMAgick ou Opencv. C'est plus facile.

    et ce que t'as essay� l'exemple de binarisation?
    Sinon concernant la reconnaissance d'empreinte, c'est le mod�l statistique qui se fait deri�re qui doit �tre pr�parer car l'�tape de binarisation doit �tre fait a priori, pour que le mod�l � HMM ou r�seaux de neuronnes re�oit l'image binari�e pour la traiter....

    Par contre, je croyait les images des empreintes sont d�ja binaris�es? je me trompe?
    oui j'ai essay� il y a des erreurs

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    [C++ Warning] Unit1.cpp(36): W8004 'Threshold' is assigned a value that is never used
    [C++ Error] Unit1.cpp(32): E2451 Undefined symbol 'Image'
    [C++ Error] Unit1.cpp(29): E2451 Undefined symbol 'Bitmap'
    je travail avec les algorithmes g�n�tique je ne travail pas avec les r�seau de neurone .
    l'image d'empreinte en niveau de gris.

  14. #14
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par d�faut
    Bien sur, je l'ai fait � titre illustratif;

    Poses un objet TImage sur ta forme, et essayes se code la

    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
    	TPicture * pict = new TPicture;
    	Graphics::TBitmap *bmpPicture = new Graphics::TBitmap;
     
    	bmpPicture->LoadFromFile(L"C:\\f.bmp");
    	pict->Bitmap = bmpPicture;
     
    	Image1->Picture = pict;
            Image1->Width=pct->Bitmap->Width;
            Image1->Height=pct->Bitmap->Height;
     
    int Threshold=240*240*240; // exemple de seuil, a toi de voir pour cette valeur....
    for(int i=0;i<Image1->Height; i++)
    for(int j=0;j<Image1->Width;j++)
    {{
    if(Image1->Canvas->Pixels[i][j]>= Threshold)Image1->Canvas->Pixels[i][j]=255*255*255;
    else Image1->Canvas->Pixels[i][j]=0;
    }}

    Remarque: c'est un petit exemple, � toi de voir concernant le threshold ou le type du canal utilis� si c'est RGB, sinon si c'est niveau de gris, le threshold doit �tre entre zero et 255....




    Citation Envoy� par hanou88 Voir le message
    oui j'ai essay� il y a des erreurs

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    [C++ Warning] Unit1.cpp(36): W8004 'Threshold' is assigned a value that is never used
    [C++ Error] Unit1.cpp(32): E2451 Undefined symbol 'Image'
    [C++ Error] Unit1.cpp(29): E2451 Undefined symbol 'Bitmap'
    je travail avec les algorithmes g�n�tique je ne travail pas avec les r�seau de neurone .
    l'image d'empreinte en niveau de gris.

  15. #15
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    Merci bien pour tes efforts,il y a erreur aussi!
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    [C++ Error] Unit1.cpp(35): E2451 Undefined symbol 'pct'
    [C++ Warning] Unit1.cpp(42): W8018 Assigning int to TColor
    [C++ Warning] Unit1.cpp(43): W8018 Assigning int to TColor

  16. #16
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par d�faut
    Remplacer par pict


    Citation Envoy� par hanou88 Voir le message
    Merci bien pour tes efforts,il y a erreur aussi!
    [C++ Error] Unit1.cpp(35): E2451 Undefined symbol 'pct'
    [C++ Warning] Unit1.cpp(42): W8018 Assigning int to TColor
    [C++ Warning] Unit1.cpp(43): W8018 Assigning int to TColor

  17. #17
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    merci bien , il reste maintenant l'affichage de r�sultat , d�sol� j'ai pos� beaucoup des questions peut �tre b�tes , merci encore pour tes �ffort

  18. #18
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par d�faut
    Il me semble que la binarisation se fait directement sur Image1, sinon je te conseil de travailler avec la librairie Opencv c'est plus facile.




    Citation Envoy� par hanou88 Voir le message
    merci bien , il reste maintenant l'affichage de r�sultat , d�sol� j'ai pos� beaucoup des questions peut �tre b�tes , merci encore pour tes �ffort

  19. #19
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    ok merci beaucoup

  20. #20
    Membre �clair�
    Inscrit en
    Novembre 2008
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par d�faut
    @dz_robotix
    comment utiliser la biblioth�que opencv et comment l'int�grer et builder ?

Discussions similaires

  1. r�aliser une application client/serveur c++ builder
    Par Nabster dans le forum C++Builder
    R�ponses: 6
    Dernier message: 17/04/2010, 00h16
  2. Faire une application multilangage avec C++Builder
    Par pottiez dans le forum C++Builder
    R�ponses: 5
    Dernier message: 03/09/2009, 20h52
  3. probleme d'image dans builder
    Par aboishak dans le forum C++Builder
    R�ponses: 3
    Dernier message: 23/10/2008, 11h05
  4. zoomer et agrandir image en builder
    Par iamhere dans le forum C++Builder
    R�ponses: 6
    Dernier message: 27/07/2006, 10h02
  5. traitement d'image sous builder
    Par renovator dans le forum C++Builder
    R�ponses: 2
    Dernier message: 07/07/2006, 14h47

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