{"id":3169,"date":"2015-12-05T18:57:19","date_gmt":"2015-12-05T17:57:19","guid":{"rendered":"http:\/\/www.avex-asso.org\/dossiers\/wordpress\/?page_id=3169"},"modified":"2016-07-11T11:10:05","modified_gmt":"2016-07-11T09:10:05","slug":"les-algorithmes-de-transformation","status":"publish","type":"page","link":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation","title":{"rendered":"Les algorithmes de transformation"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-black ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Les_Algorithmes_de_transformations_dimages\" >Les Algorithmes de transformations d&rsquo;images<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#1_Quest_quune_transformations_dimage\" >1. Qu&rsquo;est qu&rsquo;une transformations d&rsquo;image ?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#2_2_grandes_familles_dinterpolations\" >2. 2 grandes familles d&rsquo;interpolations<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Ici_avec_lalgorithme_%C2%AB_proche_voisin_%C2%BB\" >Ici avec l\u2019algorithme \u00ab\u00a0proche voisin\u00a0\u00bb<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Interpolation_bilineaire\" >Interpolation bilin\u00e9aire<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Interpolation_Bicubique\" >Interpolation Bicubique<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#SPLINE_SINC\" >SPLINE &amp; SINC<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Spline_16_Pixels\" >Spline 16 Pixels<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Spline_36_Pixels\" >Spline 36 Pixels<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Spline_64_Pixels\" >Spline 64\u00a0Pixels<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Sinc_256_Pixels\" >Sinc 256 Pixels<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\/#Sinc_1024_Pixels\" >Sinc\u00a01024 Pixels<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Les_Algorithmes_de_transformations_dimages\"><\/span>Les Algorithmes de transformations d&rsquo;images<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_Quest_quune_transformations_dimage\"><\/span><span style=\"color: #ff6600;\">1. Qu&rsquo;est qu&rsquo;une transformations d&rsquo;image ?<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Une transformation d&rsquo;image est une op\u00e9ration math\u00e9matique \u00a0qui permet d\u2019agrandir, r\u00e9tr\u00e9cir, pivoter, incliner, tordre, anamorphoser une image<\/p>\n<p>Les logiciels de traitement d&rsquo;image et de traitement d&rsquo;image astronomique notamment proposent des algorithmes qui permettent ces op\u00e9rations. Il y a presque syst\u00e9matiquement plusieurs choix possibles, et selon les cas, certains conviennent mieux que d&rsquo;autres.<\/p>\n<p>Certains on un resultat extr\u00eamement faible au niveau qualit\u00e9 de rendu mais cette faible qualit\u00e9 peut \u00eatre recherch\u00e9e volontairement afin de mettre en evidence certain particularisme<\/p>\n<p>D&rsquo;autres sont quasi parfaits et sont issus de proc\u00e9d\u00e9s math\u00e9matiques tr\u00e8s co\u00fbteux en temps machine.<\/p>\n<p>Une interpolation est la recherche d&rsquo;un r\u00e9sultat \u00e0 partir d&rsquo;une s\u00e9quence logique<\/p>\n<p>par exemple<\/p>\n<p>si nous avons la suite suivante<\/p>\n<p>1; 2; 3; 4; 5; ;<span style=\"color: #ff6600;\">?<\/span><\/p>\n<p>on peut logiquement en d\u00e9duire que le \u00ab\u00a0<span style=\"color: #ff6600;\">?<\/span>\u00a0\u00bb sera un <strong>6<\/strong><\/p>\n<p>de la m\u00eame mani\u00e8re sur \u00a0cette s\u00e9rie<\/p>\n<p>1; 2; 3; <span style=\"color: #ff6600;\">?<\/span>; 5; 6; 7; <span style=\"color: #ff6600;\">?<\/span>; 9;<\/p>\n<p>on peut encore facilement d\u00e9duire que les valeurs manquantes sont <strong>4<\/strong> et <strong>8<\/strong><\/p>\n<p>les images fonctionnent comme une suite de chiffres, ce que dans l&rsquo;absolu elles sont : puisque chaque pixel \u00e0\u00a0une valeur qui en g\u00e9n\u00e9ral varie de 0 \u00e0 255<\/p>\n<p>le z\u00e9ro repr\u00e9sente le noir et le 255 le blanc<\/p>\n<p>les valeurs interm\u00e9diaires\u00a0sont\u00a0les niveaux de gris plus ou moins fonc\u00e9 \u00e0\u00a0mesure que l&rsquo;on tend vers le z\u00e9ro ou le 255<\/p>\n<p>sur cette image fortement grossie de 6pixel\u00b2 nous avons donc 36\u00a0pixels<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" title=\"Original\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interpolation_2De.png\" alt=\"\" width=\"81\" height=\"113\" \/><\/p>\n<p>le but du \u00ab\u00a0jeu\u00a0\u00bb et d&rsquo;agrandir cette image tout en essayant de pr\u00e9server la d\u00e9finition : on ne veut pas simplement une image avec des pixels plus gros comme ceci<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" title=\"No Interpolation\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interpolation_nointerp.png\" alt=\"\" width=\"169\" height=\"168\" \/><\/p>\n<p>on va donc agrandir l&rsquo;image 2 fois, \u00a0mais on va se retrouver avec des pixels manquants<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" title=\"Before Interpolation\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interpolation_2D-lg.png\" alt=\"\" width=\"169\" height=\"161\" \/><\/p>\n<p>l&rsquo;interpolation consiste donc \u00e0\u00a0\u00ab\u00a0inventer\u00a0\u00bb logiquement les pixels qu&rsquo;on \u00e0\u00a0pas&#8230; on va essayer de trouver leur valeur par une m\u00e9thode logique et math\u00e9matique. C&rsquo;est ce qu&rsquo;on appelle un algorithme<\/p>\n<p>Au final, apr\u00e8s cette op\u00e9ration on devrait trouver une image \u00a0ressemblant \u00e0\u00a0ceci<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" title=\"After Interpolation\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interpolation_2D-interp.png\" alt=\"\" width=\"168\" height=\"168\" \/><\/p>\n<p>il s&rsquo;agit la d&rsquo;un cas \u00ab\u00a0id\u00e9al\u00a0\u00bb : dans la r\u00e9alit\u00e9 les contrastes d&rsquo;une image peuvent varier brusquement d&rsquo;un endroit \u00e0 l&rsquo;autre rendant tr\u00e8s probl\u00e9matique l\u2019interpolation<\/p>\n<p>Interpolation se produit \u00e9galement chaque fois que vous tournez ou d\u00e9former une image. L&rsquo;exemple pr\u00e9c\u00e9dent \u00e9tait trompeur\u00a0car il se\u00a0pr\u00eate\u00a0id\u00e9alement\u00a0bien \u00e0 l&rsquo;interpolation .<\/p>\n<p>L&rsquo;exemple suivant montre comment un d\u00e9tail de l&rsquo;image peut \u00eatre perdu assez rapidement:<\/p>\n<div>\n<div><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interp_rotate.png\" alt=\"\" width=\"96\" height=\"64\" \/><\/div>\n<div><span class=\"caption\">Image Originale<br \/>\n<\/span><\/div>\n<\/div>\n<div>Rotation\u00a0bicubique \u00e0\u00a045\u00b0 : on note la perte de d\u00e9tails et apparition d&rsquo;artefact (zone plus sombre)<\/div>\n<div>\n<div><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interp_rotate45.png\" alt=\"\" width=\"96\" height=\"64\" \/><span class=\"caption\">\u00a0<\/span><\/div>\n<div><span class=\"caption\"><br \/>\nici une\u00a0Rotation \u00e0 90 \u00b0 : il n&rsquo;y a pas d&rsquo;interpolation : l&rsquo;op\u00e9ration se fait sans perte\u00a0car aucun pixel n&rsquo;a jamais \u00e0 \u00eatre repositionn\u00e9 sur la fronti\u00e8re entre deux pixels (et donc divis\u00e9)<\/span><\/div>\n<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interp_rotate90.png\" alt=\"\" width=\"96\" height=\"64\" \/><\/p>\n<div>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<div>En revanche si on proc\u00e8de en deux temps (2 x 45\u00b0) on enregistre des pertes : l&rsquo;image bien que toujours reconnaissable devient floue<\/div>\n<div>\n<div><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interp_rotate2x45.png\" alt=\"\" width=\"96\" height=\"64\" \/><\/div>\n<div><span class=\"caption\"><br \/>\nici on a\u00a0aggrav\u00e9\u00a0le probl\u00e8me en effectuant 6 interpolations en rotation de 15\u00b0<br \/>\n<\/span><\/div>\n<div>c&rsquo;est toujours reconnaissable mais de plus en plus flou<\/div>\n<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interp_rotate6x15.png\" alt=\"\" width=\"96\" height=\"64\" \/><span class=\"caption\"><br \/>\n<\/span><\/div>\n<p>Notez comment la plupart des d\u00e9tails sont perdus d\u00e8s\u00a0la premi\u00e8re rotation, bien que l&rsquo;image continue de se d\u00e9t\u00e9riorer avec des rotations successives. <span class=\"goog-text-highlight\">Il faut donc <\/span><strong><span class=\"goog-text-highlight\">\u00e9viter de tourner vos photos lorsque cela est <\/span><\/strong><span class=\"goog-text-highlight\">possible<\/span><\/p>\n<p>D&rsquo;une mani\u00e8re quasi syst\u00e9matique les agrandissements d&rsquo;images ont tendance \u00e0\u00a0flouter cette derni\u00e8re : on ne peut pas inventer ce qu&rsquo;on ne voit pas et pour combler le manque, les pixels interm\u00e9diaires \u00ab\u00a0reconstitu\u00e9s\u00a0\u00bb ne font qu&rsquo;ajouter une valeur interm\u00e9diaire\u00a0entre ses pixels voisins mais ne rendent pas compte d&rsquo;un d\u00e9tail qui existe peut-\u00eatre mais qui est absent de la photo originelle du fait d&rsquo;une r\u00e9solution trop faible<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_2_grandes_familles_dinterpolations\"><\/span><span style=\"color: #ff6600;\">2. 2 grandes familles d&rsquo;interpolations<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Les algorithmes d&rsquo;interpolations peuvent \u00eatre regroup\u00e9s en deux cat\u00e9gories: d&rsquo;adaptatif et non adaptatif. Les m\u00e9thodes adaptatives varient en fonction des pixels \u00e0 interpoler\u00a0(bords tranchants ou\u00a0texture lisse), alors que les m\u00e9thodes non adaptatives traitent tous les pixels de mani\u00e8re \u00e9gale.<\/p>\n<p><strong>Algorithmes non adaptatifs<\/strong> comprennent: plus proche voisin, bilin\u00e9aire, bicubique, spline, sinc, lanczos et d&rsquo;autres. En fonction de leur complexit\u00e9, ces algorithmes utilisent entre 0 \u00e0 256 pixels adjacents (ou plus) lors de l&rsquo;interpolation. Bien sur : plus grande est l&#8217;emprise des\u00a0pixels adjacents, plus long est le temps de calcul. Toute fois sur les PC modernes ce\u00a0n\u2019est\u00a0plus\u00a0un\u00a0gros\u00a0probl\u00e8me. Ces algorithmes peuvent \u00eatre utilis\u00e9s \u00e0 la fois pour d\u00e9former et redimensionner une photo.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff6600;\">Plus proche voisin<\/span><\/p>\n<p>C\u2019est le syst\u00e8me le plus rapide, le plus simple et dans presque tous les cas le moins satisfaisant<\/p>\n<p>Il a parfois son utilit\u00e9 pour mettre en \u00e9vidence des probl\u00e8mes sp\u00e9cifiques sur une image<\/p>\n<p>exemple :<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.astro52.com\/ciel-profond\/ngc6946-trait3.jpg\" alt=\"\" \/><\/p>\n<p>on observe des ronds sombres autours des \u00e9toiles.<\/p>\n<p>Pour rendre compte de la r\u00e9alit\u00e9 objective de l&rsquo;image on agrandi en utilisant \u00ab\u00a0plus proche voisin\u00a0\u00bb ainsi aucun d\u00e9naturage de l&rsquo;image ne vient entraver ce qu&rsquo;on cherche \u00e0 d\u00e9montrer<\/p>\n<p>ici les pixels sont juste 6x plus gros. Il faut fortement \u00e9viter d&rsquo;utiliser cette fonction pour autre chose qu&rsquo;un agrandissement simple<\/p>\n<p><a href=\"http:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-content\/uploads\/2015\/12\/merlan.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-3170 alignnone\" src=\"http:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-content\/uploads\/2015\/12\/merlan.png\" alt=\"merlan\" width=\"945\" height=\"662\" srcset=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-content\/uploads\/2015\/12\/merlan.png 945w, https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-content\/uploads\/2015\/12\/merlan-600x420.png 600w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/a><\/p>\n<p>pour les autres algorithmes, je vous propose de les essayer sur des images<\/p>\n<p>Ci-dessous des\u00a0images \u00ab\u00a0test\u00a0\u00bb<\/p>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/zp_original.gif\" alt=\"original\" width=\"256\" height=\"255\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/line_original.gif\" alt=\"original\" width=\"243\" height=\"240\" \/><\/td>\n<td><img decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/pic_org.jpg\" alt=\"original\" \/><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/Monument.JPG\" alt=\"\" width=\"200\" height=\"200\" border=\"0\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/test.GIF\" alt=\"\" width=\"200\" height=\"200\" border=\"0\" \/><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>nous allons appliquer \u00e0\u00a0ces images 36 rotations de 5 degr\u00e9s : elle seront donc invers\u00e9es puis on les inverse a 180\u00b0 (cette derni\u00e8re op\u00e9ration est sans perte)<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Ici_avec_lalgorithme_%C2%AB_proche_voisin_%C2%BB\"><\/span><span style=\"color: #ff6600;\">Ici avec l\u2019algorithme \u00ab\u00a0proche voisin\u00a0\u00bb<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/zp_nn.gif\" alt=\"zp nn\" width=\"256\" height=\"255\" \/>Anneaux visibles : 0<\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/line_nn.gif\" alt=\"line nn\" width=\"243\" height=\"240\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/pic_nn.jpg\" alt=\"picture nn\" width=\"200\" height=\"200\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>les images n&rsquo;ont pratiquement plus rien a voir avec les originales c&rsquo;est donc un proc\u00e9d\u00e9 \u00e0 d\u00e9conseiller<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Interpolation_bilineaire\"><\/span><span class=\"goog-text-highlight\" style=\"color: #ff6600;\">Interpolation bilin\u00e9aire<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>L&rsquo;interpolation bilin\u00e9aire, calcule la\u00a0valeur\u00a0issue du\u00a0voisinage 2&#215;2 \u00a0pixels entourant le pixel \u00a0inconnu. Il prend alors une moyenne pond\u00e9r\u00e9e de ces 4 pixels pour arriver \u00e0 sa valeur interpol\u00e9e finale. Il en r\u00e9sulte des images beaucoup plus lisses qu&rsquo;avec la\u00a0m\u00e9thode\u00a0\u00ab\u00a0plus proche voisin\u00a0\u00bb.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interpolation_graph-bilinear.png\" alt=\"graphe d'interpolation bilin\u00e9aire\" width=\"167\" height=\"130\" \/><\/p>\n<p>Le diagramme de gauche est simplifi\u00e9 pour un cas o\u00f9 toutes les distances des pixels connus sont \u00e9gales, de sorte que la valeur interpol\u00e9e est tout simplement leur moyenne<\/p>\n<p>voici le r\u00e9sultat sur nos images tests (les deux derni\u00e8rse sont agrandies 3x pour mieux rendre compte<\/p>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/zp_bl.gif\" alt=\"zp bl\" width=\"256\" height=\"255\" \/>Anneaux visibles : 2<\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/line_bl.gif\" alt=\"line bl\" width=\"243\" height=\"240\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/pic_bl.jpg\" alt=\"picture bl\" width=\"200\" height=\"200\" \/><\/td>\n<\/tr>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/MonPSBilinear.JPG\" alt=\"\" width=\"350\" height=\"250\" border=\"0\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/PSbilinearline.GIF\" alt=\"\" width=\"250\" height=\"300\" border=\"0\" \/><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Interpolation_Bicubique\"><\/span><span style=\"color: #ff6600;\">Interpolation Bicubique<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>cette m\u00e9thode est similaire mais\u00a0\u00a0va encore plus loin que la m\u00e9thode bilin\u00e9aire en prenant en compte les\u00a04&#215;4 proche de pixels connus &#8211; pour un total de 16 pixels. Puisque ceux-ci sont \u00e0 des distances diff\u00e9rentes du pixel inconnu, les pixels plus proche\u00a0sont affect\u00e9s d&rsquo;une pond\u00e9ration plus \u00e9lev\u00e9e dans le calcul.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cdn.cambridgeincolour.com\/images\/tutorials\/interpolation_graph-bicubic.png\" alt=\"graphe d'interpolation bicubique\" width=\"267\" height=\"193\" \/><\/p>\n<p>Bicubique produit des images plus nettes que les deux m\u00e9thodes pr\u00e9c\u00e9dentes, et est peut-\u00eatre la combinaison id\u00e9ale \u00a0temps de traitement\u00a0\/\u00a0qualit\u00e9. Pour cette raison, il est un standard dans de nombreux programmes de retouche d&rsquo;image (y compris Adobe Photoshop), les pilotes d&rsquo;imprimantes.<\/p>\n<p>Actions sur nos images tests:<\/p>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/zp_ps_bc_norm.gif\" alt=\"original\" width=\"256\" height=\"255\" \/><\/p>\n<p style=\"text-align: center;\">Anneaux visibles : 8,5<\/p>\n<\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/line_ps_bc_norm.gif\" alt=\"original\" width=\"243\" height=\"240\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/pic_ps_bc_norm.jpg\" alt=\"original\" width=\"200\" height=\"200\" \/><\/td>\n<\/tr>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/MonPSBicubic.JPG\" alt=\"\" width=\"350\" height=\"250\" border=\"0\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/PSbicubicline.GIF\" alt=\"\" width=\"250\" height=\"300\" border=\"0\" \/><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>c&rsquo;est mieux, mais pas encore parfait<\/p>\n<p>&nbsp;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"SPLINE_SINC\"><\/span><span class=\"goog-text-highlight\" style=\"color: #ff6600;\">SPLINE &amp; SINC<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Il existe de nombreux autres interpolateurs qui prennent plus de pixels environnants en consid\u00e9ration, et donc provoquent de gros calcul.\u00a0Ces algorithmes comprennent spline et sinc, et conservent\u00a0plus\u00a0d&rsquo;informations apr\u00e8s une interpolation.Ils sont donc extr\u00eamement utiles lorsque l&rsquo;image n\u00e9cessite plusieurs rotations \/ distorsions dans des \u00e9tapes s\u00e9par\u00e9es. Cependant, pour des agrandissements en une seule \u00e9tape ou rotations, ces algorithmes d&rsquo;ordre sup\u00e9rieur sont l\u00e9g\u00e8rement moins performants que le bicubic alors\u00a0que le temps de traitement est augment\u00e9e.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Spline_16_Pixels\"><\/span><span style=\"color: #ff6600;\">Spline 16 Pixels<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/PT_spline16_z256.GIF\" alt=\"\" width=\"256\" height=\"256\" border=\"0\" \/>7 anneaux sont visibles<\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/PTspline16line.GIF\" alt=\"\" width=\"250\" height=\"300\" border=\"0\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/MonPTSpline16.JPG\" alt=\"\" width=\"350\" height=\"250\" border=\"0\" \/><\/p>\n<p style=\"text-align: center;\">\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span class=\"ez-toc-section\" id=\"Spline_36_Pixels\"><\/span><span style=\"color: #ff6600;\">Spline 36 Pixels<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/PT_Spline36_z256.GIF\" alt=\"\" width=\"256\" height=\"256\" border=\"0\" \/><\/p>\n<p style=\"text-align: left;\">10 anneaux sont visibles<\/p>\n<\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/line_spline36.gif\" alt=\"line spline36\" width=\"243\" height=\"240\" \/><\/td>\n<td>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/pic_spline36.jpg\" alt=\"picture spline36\" width=\"200\" height=\"200\" \/><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/MonPTSpline36.JPG\" alt=\"\" width=\"350\" height=\"250\" border=\"0\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/PTspline36line.GIF\" alt=\"\" width=\"250\" height=\"300\" border=\"0\" \/><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span class=\"ez-toc-section\" id=\"Spline_64_Pixels\"><\/span><span style=\"color: #ff6600;\">Spline 64\u00a0Pixels<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/zp_spline64.gif\" alt=\"zp spline64\" width=\"256\" height=\"255\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/line_spline64.gif\" alt=\"line spline64\" width=\"243\" height=\"240\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/pic_spline64.jpg\" alt=\"picture spline64\" width=\"200\" height=\"200\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span class=\"ez-toc-section\" id=\"Sinc_256_Pixels\"><\/span><span style=\"color: #ff6600;\">Sinc 256 Pixels<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/PT_sinc_z256.GIF\" alt=\"\" width=\"256\" height=\"256\" border=\"0\" \/><\/p>\n<p style=\"text-align: center;\">20 anneaux sont visibles<\/p>\n<\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/line_sinc256.gif\" alt=\"line sinc256\" width=\"243\" height=\"240\" \/><\/td>\n<td>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/pic_sinc256.jpg\" alt=\"picture sinc256\" width=\"200\" height=\"200\" \/><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/MonPTSinc.JPG\" alt=\"\" width=\"350\" height=\"250\" border=\"0\" \/><\/p>\n<p style=\"text-align: center;\">On retrouve m\u00eame les artefacts JPG de la photo originale<\/p>\n<\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.panotools.org\/dersch\/interpolator\/PTsincline.GIF\" alt=\"\" width=\"250\" height=\"300\" border=\"0\" \/>les lignes ne bavent presque plus<\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span class=\"ez-toc-section\" id=\"Sinc_1024_Pixels\"><\/span><span style=\"color: #ff6600;\">Sinc\u00a01024 Pixels<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/zp_sinc1024.gif\" alt=\"zp sinc1024\" width=\"256\" height=\"255\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/line_sinc1024.gif\" alt=\"line sinc1024\" width=\"243\" height=\"240\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.photocreations.ca\/interpolator\/pic_sinc1024.jpg\" alt=\"picture sinc1024\" width=\"200\" height=\"200\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>les SINC 256 et 1024 sont donc, et de loin, les meilleurs algorithmes. il ne sont que tr\u00e8s rarement disponibles dans le logiciel tant leur consommation de temps de calcul est consid\u00e9rable<\/p>\n<p>pour le sinc 1024 songez qu&rsquo;il faut calculer pour chaque pixel inconnue la valeurs de 1024 pixel \u00a0adjacents , pond\u00e9r\u00e9 en fonction de la distance.<\/p>\n<p>Si vous avez une image couleur de 10 mega pixels, pour une simple rotation cela \u00e9quivaut<\/p>\n<p>10 millions * 1024 *3 (nombre de couche couleur en RVB) : 30 milliards d&rsquo;op\u00e9rations au minimum !<\/p>\n<p>Il n&rsquo;est pas rare\u00a0qu&rsquo;en astronomie nous pouvons avoir des centaines d&rsquo;images \u00e0\u00a0aligner<\/p>\n<p>100 * 30 millard = \u00a0<span style=\"color: #ff6600;\">3 mille milliards d\u2019op\u00e9rations<\/span><\/p>\n<p>les\u00a0ordinateurs ont beau \u00eatre tr\u00e8s puissants, cela prendrait un certain temps quand m\u00eame!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les Algorithmes de transformations d&rsquo;images 1. Qu&rsquo;est qu&rsquo;une transformations d&rsquo;image ? Une transformation d&rsquo;image est une op\u00e9ration math\u00e9matique \u00a0qui permet<\/p>\n<p><a href=\"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/dossiers-pratiques\/informatique-pratique\/les-algorithmes-de-transformation\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\">Les algorithmes de transformation<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3390,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3169","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/pages\/3169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/comments?post=3169"}],"version-history":[{"count":8,"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/pages\/3169\/revisions"}],"predecessor-version":[{"id":3179,"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/pages\/3169\/revisions\/3179"}],"up":[{"embeddable":true,"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/pages\/3390"}],"wp:attachment":[{"href":"https:\/\/www.avex-asso.org\/dossiers\/wordpress\/wp-json\/wp\/v2\/media?parent=3169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}