• [^] # Re: Rappel qui s'impose sur GIF,PNG et JPEG

    Posté par . En réponse à la dépêche Apres GIF, le JPEG. Évalué à 10.

    ou la la ! excuse moi, mais c'est pas ca du tout pour le jpeg. (le reste me parrait bien)

    Le JPG lui est très différent et beaucoup plus complexe. Pas besoin de palette. Pourquoi ? Parce qu'on n'essaye pas de restituer l'image "pixel par pixel", mais "carré par carré".

    effectivement on code l'image par paquet de 8x8 informations par plan de couleur (sachant qu'on peut faire du monochrome a partir d'images 8bpp ou de la couleur avec des 24bpp)

    Une image JPEG est l'addition d'une multitudes de carrés. Le cas typique c'est un visage : avec un gros carré rose pale au milieu, et une dizaine de petits carrés rose plus foncé au tour, hop on a une joue !

    11 éléments = une joue. Alors qu'il aurait fallu plusieurs centaines d'éléments pour faire une joue si l'élément est le pixel.


    pas du tout. tu décris (avec tes mots :-), une compression par fractales.

    En fait, l'algo c'est plutot :

    pour chaque carre de chaque composante :
    on le passe dans le domaine de fourrier. Puis on divise chaque element par une valeur entiere (l'ensemble des diviseurs s'appelle la table de quantification). Bon. on est dans le domaine de fourrier, ok ? donc le but c'est d'associer aux hautes frequences un coefficient de quantification eleve, (ils contiennent moins d'informations perceptibles a l'oeil) -> les hautes frequence a 0.

    Tout ca pour maximiser le nombre de zeros dans notre carre 8x8. ensuite pour le stocker ce petit carre, on le parcours en zig-zag pour avoir tous les coeff de haute frequence ensemble (tous les zeros ensembles). et on compresse avec un algo type huffman.

    voila ! je suis d'accord c'est moins sexy que ton explication. mais c'est un peu plus "juste"

    en resume : on stocke que les basses frequences dans chaque carre 8x8.

    pour ceux que ca interesse le facteur de compression du jpeg est une coef que l'on multiplie a la table de quantification. c'est pour cela que quand il est au max, t'as pas de variation de couleur dans ton carre (toutes les frequences/variations sont nulles)