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 :

compression d'images


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut compression d'images
    bonjour everybody
    voila je suis étudiante et j'ai un projet à réaliser; je veux compresser des images médicales par ondelettes, j'ai utilisé les filtres de daubechies,mon problème est que j'ai obtenu des valeurs négatives.je ne sais pas comment dois je les quantifier.
    une autre question:
    je veux comprendre comment le composant Image fonctionne,est ce que quant j'affecte des valeurs négatives à sa propriété Canvas->Pixels elles seront modifiées?.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Image1->Height=256;
    Image1->Width=256;
    for (i=0;i<256;i++)
      for (j=0;j<256;j++)
      {
        Image1->Canvas->Pixels[j][i] =RGB(traitee [i][j], traitee [i][j],traitee [i][j]);
      }

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    si tu affecte un -1 à la propriété canvas->pixels cela signifira pour le canvas que ton image n'est pas définit en ce pixel, c'est a dire en gros que l'image et plus petite que la longueur entre le premier pixel et celui-ci, je ne sait pas si tu m'a très bien compris mais on, j'essayerai de faire mieux la prochaine fois.
    Sinon pour le composant image l'aide de c++ builder explique tres bien sont fonctionnement ( en tout cas pour ma part je le trouve ) en gros il faut utilisé cette méthode pour afficher dynamiquement une image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monComposantImage->Picture->LoadFromFile("chemin complet de mon image") ;
    Voila
    A plus

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Par contre si tu fais de lourds traitements utiliser la propriété Canvas->Pixels n'est pas une chose à faire : c'est très très lent !

    Deux solutions :
    • soit tu te crées une classe qui représente une image (et donc tu pourrais y gérer les valeurs négatives comme tu l'entends) et une fois tous les traitements effectués tu recopies vers un TCanvas pour l'affichage
    • soit tu travailles toujours sur l'image mais à la place de Pixels tu utilises la propriété ScanLine qui n'est disponible QUE dans un TBitmap : elle te renvoie un pointeur sur une ligne de l'image. Pour remplir par exemple une image entièrement en noir cela donnerais :
    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
     
    TImage *mon_image;
    RGBTRIPLE *pixels;
    int x, y;
     
    // Faut d'abord s'assurer qu'on est bien un 24 bits par pixel
    mon_image->Bitmap->PixelFormat = pf24bit;  // pf24bit ou pf24bits je sais plus
     
    for (y=0;y < mon_image->Bitmap->Height; ++y)
    {
       pixels = mon_image->Bitmap->Scanline[y];
     
       for (x=0; x < mon_image->Bitmap->Width;++x)
       {
               // On défini les trois composantes de l'image
          pixels[x].rgbtRed = 0;
          pixels[x].rgbtGreen = 0;
          pixels[x].rgbtBlue = 0;
       }
    }

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Par défaut
    Bonjour;

    je travaille sur le meme sujet et je ne pense pas que les valeurs negatives crees des problemes pour la quantification, car il suffit d'utiliser les valeurs absolues.
    en plus meme les valeurs qui persiste apres quantification vont disparaitre lorseque vous calculez la transforme inverse (de daubechies).

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Dans le code :

    Image1->Canvas->Pixels[j][i] = RGB(traitee [i][j], traitee [i][j],traitee [i][j]
    Correspond à un pallier de gris (composantes Red, Green et Blue identiques),
    et c'est sans doute le traitement recherché (?... ici je ne sais pas).

    Si traitee[i][j] contient -1 (donc on peut sans doute supposer int traitee[..][..])
    alors sa valeur est 0xFFFFFFFF

    Comme la macro RGB utilse le type Byte (unsigned char), c'est l'octet de poids faible
    du int qui est pris en compte (indépendamment du signe), donc ici sa valeur vaut 0xFF.

    La macro RGB renvoie alors 0x00FFFFFF ce qui correspond au blanc (clWhite).

    Si on convertit en valeur absolue (-1 devient 1), on obtiendrait 0x00010101 ce qui,
    en niveau de gris n'est pas loin du clBlack (0x00000000)

    Donc bien réfléchir sur la manière d'utiliser ce nombre négatif !

    A plus !

  6. #6
    Membre averti
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut merci
    je vous remercie de m'avoir répondu

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

Discussions similaires

  1. probleme : compression d'image (pgm)
    Par Micks71 dans le forum C
    Réponses: 3
    Dernier message: 05/05/2006, 12h32
  2. Compresser des images PPM
    Par babar56 dans le forum C
    Réponses: 6
    Dernier message: 18/04/2006, 11h41
  3. compression d'image au format .tif
    Par sasaki dans le forum ASP
    Réponses: 2
    Dernier message: 09/08/2005, 09h39
  4. Réponses: 4
    Dernier message: 03/08/2005, 09h47
  5. [Image][Débutant]Compression d'images JPG en Java ?
    Par joe.satriani dans le forum 2D
    Réponses: 3
    Dernier message: 30/01/2005, 16h34

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