Comment fonctionne la compression HEIC : guide technique
Comprendre la technologie de compression HEIC, notamment le codage intra-trame HEVC, les blocs de transformation, la quantification, et pourquoi les fichiers sont 50 % plus petits que le JPEG.
La compression HEIC utilise le codage intra-trame HEVC pour obtenir des fichiers 50 % plus petits que le JPEG à qualité visuelle équivalente. Le pipeline de compression traite les images à travers des unités d'arbre de codage, la prédiction, le codage par transformation, la quantification et le codage entropique. Chaque étape est plus avancée que son équivalent JPEG.
Ce guide détaille chaque étape du pipeline de compression HEIC. Il explique les mécanismes techniques spécifiques qui rendent le HEIC deux fois plus efficace que le JPEG, un format conçu il y a plus de 30 ans.
HEVC : le codec derrière le HEIC
Le HEIC est un format conteneur défini par le standard HEIF (High Efficiency Image Format). Le travail de compression proprement dit est effectué par le HEVC, également connu sous le nom de H.265. Le HEVC a été développé conjointement par l'ITU-T et l'ISO/IEC et finalisé en 2013. Il a été initialement conçu pour la compression vidéo, où il a remplacé le H.264/AVC.
Pour les images fixes, le HEVC n'utilise que son mode de codage intra-trame. Les codecs vidéo compressent les séquences en exploitant les similitudes entre les trames consécutives (prédiction inter-trame). Les images fixes n'ont pas de trames voisines. Le mode intra-trame du HEVC compresse chaque image indépendamment, en exploitant uniquement la redondance spatiale au sein d'une seule trame.
Apple a adopté le codage intra-trame HEVC pour les photos iPhone à partir d'iOS 11 en 2017. La puce A11 Bionic et tous les processeurs Apple suivants intègrent du matériel dédié à l'encodage et au décodage HEVC. Cette accélération matérielle rend la compression HEIC suffisamment rapide pour capturer des rafales de photos sans latence.
Unités d'arbre de codage : la base
Le JPEG divise les images en blocs fixes de 8x8 pixels appelés macroblocs. Le HEVC remplace cette structure rigide par des unités d'arbre de codage (CTU) allant de 8x8 à 64x64 pixels. Ce partitionnement flexible des blocs est le facteur qui contribue le plus à l'avantage de compression du HEIC.
Fonctionnement des CTU
L'encodeur commence par diviser l'image en une grille de CTU. Chaque CTU fait 64x64 pixels au maximum. L'encodeur subdivise ensuite récursivement chaque CTU en unités de codage (CU) plus petites, selon une structure en quadtree. Un CTU de 64x64 se divise en quatre CU de 32x32. Chaque CU de 32x32 se divise en quatre CU de 16x16. La subdivision continue jusqu'à un minimum de 8x8 pixels.
L'encodeur choisit la profondeur de division en fonction du contenu de l'image. Les zones plates et uniformes comme un ciel dégagé utilisent de grands blocs de 64x64, car il y a peu de détails à encoder. Les zones riches en détails comme le feuillage ou le texte utilisent des blocs plus petits de 8x8 ou 16x16 pour capturer les structures fines avec précision.
Pourquoi les blocs plus grands sont importants
Les blocs plus grands réduisent la surcharge. Chaque frontière de bloc nécessite des bits d'en-tête pour le mode de prédiction, les vecteurs de mouvement et les coefficients de transformation. Un seul bloc de 64x64 possède un jeu de données d'en-tête couvrant 4 096 pixels. La zone équivalente en JPEG nécessite 64 blocs distincts de 8x8, chacun avec son propre en-tête. Cela représente 64 jeux de données de surcharge pour la même surface de pixels. Dans les régions lisses, les économies de surcharge seules comptent pour une réduction significative de la taille des fichiers.
Les macroblocs JPEG en comparaison
Le JPEG utilise une structure fixe à deux niveaux. L'image est divisée en macroblocs de 16x16. Chaque macrobloc contient quatre blocs DCT de 8x8 pour la luminance et deux blocs de 8x8 pour la chrominance (avec sous-échantillonnage 4:2:0). Il n'y a pas de subdivision adaptative. Un morceau de ciel bleu reçoit le même traitement en blocs de 8x8 qu'un morceau de texture complexe. Cette rigidité gaspille des bits sur les régions simples et limite la précision dans les régions complexes.
Modes de prédiction
Avant le codage par transformation, l'encodeur prédit les valeurs de pixels de chaque bloc en utilisant les pixels voisins déjà encodés. L'encodeur ne stocke que le résidu -- la différence entre la prédiction et les pixels réels. De meilleures prédictions produisent des résidus plus petits, qui se compriment en moins de bits.
HEVC : 35 modes de prédiction intra
Le HEVC offre 35 modes distincts de prédiction intra pour chaque unité de codage :
- Mode planaire (mode 0) : génère une surface lisse ajustée aux pixels de bordure supérieure et gauche du bloc. Il excelle dans les gradients progressifs, comme les arrière-plans flous et les régions de ciel.
- Mode DC (mode 1) : remplit le bloc entier avec une seule valeur -- la moyenne des pixels de bordure supérieure et gauche. Il gère les zones plates et uniformes avec un résidu minimal.
- 33 modes angulaires (modes 2-34) : projettent les pixels de bordure à des angles spécifiques vers l'intérieur du bloc. Les 33 angles s'étendent du quasi-horizontal au quasi-vertical par intervalles d'environ 5,6 degrés. Un mode angulaire correspondant à un bord diagonal, comme une ligne de toit à 45 degrés, produit des résidus quasi nuls le long de ce bord.
L'encodeur teste chacun des 35 modes et sélectionne celui qui produit le plus petit résidu. Pour un bloc contenant un bord diagonal prononcé, un mode angulaire aligné sur ce bord est choisi. Pour un gradient lisse, le mode planaire l'emporte. Pour une région uniforme, le mode DC est sélectionné.
JPEG : 9 options de prédiction
La spécification de base du JPEG n'a aucune prédiction spatiale. La DCT opère directement sur les valeurs brutes des pixels. Le mode sans perte du JPEG définit un schéma de prédiction simple avec seulement 7 prédicteurs basés sur les pixels adjacents. Même le JPEG 2000, la variante JPEG la plus avancée, n'offre que 9 modes de prédiction. L'écart entre 9 et 35 est considérable. Plus d'options de prédiction signifie de meilleures correspondances avec le contenu réel des images, donc des résidus plus petits et des fichiers plus petits.
Codage par transformation
Après la prédiction, l'encodeur transforme les données résiduelles du domaine spatial vers le domaine fréquentiel. Cette étape concentre l'énergie de l'image dans un petit nombre de coefficients, rendant la quantification et le codage entropique plus efficaces.
Blocs de transformation HEVC
Le HEVC utilise la transformée en cosinus discrète (DCT) et la transformée en sinus discrète (DST) sur des unités de transformation (TU) allant de 4x4 à 32x32 pixels. La DST 4x4 est utilisée spécifiquement pour les blocs luma à prédiction intra, où elle offre une meilleure compaction d'énergie que la DCT. Les blocs plus grands utilisent la DCT.
La taille de la transformation est choisie indépendamment de la taille de l'unité de codage. Un CU de 32x32 peut utiliser une seule transformation de 32x32 ou être divisé en quatre transformations de 16x16. Cette flexibilité permet à l'encodeur d'adapter la taille de la transformation au contenu fréquentiel local. Les régions basse fréquence utilisent de grandes transformations pour une meilleure compaction d'énergie. Les régions haute fréquence utilisent des transformations plus petites pour éviter les artefacts de sonnerie.
Blocs de transformation JPEG
Le JPEG utilise une DCT fixe de 8x8 pour chaque bloc sans exception. Il n'y a pas d'option DST, pas de flexibilité de taille et pas d'adaptation au contenu local. La taille de 8x8 est un compromis : trop petite pour une compaction d'énergie optimale dans les zones lisses, adéquate mais non idéale pour les zones texturées. Cette approche universelle est une limitation fondamentale du standard JPEG.
Quantification
La quantification est l'étape avec perte. L'encodeur divise chaque coefficient de transformation par un paramètre de quantification (QP), en arrondissant le résultat à un entier. Des diviseurs plus grands produisent des entiers plus petits (plus de compression, plus de perte de qualité). Des diviseurs plus petits préservent plus de précision (moins de compression, moins de perte de qualité).
Quantification HEVC
Le HEVC utilise une plage de QP de 0 à 51. Le pas de quantification double pour chaque augmentation de 6 du QP. À QP 0, la quantification est négligeable. À QP 51, la quantification est agressive. L'encodage HEIC par défaut d'Apple pour les photos iPhone utilise un QP dans la plage de 22 à 28, selon la complexité de la scène. Cette plage atteint une réduction de taille d'environ 50 % par rapport au JPEG à qualité visuelle équivalente.
Le HEVC prend également en charge la quantification adaptative au sein d'une même trame. L'encodeur attribue des valeurs de QP différentes à différents CTU en fonction de l'importance visuelle. Les régions à haute sensibilité perceptive, comme les visages, reçoivent des valeurs de QP plus faibles (qualité supérieure). Les arrière-plans plats reçoivent des valeurs de QP plus élevées (plus de compression). Cette adaptation spatiale alloue les bits là où l'oeil humain est le plus sensible.
Quantification JPEG
Le JPEG utilise une matrice de quantification fixe de 8x8. Le standard JPEG inclut deux matrices par défaut : une pour la luminance et une pour la chrominance. Le curseur de qualité dans les éditeurs d'images met à l'échelle ces matrices uniformément. Un réglage de qualité à 75 % multiplie chaque entrée de la matrice par le même facteur. Il n'y a pas d'adaptation par bloc, pas d'allocation de bits tenant compte du contenu et pas de variation spatiale au sein d'une même image.
Codage entropique : CABAC contre Huffman
La dernière étape de compression convertit les coefficients quantifiés en un flux de bits compact. C'est une étape sans perte -- aucune information n'est perdue pendant le codage entropique. L'efficacité du codeur entropique détermine la compacité des données.
Le HEVC utilise CABAC
Le HEVC utilise le codage arithmétique binaire adaptatif au contexte (CABAC). CABAC convertit chaque élément de syntaxe en une séquence de décisions binaires. Chaque décision binaire est codée à l'aide d'un codeur arithmétique qui adapte son modèle de probabilité en fonction du contexte -- les valeurs des éléments voisins précédemment codés.
CABAC atteint une compression quasi optimale théorique. Il adapte ses estimations de probabilité en continu, de sorte que les symboles localement fréquents utilisent moins de bits. Pour un contenu photographique typique, CABAC produit un flux de bits 5 à 15 % plus petit que le codage de Huffman sur les mêmes données quantifiées.
Le JPEG utilise le codage de Huffman
Le JPEG de base utilise le codage de Huffman, une méthode de codage entropique plus simple définie en 1952. Le codage de Huffman attribue des mots-codes de longueur fixe basés sur les fréquences globales des symboles dans l'ensemble de l'image. Il ne s'adapte pas aux motifs locaux. Un symbole globalement rare mais localement fréquent reçoit quand même un long mot-code. Le JPEG supporte le codage arithmétique en option, mais pratiquement aucun logiciel ne l'active en raison de préoccupations liées aux brevets et d'un support limité des décodeurs.
HEIC contre JPEG : comparaison des caractéristiques de compression
| Caractéristique | HEIC (HEVC) | JPEG | | --- | --- | --- | | Plage de taille des blocs | 8x8 à 64x64 (adaptatif) | Fixe 8x8 | | Partitionnement des blocs | Quadtree récursif | Grille fixe | | Modes de prédiction intra | 35 (planaire + DC + 33 angulaires) | Aucun (base) ou 9 (sans perte) | | Types de transformation | DCT + DST | DCT uniquement | | Tailles de transformation | 4x4, 8x8, 16x16, 32x32 | Fixe 8x8 | | Quantification | Adaptative par CTU, QP 0-51 | Matrice fixe, mise à l'échelle uniforme | | Codage entropique | CABAC (arithmétique adaptatif) | Huffman (mots-codes fixes) | | Profondeur de couleur | Jusqu'à 16 bits par canal | 8 bits par canal | | Mode avec perte | Oui | Oui | | Mode sans perte | Oui | Limité (rarement utilisé) | | Photo typique de 12 Mpx | ~1,8 Mo | ~3,5 Mo | | Avantage de taux de compression | Référence | ~50 % plus volumineux à qualité égale |
Pourquoi le HEIC atteint des fichiers 50 % plus petits
L'avantage de 50 % en taille ne provient pas d'une seule caractéristique. C'est le résultat cumulé d'améliorations à chaque étape du pipeline. Chaque amélioration contribue à une portion mesurable :
- Les blocs adaptatifs plus grands économisent 10 à 15 % de surcharge. Encoder une région de ciel lisse comme un seul bloc de 64x64 au lieu de soixante-quatre blocs de 8x8 élimine 63 jeux de données d'en-tête de bloc.
- Les 35 modes de prédiction économisent 15 à 20 % d'énergie résiduelle. La prédiction angulaire alignée sur les bords, combinée aux modes planaire et DC pour les zones plates, produit des prédictions plus précises que l'approche DCT brute du JPEG.
- Les tailles de transformation flexibles économisent 5 à 10 %. Adapter la taille de la transformation au contenu local améliore la compaction d'énergie. Les grandes transformations compressent efficacement le contenu basse fréquence. Les petites transformations gèrent les bords haute fréquence sans effet de sonnerie.
- La quantification adaptative économise 5 à 10 %. Allouer plus de bits aux régions perceptuellement importantes et moins de bits aux arrière-plans produit une meilleure qualité subjective au même débit total.
- CABAC économise 5 à 15 % par rapport à Huffman. Le codage arithmétique adaptatif au contexte comprime le flux de bits final de manière plus compacte que les tables Huffman fixes.
Combinés, ces gains se cumulent. Une économie de 15 % à l'étape de prédiction signifie que moins de bits résiduels entrent dans l'étape de transformation, ce qui signifie que moins de coefficients survivent à la quantification, ce qui signifie que CABAC a moins de données à encoder. Les effets du pipeline se multiplient.
Compression HEIC avec et sans perte
Le HEIC prend en charge les deux modes de compression : avec perte et sans perte. La différence réside dans l'étape de quantification.
Mode avec perte
La compression avec perte fixe le QP au-dessus de 0, introduisant une erreur de quantification. C'est le mode par défaut pour toutes les photos iPhone. L'encodeur d'Apple équilibre la qualité par rapport à la taille du fichier, visant une plage de QP qui produit des fichiers environ 50 % plus petits que le JPEG équivalent. À ce réglage, l'erreur de quantification est inférieure au seuil de perception visuelle humaine dans des conditions de visualisation normales.
Mode sans perte
La compression sans perte fixe le QP à 0 et utilise un chemin de codage spécial qui préserve chaque valeur d'échantillon exactement. Les étapes de prédiction, transformation et codage entropique fonctionnent toujours, mais la quantification n'introduit aucune erreur. Les fichiers HEIC sans perte sont plus volumineux que les fichiers avec perte -- généralement 2 à 3 fois la taille du HEIC avec perte -- mais restent 20 à 30 % plus petits que le PNG sans perte pour du contenu photographique. Les économies proviennent de la prédiction et du codage entropique supérieurs du HEVC.
Apple n'utilise pas le mode sans perte pour les photos iPhone standard. Les images ProRAW sur les modèles iPhone Pro utilisent un pipeline différent (format DNG). Le HEIC sans perte est principalement utilisé dans les flux de travail d'imagerie professionnelle où la préservation exacte des échantillons est requise.
Décodage : comment les images HEIC sont affichées
Le décodage inverse le pipeline de compression. Le décodeur lit le flux de bits codé en CABAC, reconstruit les coefficients quantifiés, applique la transformation inverse, ajoute la prédiction et produit les valeurs de pixels. Les appareils Apple modernes effectuent cela par matériel. La puce A11 et les suivantes intègrent un décodeur HEVC dédié qui traite une image de 12 Mpx en moins de 50 millisecondes.
Le décodage logiciel est plus lent mais largement disponible. Des bibliothèques comme libheif et libde265 décodent le HEIC sur toute plateforme. HEICify utilise libheif-js pour décoder les fichiers HEIC directement dans le navigateur via WebAssembly, sans aucun traitement côté serveur. Les pixels décodés sont ensuite réencodés en JPEG ou PNG pour une compatibilité universelle.
Implications pratiques
Comprendre la compression HEIC explique plusieurs comportements pratiques.
La qualité HEIC se dégrade progressivement. Parce que le HEVC adapte la taille des blocs et la quantification au contenu local, l'augmentation de la compression affecte d'abord les arrière-plans plats et préserve plus longtemps les bords et les textures. Le JPEG se dégrade uniformément, produisant des artefacts de blocage visibles sur l'ensemble de l'image à des réglages de qualité inférieurs.
Le réencodage du HEIC en JPEG perd en efficacité. Convertir une photo HEIC de 1,8 Mo en JPEG à qualité visuelle équivalente produit un fichier de 3,5 Mo. L'encodeur JPEG ne peut pas reproduire la structure de blocs adaptative du HEVC, sa prédiction supérieure ni l'efficacité du CABAC. La même information visuelle nécessite simplement plus d'octets avec l'algorithme plus ancien du JPEG.
Les allers-retours sans perte au sein du HEIC préservent parfaitement la qualité. Décoder et réencoder un fichier HEIC sans perte produit une sortie identique bit à bit. Ce n'est pas le cas du JPEG, où chaque cycle d'encodage-décodage introduit une erreur de quantification supplémentaire.
Pour convertir des fichiers HEIC en formats largement compatibles, le convertisseur HEIC vers JPG de HEICify et le convertisseur HEIC vers PNG traitent tout localement dans votre navigateur. La conversion décode les données compressées en HEVC et les réencode dans le format de sortie choisi avec un contrôle total de la qualité.
Questions fréquentes
Quel algorithme de compression le HEIC utilise-t-il ?
Le HEIC utilise la compression intra-trame HEVC (H.265) avec des unités d'arbre de codage, un codage par transformation et un codage arithmétique binaire adaptatif au contexte (CABAC). Le HEVC a été finalisé en 2013 par l'ITU-T et l'ISO/IEC. Il applique uniquement le sous-ensemble de codage intra-trame pour les images fixes, utilisant la prédiction spatiale au sein d'une seule trame plutôt que la prédiction temporelle entre les trames vidéo.
Pourquoi les fichiers HEIC sont-ils plus petits que les JPEG ?
Le HEIC atteint des fichiers 50 % plus petits grâce à des améliorations à chaque étape de la compression. Des blocs de codage plus grands (64x64 contre 8x8) réduisent la surcharge. Plus de modes de prédiction (35 contre 0 dans le JPEG de base) produisent des résidus plus petits. Des tailles de transformation flexibles (4x4 à 32x32 contre 8x8 fixe) améliorent la compaction d'énergie. La quantification adaptative alloue les bits en fonction de l'importance visuelle. Le codage entropique CABAC comprime le flux de bits 5 à 15 % plus efficacement que le codage de Huffman.
La compression HEIC est-elle avec ou sans perte ?
Le HEIC prend en charge la compression avec et sans perte. Apple utilise la compression avec perte par défaut pour les photos iPhone, atteignant une réduction de taille d'environ 50 % par rapport au JPEG. Le mode sans perte préserve chaque valeur de pixel exactement mais produit des fichiers 2 à 3 fois plus volumineux que le HEIC avec perte. Le HEIC sans perte est toujours 20 à 30 % plus petit que le PNG sans perte pour les photographies, grâce à la prédiction et au codage entropique supérieurs du HEVC.
La compression HEIC affecte-t-elle la qualité d'image ?
À taille de fichier équivalente, le HEIC produit une qualité visiblement supérieure au JPEG. Les 35 modes de prédiction intra génèrent des prédictions plus précises, laissant des résidus plus petits. La quantification adaptative préserve la qualité dans les régions perceptuellement importantes. Le résultat est des bords plus nets, des gradients plus lisses et moins d'artefacts de blocage par rapport au JPEG au même débit. Aux réglages de qualité par défaut d'Apple, les artefacts de compression HEIC sont inférieurs au seuil de perception humaine pour une visualisation standard.
Pour un aperçu plus large du format HEIC, lisez Qu'est-ce que le format HEIC ?. Pour comprendre comment le HEIC se rapporte à son standard parent, voir HEIF vs HEIC. Pour une comparaison pratique des caractéristiques HEIC et JPEG, consultez HEIC vs JPG.
Frequently Asked Questions
Quel algorithme de compression le HEIC utilise-t-il ?
Pourquoi les fichiers HEIC sont-ils plus petits que les JPEG ?
La compression HEIC est-elle avec ou sans perte ?
La compression HEIC affecte-t-elle la qualité d'image ?
Related Guides
La conversion HEIC vers JPG entraine-t-elle une perte de qualite ?
Comprenez exactement quelle quantite de qualite est perdue lors de la conversion HEIC vers JPG, ce qui cause cette perte, comment la minimiser et quand cela compte pour vos photos.
Couleur HEIC 10 bits vs 8 bits : ce que cela signifie pour vos photos
Découvrez la différence entre la profondeur de couleur 10 bits et 8 bits dans les fichiers HEIC, son impact sur la qualité photo, et ce qui se passe lors de la conversion vers des formats 8 bits comme le JPEG.
HEIC vs JPG : quel format devriez-vous utiliser ?
Une comparaison détaillée des formats d'image HEIC et JPG couvrant la compression, la qualité, la taille des fichiers, la compatibilité et les fonctionnalités pour vous aider à choisir le bon format.
HEIF vs HEIC : quelle est la difference ?
Comprendre la relation entre les formats de fichier HEIF et HEIC -- ce que chaque abbreviation signifie, comment ils sont lies techniquement et pourquoi la distinction est importante.
Qu'est-ce que le format HEIC ? Tout ce que vous devez savoir
Découvrez ce qu'est le HEIC, pourquoi Apple l'utilise, comment il se compare au JPG, et les moyens les plus simples d'ouvrir ou de convertir des fichiers HEIC sur n'importe quel appareil.
Ready to Convert Your Images?
Try our free, browser-based converter tools. No uploads required -- your files never leave your device.