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

Algorithmes et structures de données Discussion :

[C / API32 ] Algorithme d'indexation des couleurs


Sujet :

Algorithmes et structures de données

  1. #1
    elf
    elf est déconnecté
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut [C / API32 ] Algorithme d'indexation des couleurs
    Bonjour à tous,

    ( Je code en C++, et j'utilise l'API32 de Windows ).

    Je suis en quête d'un algorithme d'indexation de couleurs, l'objectif de mon programme étant de créer des fichiers GIF en fonction de fichiers BMP.

    Le principe d'indexation de couleurs permet de réduire la taille du fichier final, les pixels tirant leur couleur de la table d'indexation ( éventuellement placée dans l'en-tête du fichier ).
    Pour que l'indexation soit de bonne qualité, on aura mis au point, en amont, un système faisant la moyenne des couleurs présentes dans le BMP ( comment on peut envisager la chose ? ) et les indexant ( mais là je suis perdu ! ).

    ---
    Structure ( grossière ) d'un fichier GIF :
    [ Informations sur l'image ( dimensions, etc. ) ]
    [ Table d'indexation ( 256 couleurs codées sur 3 octets ) ]
    [ Ensemble des pixels, tous codés sur 1 octet, celui-ci définissant la couleur à appeler dans la table ( valeur maximale d'un octet : 255 soit au maximum 256 appels ) ]
    ---

    Mon rogramme traîte un fichier BMP d'où il tire les pixels de couleurs, mais tout devient autrement plus compliqué quand il s'agit d'indexer ces couleurs. A mon niveau, le procédé de compression est au point ( l'algo. LZW est utilisé ), ce qui me pose un réel soucis, c'est de mettre au point l'Algo. d'indexation.

    Mes recherches sur le sujet ont abouti à des codes écrits en MFC, autant dire que je n'en ai absolument rien compris ( Est-ce que les MFC découlent vraiment du C ? ). Comme il s'agit pour moi de bien comprendre les choses, je ne veux absolument pas me servir de librairies prévues à cet effet ou autres fonctions préconçues dans ce but.

    Alors à votre avis, quelle est la voie à suivre quant à l'élaboration d'un tel code ?

    Un grand merci, et un bonjour de Tahiti (d'où je vis ) !

  2. #2
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut Re: [C / API32 ] Algorithme d'indexation des couleurs
    Tout dépend de ce que tu as comme bitmap en entrée (24 bpp, 16 bpp, 8bpp ) ?
    moi ce que je te conseille c'est de passer ta bitmap RGB (24 bpp) en BitField (16 bpp ou 15bpp).
    Pour les bitmaps en 8bpp elles sont déjà indexées, il suffit de récupérer la palette.

    pour passer en BitField regarde ce lien.

    http://www.developpez.net/forums/vie...color&start=70

    Le passage en BitField te permet d'économiser beaucoup de couleurs.

    Ensuite tu parcours les pixels et tu vérifie si il existe dans la palette, sinon tu l'ajoute

    Citation Envoyé par elf
    ...
    Un grand merci, et un bonjour de Tahiti (d'où je vis ) !
    il y'en as qui ont de la chance quand-même...

  3. #3
    elf
    elf est déconnecté
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut Re: [C / API32 ] Algorithme d'indexation des couleurs
    Citation Envoyé par matazz
    Tout dépend de ce que tu as comme bitmap en entrée (24 bpp, 16 bpp, 8bpp ) ?
    C'est une info. que j'ai pas eu l'intelligence de préciser, je vais donc remédier à ça : je travaille sur des Bitmaps 24 bpp (donc non indexées).

    Citation Envoyé par matazz
    moi ce que je te conseille c'est de passer ta bitmap RGB (24 bpp) en BitField (16 bpp ou 15bpp).
    Merci du conseil, c'est une notion que je vais étudier mais il s'agit ici d'encoder des fichiers GIF.

    NB J'ai quand meme trouvé ta suggestion très intéressante.

    Citation Envoyé par matazz
    il y'en as qui ont de la chance quand-même...
    Tôt ou tard il faut faire le grand saut 8)

    Merci Matazz pour ta réponse.

  4. #4
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut Re: [C / API32 ] Algorithme d'indexation des couleurs
    Citation Envoyé par elf
    Citation Envoyé par matazz
    moi ce que je te conseille c'est de passer ta bitmap RGB (24 bpp) en BitField (16 bpp ou 15bpp).
    Merci du conseil, c'est une notion que je vais étudier mais il s'agit ici d'encoder des fichiers GIF.

    ...
    Oui, mais le passage en BitField te permet de passer de 16777216 (256^3) de couelurs possibles à 32768 (15^3) couleurs sans vraiment modifier l'aspect. De plus ta palette pour ton gif est plus facile à créer car tu as écrété pas mal de couleurs.

  5. #5
    elf
    elf est déconnecté
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut Re: [C / API32 ] Algorithme d'indexation des couleurs
    Citation Envoyé par matazz
    Oui, mais le passage en BitField te permet de passer de 16777216 (256^3) de couelurs possibles à 32768 (15^3) couleurs sans vraiment modifier l'aspect. De plus ta palette pour ton gif est plus facile à créer car tu as écrété pas mal de couleurs.
    Je crois que tu es dans le vrai, je vais suivre ton conseil.
    ( Est-ce que je pourrais éventuellement avoir une avant-première du résultat obtenu après application de cette méthode ? )

    Je ne voudrais pas paraitre indélicat mais je pense qu'un système d'indexation peut encore être intéressant ( non ? ).

  6. #6
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut Re: [C / API32 ] Algorithme d'indexation des couleurs
    Citation Envoyé par elf
    ...
    ( Est-ce que je pourrais éventuellement avoir une avant-première du résultat obtenu après application de cette méthode ? )
    Tu veus deux image comparatives ?

    Citation Envoyé par elf
    ...
    Je ne voudrais pas paraitre indélicat mais je pense qu'un système d'indexation peut encore être intéressant ( non ? ).
    Bien sur, c'est d'ailleurs pour ça que le gif l'utilise.
    Il me semble cependant que tu n'as droit qu'a 256 couleurs pour une palette GIF (Je me trompe peut-être), donc le passage en Bitfield c'était juste un moyen de supprimer des couleurs...

  7. #7
    elf
    elf est déconnecté
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Je peux éventuellement créé une palette de couleurs standard grâce ta méthode, je suppose que cette derniere devrait être beaucoup plus précise qu'une autre codée sur 32 bits.

    J'ai, par ailleurs, trouvé un code interessant sur Internet ( c'est par ici : http://www.codeproject.com/bitmap/cquantizer.asp ), néanmoins il aspire à une utilisation sous MFC et est couplé à la librairie CXimage. Je ne suis pas sûr qu'elle soit transposable en API32.

Discussions similaires

  1. Algorithm correction des couleurs (balance des blancs et autre)
    Par immuno dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 19/12/2008, 23h26
  2. VBA Index des couleurs
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/10/2008, 18h42
  3. Des couleurs en mode console
    Par davcha dans le forum MFC
    Réponses: 3
    Dernier message: 08/05/2004, 15h37
  4. [Debutant] gestion des couleurs ??
    Par MaxiMax dans le forum OpenGL
    Réponses: 5
    Dernier message: 26/03/2004, 09h34
  5. pb pour modifier la luminositée des couleurs
    Par mathieutlse dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 15h45

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