Rechercher : dans
Par :

Compression d'une image par Huffman

Dernière réponse le 24 avr 2009 à 11:07:45 succedere, le 24 avr 2009 à 09:13:25 
 Signaler ce message aux modérateurs

Bonjour à tous !

Je me suis récemment intéressé à la compression des fichiers par la méthode Huffman.
J'ai lu beaucoup de pages web l'expliquant et j'ai très bien compris comment il fonctionne.

En revanche, beaucoup s'amusent à l'utiliser pour compresser un fichier texte (par exemple créer l'arbre avec "Comment Ca Marche"), ce qui est facile. Mais cet algorithme est aussi utilisé, par exemple, dans le format TIFF en tant qu'algorithme de compression sans perte.
Mais comment utiliser cet algorithme pour une image, comme il a été utilisé pour TIFF ?

Doit-on passer par le code binaire de l'image (ce qui, à mon sens, ne sert à rien, puisque le code binaire serait déjà le plus court possible ?)

J'ai fait une petite recherche sur Google et sur les forums de CCM sans trouver de solution. Si la réponse existe déjà quelque part, n'hésitez pas à me faire un lien !

Je vous remercie pour votre aide ! :)

Configuration: Mac OS X
Firefox 3.0.9

Meilleures réponses pour « Compression d'une image par Huffman » dans :
Diminuer la taille d'une image VoirSi vous trouvez que vos photos sont trop grosses ou trop lourdes (par exemple pour envoyer par mail ou pour publier sur une page web), voici 4 étapes pour diminuer la taille des fichiers: Étape 1 (optionnel !) : Passer GREYCStoration sur...
Création d'image Système (Ghost) VoirCréer une image (ghost) de partition 1 - Intérêt 2 - Pré-requis 2.1 - Explication 2.2 - Opportunités des partitions 2.3 - Mise à jour des images 2.3.1 - Image incrémentale : intéressant mais dangereux ! 2.3.2 - Image incrémentale et...
[PDF] Convertir des PDF en images (JPEG, BMP, GIF, etc...) VoirSi vous avez des documents PDF et que vous voulez les convertir en images (JPEG, GIF, BMP, ou n'importe quel format), de manière à les exploiter, par exemple dans un logiciel d'OCR ou de retouche/création d'images : Note : Cet article présente une...
Télécharger Image Resizer VoirPetit utilitaire (PowerToy) basique, très simple, permettant de réduire la taille d'une image, dans le but, notamment, de l'envoyer par e-mail ou de la partager sur Internet (blog, site, album...). Pour plus d'informations: image resizer reduire la...
Compression vidéo (codecs) VoirNotion de codec Une image d'une vidéo non compressée occupe une taille d'environ 1 Mo. Afin d'obtenir une vidéo paraissant fluide il est nécessaire d'avoir une fréquence d'au moins 25 ou 30 images par seconde, ce qui produit un flux de données...
Compression JPEG VoirLa compression JPEG L'acronyme JPEG (Joint Photographic Expert Group prononcez jipègue ou en anglais djaypègue) provient de la réunion en 1982 d'un groupe d'experts de la photographie, dont le principal souci était de travailler sur les façons de...
Fichier ISO (Image ISO) VoirFormat ISO Un fichier possédant l'extension .ISO est une image ISO, c'est-à-dire une image d'un disque (CD, DVD ou disque dur) sous forme de fichier, créer avec un logiciel de gravure. Comment lire un fichier ISO ? En l'absence de graveur, il...

1

luc648, le 24 avr 2009 à 09:47:51

Salut ,

avec les caractères tu cherche le nombre d'occurrence de chaque caractère (nombre de fois qu'il est utilisé dans ton code).Le but est de donner la plus petite valeur binaire a ton caractère le plus utilisé.
Sur une image , je pense que le choix ce fait au niveau du pixel , le pixel le plus utilisé reçoit la plus petite valeur binaire.

L'histoire est écrite par les vainqueurs ... 
Les logiciels, c'est comme le sexe: c'est pas parceque c'est­ payant que c'est meilleur

Répondre à luc648

2

succedere, le 24 avr 2009 à 10:05:23

Merci de ta réponse Luc !

Je vois très bien !
Par contre, cela signifie qu'il faut conserver l'arbre de chaque fichier si l'on veut les décompresser.

Y'a-t-il vraiment moins de poids en bits à enregistrer tous les arbres pour chaque fichier et diminuer leur code binaire ?

Merci

Répondre à succedere

3

luc648, le 24 avr 2009 à 10:18:26

Je n'ai pas vraiment compris ta question : Y'a-t-il vraiment moins de poids en bits à enregistrer tous les arbres pour chaque fichier et diminuer leur code binaire ?
L'histoire est écrite par les vainqueurs ... 
Les logiciels, c'est comme le sexe: c'est pas parceque c'est­ payant que c'est meilleur

Répondre à luc648

4

succedere, le 24 avr 2009 à 10:24:02

^^ je m'explique un peu plus

Si par exemple j'ai 3 fichiers (images) à compresser sur un serveur.
Je veux que chaque fichier ait moins de poids.

En utilisant l'arbre de Huffman, je dois, pour chaque fichier, lire l'image, créer l'arbre, puis convertir le code binaire en un nouveau code binaire.
J'aurai donc enregistré 3 arbres (pour pouvoir décompresser mes fichiers), et les 3 nouveaux codes binaires à la place des codes binaires d'origine.

Ma question est donc est-ce que :
3 arbres de Huffman + 3 nouveaux codes binaires < 3 codes binaires d'origine ?

En gros : est-ce que ça compresse efficacement si on enregistre les arbres, et que ça prend forcément de la place...

:) Merci

Répondre à succedere

5

luc648, le 24 avr 2009 à 11:02:32

Ok c'est donc bien ce que j'avais compris ,

franchement je n'ai jamais appliqué les codages comme huffman ou fano-shannon , mes connaissances ne sont que théorique :s (malheureusement).

<quote>
Cette relation, qui montre que le codage de Huffman s'approche effectivement de l'entropie de la source et donc de l'optimum, peut s'avérer en fait assez peu intéressante dans le cas où l'entropie de la source est faible, et où un surcoût de 1 bit devient important. De plus le codage de Huffman impose d'utiliser un nombre entier de bit pour un symbole source, ce qui peut s'avérer peu efficace. WIKIPEDIA
</quote>

Donc le codage huffman n'est intéressant qu'a partir du moment ou tes fichiers on une certaine taille , en pratique je ne pourrais te dire a partir de qu'elle taille , il est plus intéressant d'avoir les arbres + nouveaux code a la place de l'ancien code .

Néanmoin pour te donner une idée

<quote>
pour coder 'Wikipédia', nous obtenons donc en binaire : 101 11 011 11 100 010 001 11 000, soit 24 bits au lieu de 64 en utilisant les codes ASCII.
</quote>

La compression est donc assez importante , néanmoins si tu veux compresser un monochrome ne t'attend pas a des miracles ^^

L'histoire est écrite par les vainqueurs ... 
Les logiciels, c'est comme le sexe: c'est pas parceque c'est payant que c'est meilleur

Répondre à luc648

6

 succedere, le 24 avr 2009 à 11:07:45

^^
En cas d'image monochrome, j'utiliserai l'algorithme RLE : Run-Length Encoding ^^ ;)

Merci de ton aide Luc

Je ferai des essais :)

Répondre à succedere