{"id":128,"date":"2020-12-03T23:17:11","date_gmt":"2020-12-03T23:17:11","guid":{"rendered":"http:\/\/med-space.org\/youssef-zaz-master\/?page_id=128"},"modified":"2020-12-13T18:12:21","modified_gmt":"2020-12-13T18:12:21","slug":"compression","status":"publish","type":"page","link":"https:\/\/yzaz.net\/master\/compression\/","title":{"rendered":"Compression des images"},"content":{"rendered":"<p>Dans la compression sans perte, on r\u00e9duit la taille sans alt\u00e9rer le contenu. Le principe est d&#8217;utiliser la redondance de l\u2019information (r\u00e9p\u00e9titions). Elle a comme avantage la r\u00e9versibilit\u00e9.<br \/>\n<strong>Exemples<\/strong> : RLE,VCL,LZW (zip)&#8230;<\/p>\n<p>Dans la compression avec perte, r\u00e9duit fortement la taille au detriment d\u2019une perte d\u2019information. Le principe est d&#8217;enlever les informations les moins importantes. Inconv\u00e9nient majeur est la non r\u00e9versible (artefacts lors de la d\u00e9compression)<\/p>\n<p><strong>Exemples<\/strong> : JPEG, JPEG2000, PNG&#8230;<\/p>\n<h3>Codage RLE<\/h3>\n<p>RLE ou <em>Codage Run Length Encoding<\/em> est un algorithme de compression sans perte. il est utilis\u00e9 dans les formats BMP, TIFF. l&#8217;id\u00e9e est de regrouper les plages de valeurs identiques.<\/p>\n<p>Exemple:<\/p>\n<p>AAAAARRRRRROLLLBBTTTTT : 22 caract\u00e8res<br \/>\n5A6R1O3L2B5T : 12 caract\u00e8res Taux = 45%<br \/>\nEn pratique : format binaire, par exemple 1 octet pour le compteur puis un octet pour la valeur.<br \/>\nL\u2019octet 0 peut servir de caract\u00e8re sp\u00e9cial pour introduire par exemple une suite de donn\u00e9es non compress\u00e9es.<\/p>\n<p><strong>Codage d\u2019Huffman<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-409 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman1.jpg\" alt=\"\" width=\"289\" height=\"286\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-410 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman2.jpg\" alt=\"\" width=\"208\" height=\"275\" \/><\/td>\n<\/tr>\n<tr>\n<td>Dans cet exemple, il y a 36 bloques de 2&#215;2 bits, au total 144 bits.<\/td>\n<td>On commence par le calcul des fr\u00e9quences d\u2019apparition des blocs<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>On trie les boques par fr\u00e9quence d\u2019apparition :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-412 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman3-300x64.jpg\" alt=\"\" width=\"300\" height=\"64\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman3-300x64.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman3.jpg 459w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>On met les deux plus faibles \u00e9l\u00e9ments dans les branches et on cr\u00e9e ainsi le n\u0153ud parent avec une fr\u00e9quence qui est la somme des deux fr\u00e9quences des deux faibles \u00e9l\u00e9ments.<\/p>\n<p>Les deux \u00e9l\u00e9ments sont enlev\u00e9s de la liste et le nouveau n\u0153ud Parent (avec une fr\u00e9quence \u00e9gale \u00e0 9) est ins\u00e9r\u00e9 dans la liste. On obtient alors la liste suivante, tri\u00e9e par fr\u00e9quence :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-413 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman4-300x126.jpg\" alt=\"\" width=\"300\" height=\"126\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman4-300x126.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman4.jpg 402w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Le m\u00eame principe est r\u00e9utilis\u00e9, en combinant les deux \u00e9l\u00e9ments les plus faibles. Le r\u00e9sultat est le suivant:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-414 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman5-300x258.jpg\" alt=\"\" width=\"300\" height=\"258\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman5-300x258.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman5.jpg 369w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>On continu avec la m\u00eame proc\u00e9dure jusqu&#8217;\u00e0 ce qu&#8217;il reste un seul \u00e9l\u00e9ment dans la liste \u00e0 gauche.<\/p>\n<p>Pour g\u00e9n\u00e9rer le code d\u2019Hoffman, on parcoure l&#8217;arbre \u00e0 la valeur qu\u2019on veut, on met un 0 \u00e0 chaque fois qu\u2019on emprunte une branche de gauche et un 1 pour une branche de droite.<\/p>\n<table style=\"height: 300px;\" width=\"853\">\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-415 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman6-300x294.jpg\" alt=\"\" width=\"300\" height=\"294\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman6-300x294.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman6.jpg 347w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-416 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman7-300x257.jpg\" alt=\"\" width=\"300\" height=\"257\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman7-300x257.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman7.jpg 369w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Le resultat est le suivant:<\/p>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-409 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman1.jpg\" alt=\"\" width=\"289\" height=\"286\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-415 aligncenter\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman6-300x294.jpg\" alt=\"\" width=\"300\" height=\"294\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman6-300x294.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman6.jpg 347w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-419\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Huffman8-300x298.jpg\" alt=\"\" width=\"300\" height=\"298\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman8-300x298.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman8-150x150.jpg 150w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Huffman8.jpg 311w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center;\">Les codes des \u00e9l\u00e9ments les plus probables sont plus courts que ceux des \u00e9l\u00e9ments les moins probables.<\/p>\n<p><strong>Algorithme JPEG<\/strong><\/p>\n<p>JPEG : un algorithme de compression avec perte<br \/>\nOn veut supprimer de l\u2019information sans perdre des informations importantes<br \/>\nVision humaine :<br \/>\nl\u2019oeil est plus sensible \u00e0 la luminance (intensit\u00e9) qu\u2019aux nuances de couleur.<br \/>\nl\u2019oeil humain est plus sensible aux basses fr\u00e9quences<br \/>\nConclusion :<br \/>\non r\u00e9duit la partie de codage consacr\u00e9e aux nuances de couleur on supprime en priorit\u00e9 les hautes fr\u00e9quences d\u2019une image<\/p>\n<p>Chaque image est d\u00e9compos\u00e9e en blocs de taille 8 x 8.<br \/>\nChaque matrice 8 x 8 est transform\u00e9e en une autre matrice par la DCT (Discrete Cosinus Transform).<br \/>\nOn obtient une nouvelle matrice de m\u00eame taille, \u00e0 valeurs r\u00e9elles, qui contient la m\u00eame information que la matrice de d\u00e9part.<br \/>\nLes hautes fr\u00e9quences correspondent aux coefficients en bas \u00e0 droite de la matrice DCT.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-420 size-full\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Jpeg1.jpg\" alt=\"\" width=\"892\" height=\"167\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg1.jpg 892w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg1-300x56.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg1-768x144.jpg 768w\" sizes=\"(max-width: 892px) 100vw, 892px\" \/><\/p>\n<p>On divise terme \u00e0 terme la matrice DCT par une matrice de quantification pr\u00e9d\u00e9finie.<br \/>\nOn conserve l\u2019arrondi de la division, souvent nul pour une valeur de MQ \u00e9lev\u00e9e.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-421 size-full\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Jpeg2.jpg\" alt=\"\" width=\"860\" height=\"327\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg2.jpg 860w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg2-300x114.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg2-768x292.jpg 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/p>\n<p>On transforme chaque matrice en vecteur :<br \/>\n\u2022 Lecture en Zig\u2010Zag<br \/>\n\u2022 Permet d\u2019obtenir de longues plages de 0<br \/>\n\u2022 Les vecteurs sont compress\u00e9s par un codage sans perte, RLE pour les plages de 0 puis Huffman<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-422 size-full\" src=\"http:\/\/med-space.org\/youssef-zaz-master\/wp-content\/uploads\/2020\/12\/Jpeg7.jpg\" alt=\"\" width=\"860\" height=\"327\" srcset=\"https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg7.jpg 860w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg7-300x114.jpg 300w, https:\/\/yzaz.net\/master\/wp-content\/uploads\/2020\/12\/Jpeg7-768x292.jpg 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Dans la compression sans perte, on r\u00e9duit la taille sans alt\u00e9rer le contenu. Le principe est d&#8217;utiliser la redondance de l\u2019information (r\u00e9p\u00e9titions). Elle a comme <a class=\"mh-excerpt-more\" href=\"https:\/\/yzaz.net\/master\/compression\/\" title=\"Compression des images\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":35,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/yzaz.net\/master\/wp-json\/wp\/v2\/pages\/128"}],"collection":[{"href":"https:\/\/yzaz.net\/master\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/yzaz.net\/master\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/yzaz.net\/master\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yzaz.net\/master\/wp-json\/wp\/v2\/comments?post=128"}],"version-history":[{"count":33,"href":"https:\/\/yzaz.net\/master\/wp-json\/wp\/v2\/pages\/128\/revisions"}],"predecessor-version":[{"id":464,"href":"https:\/\/yzaz.net\/master\/wp-json\/wp\/v2\/pages\/128\/revisions\/464"}],"wp:attachment":[{"href":"https:\/\/yzaz.net\/master\/wp-json\/wp\/v2\/media?parent=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}