tag:linuxfr.org,2005:/tags/g'mic/publicLinuxFr.org : les contenus étiquetés avec « g'mic »2024-01-19T21:04:42+01:00/favicon.pngtag:linuxfr.org,2005:News/417642023-12-19T12:31:10+01:002023-12-21T08:23:21+01:00Transformer une photo en BD avec le filtre Comicbook de G'MICLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Cette dépêche vous explique comment transformer une photo en style BD (genre Tintin, Mickey ou Spirou) grâce au filtre Comicbook de <a href="https://gmic.eu">G'MIC</a>. Remarquez que ça reste très approximatif. Il y a même moyen de transformer un <a href="https://www.youtube.com/watch?v=NS5Ih8ywboI">film en dessin animé</a> ! <img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f6578616d706c652e6a7067/example.jpg" alt="Exemples" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/example.jpg"> Ces images d’exemples sont faites avec les paramètres par défaut. Vous trouverez <a href="http://gimpchat.com/viewtopic.php?f=11&t=19335">d’autres exemples</a> sur Gimpchat.com. Il y a aussi une <a href="https://www.youtube.com/watch?v=v9awRDuzDrk">vidéo sur YouTube</a>.</p>
<p><a href="https://gmic.eu">G'MIC</a> est un logiciel (greffon ou <em>plugin</em>) open-source de traitement d’image numérique. Il possède plus de 500 filtres variés, répartis en une vingtaine de catégories. Tous les filtres sont appliqués avec les données <em>pixels</em> en <em>float32</em> ce qui évite généralement les désagréments dus à la perte de précision.</p>
</div><ul><li>lien nᵒ 1 : <a title="https://linuxfr.org/news/g-mic-3-2-5-15-ans-de-developpement-pour-du-traitement-d-images-libre-et-reproductible" hreflang="fr" href="https://linuxfr.org/redirect/112982">G’MIC 3.2.5 : 15 ans de développement pour du traitement d’images libre et reproductible</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#toc-installation-de-gmic">Installation de G'MIC</a></li>
<li>
<a href="#toc-les-param%C3%A8tres">Les paramètres</a><ul>
<li><a href="#toc-simplification"><strong>Simplification</strong></a></li>
<li>
<a href="#toc-for-edges--pour-les-traits"><strong>For Edges</strong> : <em>Pour les traits</em></a><ul>
<li><a href="#toc-flattening-for-edge-bilateral--aplatissement-pour-les-traits"><strong>Flattening for Edge (bilateral)</strong> : <em>Aplatissement pour les traits</em></a></li>
<li><a href="#toc-edge-method--m%C3%A9thode-de-d%C3%A9tection-des-traits"><strong>Edge Method</strong> : <em>Méthode de détection des traits</em></a></li>
<li><a href="#toc-edge-desaturation-method--m%C3%A9thode-de-d%C3%A9saturation-pour-les-traits"><strong>Edge Desaturation Method</strong> : <em>Méthode de désaturation pour les traits</em></a></li>
<li><a href="#toc-line-thickness--%C3%89paisseur-de-trait"><strong>Line Thickness</strong> : <em>Épaisseur de trait</em></a></li>
<li><a href="#toc-line-strength--dose-de-traits"><strong>Line Strength</strong> : <em>Dose de traits</em></a></li>
<li><a href="#toc-line-antialias--anticr%C3%A9nelage-des-traits"><strong>Line Antialias</strong> : <em>Anticrénelage des traits</em></a></li>
</ul>
</li>
<li><a href="#toc-add-colors--ajouter-des-couleurs"><strong>Add Colors</strong> : <em>Ajouter des couleurs</em></a></li>
<li>
<a href="#toc-for-colors--pour-les-couleurs"><strong>For colors</strong> : <em>Pour les couleurs</em></a><ul>
<li><a href="#toc-saturation-increase--augmentation-de-saturation"><strong>Saturation Increase</strong> : <em>Augmentation de saturation</em></a></li>
<li><a href="#toc-luminosity-increase--augmentation-de-luminosit%C3%A9"><strong>Luminosity Increase</strong> : <em>Augmentation de luminosité</em></a></li>
<li><a href="#toc-final-flattening-bilateral--aplatissement-final"><strong>Final Flattening (bilateral)</strong> : <em>Aplatissement final</em></a></li>
<li><a href="#toc-color-effect--effet-de-couleur"><strong>Color Effect</strong> : <em>Effet de couleur</em></a></li>
<li><a href="#toc-flat-color-effect--effet-de-couleur-avec-aplatissement"><strong>Flat Color Effect</strong> : <em>Effet de couleur avec aplatissement</em></a></li>
<li><a href="#toc-color-to-black-or-white--couleur-vers-noirblanc"><strong>Color to Black or White</strong> : <em>Couleur vers noir/blanc</em></a></li>
</ul>
</li>
<li><a href="#toc-relief-effect--effet-de-relief"><strong>Relief Effect</strong> : <em>Effet de relief</em></a></li>
<li><a href="#toc-special-effect--effets-sp%C3%A9ciaux"><strong>Special Effect</strong> : <em>Effets spéciaux</em></a></li>
<li><a href="#toc-final-antialias--anticr%C3%A9nelage-final"><strong>Final Antialias</strong> : <em>Anticrénelage final</em></a></li>
</ul>
</li>
</ul>
<h2 id="toc-installation-de-gmic">Installation de G'MIC</h2>
<p>Pour commencer, il vous faut <a href="https://gmic.eu">G'MIC</a>. Il se trouve inclus dans <a href="https://krita.org">Krita</a>. Pour <a href="https://www.gimp.org/">GIMP</a>, vous devez l’installer. Il est possible de l’inclure aussi dans Photoshop ou paint.net. Vous trouverez, sur le net, beaucoup de tutoriels pour vous aider à l’installer.</p>
<p>Après avoir ouvert votre photo dans votre logiciel de dessin (Krita, GIMP ou même Photoshop ou paint.net), lancez le plugin G'MIC. Dans Krita et GIMP, il se trouve dans le menu "Filtre" (Je ne sais pas pour Photoshop et paint.net).</p>
<p>Tapez « Comic » dans la case de recherche. Vous y êtes. Si vous ne voyez pas le filtre, essayez de faire <code>ctrl-R</code> dans la fenêtre de G'MIC (cela charge les derniers filtres G'MIC).</p>
<h2 id="toc-les-paramètres">Les paramètres</h2>
<p>Si on est pressé, on peut déjà obtenir un bon résultat en se contentant d'appuyer sur OK sans régler aucun paramètre (= mode rapide/auto). L'explication des paramètres ne sert donc que si on veut améliorer le résultat.</p>
<p>Vous pouvez parfois vous contenter des paramètres par défaut, mais je vais vous expliquer ici la signification des différents paramètres. Les paramètres sont en anglais.</p>
<h3 id="toc-simplification"><strong>Simplification</strong></h3>
<p>Ce paramètre permet d’avoir un résultat avec moins de détails, plus schématique.</p>
<ul>
<li>
<strong>None</strong> : <em>Aucune</em>.</li>
<li>
<strong>Light</strong> : <em>Légère</em>. Il s’agit de la simplification la plus légère.</li>
<li>
<strong>Light Antialias</strong> : <em><a href="https://fr.wikipedia.org/wiki/Anticr%C3%A9nelage">Anticrénelage</a> léger</em>. Si vous voulez adoucir un peu les traits de la photo <em>avant</em> de la transformer en BD. <em>Remarque</em> : pour adoucir les traits finaux, il existe un autre réglage.
i- <strong>Strong Antialias</strong> : <em>Anticrénelage fort</em>. Idem, mais attention, l’image peut être assez déformée (les traits sont étirés). Mais cela peut quand même donner un résultat intéressant. Ça me donne l’impression que les directions sont très marquées. </li>
<li>
<strong>Median</strong> : il s’agit d’une simplification moins forte que « <em>Strong antialias</em> ». Les traits ne sont pas étirés. On perd quelques détails.</li>
<li>
<strong>Iuwt</strong> : quand vous avez des répétitions serrées (je n’arrive pas à le dire mieux) par exemple de l’herbe, une surface granuleuse où tous les grains sont très contrastés, ce choix permet d’en faire une surface uniforme.</li>
<li>
<strong>Thin Brush</strong> : idem que « Iuwt », plus ou moins fort que lui selon la photo.</li>
<li>
<strong>Mean Curvature</strong> : c’est une simplification très forte, mais contrairement à « <em>Strong Antialias</em> », les traits ne sont pas étirés. Ça me donne l’impression que les directions sont toutes équivalentes et que c’est moins anguleux.</li>
</ul>
<p>Ce paramètre permet de faire une simplification rapide. Si vous voulez un meilleur résultat, il peut être intéressant de pré-traiter l’image manuellement.</p>
<h3 id="toc-for-edges--pour-les-traits">
<strong>For Edges</strong> : <em>Pour les traits</em>
</h3>
<h4 id="toc-flattening-for-edge-bilateral--aplatissement-pour-les-traits">
<strong>Flattening for Edge (bilateral)</strong> : <em>Aplatissement pour les traits</em>
</h4>
<p>Il s’agit d’un aplatissement de l’image avant la détection des traits. Cet aplatissement consiste en un <a href="https://en.wikipedia.org/wiki/Bilateral_filter">filtre « bilatéral »</a> qui fabrique des zones de couleurs presque uniforme.</p>
<p>Si ce paramètre est trop petit, vous risquez d’avoir trop de petits traits parasites.<br>
S’il est trop grand, vous risquez d’avoir des traits délimitant des nuances de couleur.</p>
<h4 id="toc-edge-method--méthode-de-détection-des-traits">
<strong>Edge Method</strong> : <em>Méthode de détection des traits</em>
</h4>
<ul>
<li>
<strong>Diff. of Gauss.</strong> : <em>Différence entre deux flous gaussiens</em>. À mon avis, c’est ce choix qui donne le meilleur résultat.</li>
<li>
<strong>Diff. of BoxBlur</strong> : <em>Différence entre deux <a href="https://en.wikipedia.org/wiki/Box_blur">box blur</a></em>. Cette méthode fabrique des traits très fins.</li>
<li>
<strong>Diff. of Median</strong> : <em>Différence entre deux <a href="https://fr.wikipedia.org/wiki/Filtre_m%C3%A9dian">flous médians</a></em>. Cette méthode donne des traits un peu étrange (je trouve).</li>
</ul>
<h4 id="toc-edge-desaturation-method--méthode-de-désaturation-pour-les-traits">
<strong>Edge Desaturation Method</strong> : <em>Méthode de désaturation pour les traits</em>
</h4>
<ul>
<li>
<strong>Lightness</strong> : <em>Luminosité</em>. Les traits tiendront compte plus fortement de certaines différences de couleur.</li>
<li>
<strong>MaxRGB</strong> : <em>Maximum des canaux rouge, vert, bleu</em>. Les traits tiendront compte plus fortement des différences de couleur. À mon avis, c’est généralement le meilleur choix.</li>
<li>
<strong>MinRGB</strong> : <em>Minimum des canaux rouge, vert, bleu</em>. Les traits tiendront compte plus fortement des différences de luminosité.</li>
</ul>
<h4 id="toc-line-thickness--Épaisseur-de-trait">
<strong>Line Thickness</strong> : <em>Épaisseur de trait</em>
</h4>
<p>L’épaisseur n’est pas proportionnelle à la taille de l’image. Si l’image est très grande, les traits seront proportionnellement très fins. Généralement, je réduis d’abord l’image à une taille d’au plus 600px environ (largeur ou hauteur).</p>
<h4 id="toc-line-strength--dose-de-traits">
<strong>Line Strength</strong> : <em>Dose de traits</em>
</h4>
<p>Voulez-vous plus ou moins de traits sur votre résultat ?</p>
<h4 id="toc-line-antialias--anticrénelage-des-traits">
<strong>Line Antialias</strong> : <em>Anticrénelage des traits</em>
</h4>
<p>Pour éviter le crénelage des traits, mettez ce paramètre à au moins 15. Notez que, au-delà de 15, je ne vois pas d’amélioration sensible : utilisez alors le paramètre « Final Antialias ».</p>
<h3 id="toc-add-colors--ajouter-des-couleurs">
<strong>Add Colors</strong> : <em>Ajouter des couleurs</em>
</h3>
<p>Si ce paramètre est décoché, le résultat ne contient que les traits. Ça peut être utile si vous voulez colorier vous-même.<br>
Dans ce cas, tous les autres paramètres de cette section sont sans effet.</p>
<h3 id="toc-for-colors--pour-les-couleurs">
<strong>For colors</strong> : <em>Pour les couleurs</em>
</h3>
<h4 id="toc-saturation-increase--augmentation-de-saturation">
<strong>Saturation Increase</strong> : <em>Augmentation de saturation</em>
</h4>
<p>Beaucoup de bandes dessinées ont des couleurs très saturées. Ce paramètre permet de s’en approcher.</p>
<h4 id="toc-luminosity-increase--augmentation-de-luminosité">
<strong>Luminosity Increase</strong> : <em>Augmentation de luminosité</em>
</h4>
<p>Il est généralement utile d’augmenter la luminosité car des traits noirs sont ajoutés et cela assombrit l’ensemble de l’image. Notez que l’augmentation de luminosité n’agit pas sur les traits noirs qui restent bien noirs !</p>
<h4 id="toc-final-flattening-bilateral--aplatissement-final">
<strong>Final Flattening (bilateral)</strong> : <em>Aplatissement final</em>
</h4>
<p>Les bandes dessinées ont souvent des zones de couleurs uniformes. Ce paramètre applique un filtre bilatéral sur le résultat final. C’est lui qui fabrique le mieux des zones de couleurs presque uniformes. On voudra en général mettre une grande valeur pour ce paramètre.</p>
<h4 id="toc-color-effect--effet-de-couleur">
<strong>Color Effect</strong> : <em>Effet de couleur</em>
</h4>
<ul>
<li>
<strong>None</strong> : <em>Aucun effet</em>
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f636f6c6f724e6f6e652e6a7067/Goldfish_photo_2_small_colorNone.jpg" alt="Poisson rouge - Aucun effet" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_colorNone.jpg">
</li>
<li>
<strong>Deep Black</strong> : <em>Noir profond</em>. Les tons presque noirs deviennent tout à fait noirs. Cela donne un plus grand contraste à l’image.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f636f6c6f7244656570426c61636b2e6a7067/Goldfish_photo_2_small_colorDeepBlack.jpg" alt="Poisson rouge - Noir profond" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_colorDeepBlack.jpg">
</li>
<li>
<strong>Local Contrast Enhancement</strong> : <em>Amélioration du contraste local</em>. Cela permet d’avoir une image moins terne.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f636f6c6f724c43452e6a7067/Goldfish_photo_2_small_colorLCE.jpg" alt="Poisson rouge - Amélioration du contraste local" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_colorLCE.jpg">
</li>
<li>
<strong>Colorful</strong> : <em>Uniquement de la couleur</em>. C’est un gros effet : tous les tons un peu grisâtres deviennent colorés (sauf les gris purs)
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f636f6c6f7246756c2e6a7067/Goldfish_photo_2_small_colorFul.jpg" alt="Poisson rouge - Uniquement de la couleur" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_colorFul.jpg">
</li>
</ul>
<h4 id="toc-flat-color-effect--effet-de-couleur-avec-aplatissement">
<strong>Flat Color Effect</strong> : <em>Effet de couleur avec aplatissement</em>
</h4>
<p>Ce paramètre effectue un genre de postérisation</p>
<ul>
<li>
<strong>Rainbow</strong> : <em>Arc-en-ciel</em>. Tous les tons sont transformés en blanc, noir, magenta ou une des couleurs de l'arc-en-ciel.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f666c61745261696e626f772e6a7067/Goldfish_photo_2_small_flatRainbow.jpg" alt="Poisson rouge - Arc-en-ciel" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_flatRainbow.jpg">
</li>
<li>
<strong>Hard Rainbow</strong> : <em>Arc-en-ciel par palier</em>. Tous les tons sont transformés en blanc, noir, magenta, rouge, jaune, vert, bleu, cyan.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f666c6174486172645261696e626f772e6a7067/Goldfish_photo_2_small_flatHardRainbow.jpg" alt="Poisson rouge - Arc-en-ciel par palier" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_flatHardRainbow.jpg">
</li>
<li>
<strong>Posterize Softly</strong> : <em>Postériser avec douceur</em>. Cela permet de réduire le nombre de couleurs (à 32) et de lisser un peu les traits de l’image.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f666c6174506f7374536f66742e6a7067/Goldfish_photo_2_small_flatPostSoft.jpg" alt="Poisson rouge - Postériser avec douceur" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_flatPostSoft.jpg">
</li>
<li>
<strong>Super Flat</strong> : <em>Super plat</em>. Cela permet de réduire le nombre de couleurs (à 8) et de corriger la luminosité.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f666c61745375706572466c61742e6a7067/Goldfish_photo_2_small_flatSuperFlat.jpg" alt="Poisson rouge - Super plat" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_flatSuperFlat.jpg">
</li>
</ul>
<h4 id="toc-color-to-black-or-white--couleur-vers-noirblanc">
<strong>Color to Black or White</strong> : <em>Couleur vers noir/blanc</em>
</h4>
<p>Pour ces effets, le filtre « Lineart » donne souvent un meilleur résultat.</p>
<ul>
<li>
<strong>No</strong>. L’image reste en couleur.</li>
<li>
<strong>Soft Threshold</strong> : <em>Seuil approximatif</em>. Seulement les traits noirs avec un peu de gris.</li>
<li>
<strong>Threshold with Soft Antialias</strong> : <em>Seuil avec antialias fort</em>. Noir et blanc avec trait très adouci.</li>
<li>
<strong>Lines and Black</strong> : <em>Trait et aplats noirs</em>. Uniquement les traits en noir et des aplats noirs pour les zones très sombres, pas de gris, pas d’antialias.</li>
</ul>
<h3 id="toc-relief-effect--effet-de-relief">
<strong>Relief Effect</strong> : <em>Effet de relief</em>
</h3>
<ul>
<li>
<strong>None</strong> : <em>Aucun effet</em>.</li>
<li>
<strong>Groove</strong> : <em>Rainure</em>. Les traits semblent creusés dans l’image.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f67726f6f76652e6a7067/Goldfish_photo_2_small_groove.jpg" alt="Poisson rouge - Groove" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_groove.jpg">
</li>
<li>
<strong>Bump</strong> : <em>Gonflage</em>. Les zones délimitées par les traits et par les parties noires semblent gonflées. Je trouve que ça ressemble à des jouets plastiques.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f62756d702e6a7067/Goldfish_photo_2_small_bump.jpg" alt="Poisson rouge - Bump" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_bump.jpg">
</li>
</ul>
<h3 id="toc-special-effect--effets-spéciaux">
<strong>Special Effect</strong> : <em>Effets spéciaux</em>
</h3>
<ul>
<li>
<strong>None</strong> : <em>Aucun effet</em>
</li>
<li>
<strong>Dream</strong> : <em>Comme dans un rêve</em>.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f647265616d2e6a7067/Goldfish_photo_2_small_dream.jpg" alt="Poisson rouge - Dream" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_dream.jpg">
</li>
<li>
<strong>Past</strong> : <em>Comme une vieille image</em>.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f706173742e6a7067/Goldfish_photo_2_small_past.jpg" alt="Poisson rouge - Past" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_past.jpg">
</li>
<li>
<strong>Sketch of Future</strong> : <em>Esquisse du futur</em>. C’est comme l’idée qu’on peut se faire du futur : on n’en voit que les très grandes lignes.
<img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f636c34636e616d2f67696d705f636172746f6f6e5f706c7567696e2f6d61696e2f6578656d706c65732f476f6c64666973685f70686f746f5f325f736d616c6c5f6675747572652e6a7067/Goldfish_photo_2_small_future.jpg" alt="Poisson rouge - Sketch of Future" title="Source : https://raw.githubusercontent.com/cl4cnam/gimp_cartoon_plugin/main/exemples/Goldfish_photo_2_small_future.jpg">
</li>
</ul>
<h3 id="toc-final-antialias--anticrénelage-final">
<strong>Final Antialias</strong> : <em>Anticrénelage final</em>
</h3>
<p>Parfois, l’image finale présente certains traits en escalier. Pour résoudre cela, essayez d’abord « Simple » et si ce n’est pas suffisant « Double ».</p>
</div><div><a href="https://linuxfr.org/news/transformer-une-photo-en-bd-avec-le-filtre-comicbook-de-g-mic.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/133958/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/transformer-une-photo-en-bd-avec-le-filtre-comicbook-de-g-mic#comments">ouvrir dans le navigateur</a>
</p>
cli345Benoît SibaudBAudorfenorYsabeau 🧶 🧦https://linuxfr.org/nodes/133958/comments.atomtag:linuxfr.org,2005:News/415262023-05-30T21:22:16+02:002023-06-05T06:46:08+02:00G’MIC 3.2.5 : 15 ans de développement pour du traitement d’images libre et reproductibleLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>À l’occasion de la sortie de la version <strong>3.2.5</strong> de <a href="https://gmic.eu"><em>G’MIC</em></a> (<em>GREYC’s Magic for Image Computing</em>), <a href="https://fr.wikipedia.org/wiki/Framework">cadriciel</a> libre pour <a href="https://fr.wikipedia.org/wiki/Traitement_d%27images">le traitement des images</a>, nous vous proposons un récapitulatif des nouvelles fonctionnalités implémentées depuis notre <a href="//linuxfr.org/news/sortie-de-g-mic-3-0-une-troisieme-dose-pour-un-traitement-efficace-de-vos-images">précédente dépêche</a> (publiée en décembre 2021). C’est aussi pour nous l’opportunité de célébrer les <strong>15 ans</strong> d’existence du projet !</p>
<p><em>G’MIC</em> est développé à <a href="https://fr.wikipedia.org/wiki/Caen">Caen</a>, en France, dans l’équipe <a href="https://www.greyc.fr/image"><em>IMAGE</em></a> du <a href="https://www.greyc.fr"><em>GREYC</em></a>, un laboratoire public de recherche en Sciences et Technologies de l’Information et de la Communication (Unité Mixte de Recherche <a href="https://www.cnrs.fr/"><em>CNRS</em></a> / <a href="https://www.ensicaen.fr/"><em>ENSICAEN</em></a> / <a href="https://www.unicaen.fr/">Université de Caen</a>). Il est distribué sous licence libre <a href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-fr.html"><em>CeCILL</em></a>.</p>
<p><a href="https://gmic.eu/gmic325/img/greyc.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f67726579632e706e67/greyc.png" alt="gmic_teaser" title="Source : https://gmic.eu/gmic325/thumbs/greyc.png"></a></p>
<p>Dans cette dépêche, nous détaillerons quelques-unes des fonctionnalités récemment ajoutées, et nous les illustrerons par des exemples de traitement et de synthèse d’images 2D et 3D.</p>
<p><em>N. D. A. : Cliquez sur les images pour en obtenir une version en pleine résolution, ou une vidéo correspondante lorsque les images contiennent l’icône <img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f69636f6e5f706c61795f766964656f2e706e67/icon_play_video.png" alt="play_video" title="Source : https://gmic.eu/gmic325/thumbs/icon_play_video.png"></em></p>
</div><ul><li>lien nᵒ 1 : <a title="https://gmic.eu" hreflang="en" href="https://linuxfr.org/redirect/112211">Le projet G’MIC</a></li><li>lien nᵒ 2 : <a title="https://piaille.fr/@gmic" hreflang="en" href="https://linuxfr.org/redirect/112212">Fil Mastodon des nouvelles du projet</a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/tags/g'mic/public" hreflang="fr" href="https://linuxfr.org/redirect/112213">Série d’articles G’MIC sur LinuxFr.org</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#toc-1-quest-ce-que-gmic">1. Qu’est-ce que <em>G’MIC</em> ?</a></li>
<li><a href="#toc-2-nouveaux-filtres-pour-labstraction-le-glitch-art-et-la-g%C3%A9n%C3%A9ration-de-motifs">2. Nouveaux filtres pour l’abstraction, le <em>Glitch Art</em> et la génération de motifs</a></li>
<li>
<a href="#toc-3-nouveaut%C3%A9s-concernant-le-traitement-des-couleurs">3. Nouveautés concernant le traitement des couleurs</a><ul>
<li><a href="#toc-31-fonctionnalit%C3%A9s-pour-les-luts-3d">3.1. Fonctionnalités pour les <em>LUTs</em> 3D</a></li>
<li><a href="#toc-32-nouveaux-filtres-couleurs-pour-le-greffon-gmic-qt">3.2. Nouveaux filtres couleurs pour le greffon <em>G'MIC-QT</em>.</a></li>
<li><a href="#toc-33-commandes-color2name-et-name2color">3.3. Commandes <code>color2name</code> et <code>name2color</code></a></li>
</ul>
</li>
<li>
<a href="#toc-4-maillages-3d-et-ensembles-de-voxels">4. Maillages 3D et ensembles de voxels</a><ul>
<li><a href="#toc-41-import-dobjet-en-format-wavefront">4.1. Import d'objet en format <em>Wavefront</em></a></li>
<li><a href="#toc-42-outils-de-transformation-des-maillages-3d">4.2. Outils de transformation des maillages 3D.</a></li>
<li><a href="#toc-43-outils-de-g%C3%A9n%C3%A9ration-de-maillages-3d">4.3. Outils de génération de maillages 3D</a></li>
</ul>
</li>
<li>
<a href="#toc-5-autres-nouveaut%C3%A9s">5. Autres nouveautés</a><ul>
<li><a href="#toc-51-am%C3%A9lioration-diverses-du-greffon-gmic-qt">5.1. Amélioration diverses du greffon G’MIC-Qt</a></li>
<li><a href="#toc-52-am%C3%A9lioration-de-la-biblioth%C3%A8que-standard-stdgmic">5.2. Amélioration de la bibliothèque standard <code>stdgmic</code></a></li>
<li><a href="#toc-53-informations-diverses-li%C3%A9es-au-projet">5.3. Informations diverses liées au projet</a></li>
</ul>
</li>
<li><a href="#toc-6-conclusions--perspectives">6. Conclusions & perspectives</a></li>
</ul>
<h2 id="toc-1-quest-ce-que-gmic">1. Qu’est-ce que <em>G’MIC</em> ?</h2>
<p><a href="https://gmic.eu"><em>G’MIC</em></a> est un cadriciel (<em>framework</em>) libre pour la manipulation et le traitement des <a href="https://fr.wikipedia.org/wiki/Image_num%C3%A9rique">images numériques</a>. Il propose des interfaces utilisateur variées pour la manipulation algorithmique d’images et de signaux. Le cœur de ce projet repose sur l’implémentation d’un langage de script (le <a href="https://gmic.eu/reference/overall_context.html"><em>« langage G’MIC »</em></a>), élaboré spécifiquement pour faciliter le prototypage et l’implémentation de nouveaux algorithmes et opérateurs de traitement d’images. Les utilisateurs peuvent appliquer des opérateurs parmi plusieurs centaines déjà implémentées, mais ont également la possibilité d’écrire leurs propres pipelines de traitement et de les rendre accessibles dans les différentes interfaces utilisateur du projet. C’est donc, par essence, un cadriciel ouvert, extensible et en évolution constante.</p>
<p>Les interfaces utilisateurs de <em>G’MIC</em> les plus abouties sont : <a href="https://gmic.eu/reference/"><code>gmic</code></a>, l’interface en ligne de commande (complément utile à <a href="https://www.imagemagick.org/"><em>ImageMagick</em></a> ou <a href="http://www.graphicsmagick.org"><em>GraphicsMagick</em></a> pour ceux qui aiment utiliser le terminal), le service Web <a href="https://gmicol.greyc.fr/"><em>G’MIC Online</em></a>, et surtout, le greffon <a href="https://github.com/c-koi/gmic-qt"><em>G’MIC-Qt</em></a>, utilisable dans de nombreux logiciels populaires d’édition d’images numériques tels que <a href="https://www.gimp.org"><em>GIMP</em></a>, <a href="https://www.krita.org"><em>Krita</em></a>, <a href="https://www.digikam.org"><em>DigiKam</em></a>, <a href="https://www.getpaint.net"><em>Paint.net</em></a>, <a href="https://fr.wikipedia.org/wiki/Adobe_Photoshop"><em>Adobe Photoshop</em></a>, <a href="https://fr.wikipedia.org/wiki/Affinity_Photo"><em>Affinity Photo</em></a>… Ce greffon, très facile à utiliser, propose aujourd’hui plus de <strong>580 filtres</strong> de traitement pour enrichir ces logiciels de manipulation d’images.</p>
<p><a href="https://gmic.eu/gmic325/img/gmic_qt_325.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f676d69635f71745f3332352e706e67/gmic_qt_325.png" alt="Greffon G’MIC-Qt" title="Source : https://gmic.eu/gmic325/thumbs/gmic_qt_325.png"></a> <em>Fig. 1.1. Aperçu du greffon G’MIC-Qt, en version <strong>3.2.5</strong>, ici lancé depuis GIMP 2.10.</em></p>
<p>Grâce à son langage de script dédié, de nouveaux filtres et effets pour le traitement d’images sont régulièrement ajoutés à <em>G’MIC</em>.</p>
<p>Dans cette dépêche, nous détaillerons quelques-uns de ces nouveaux traitements et donneront quelques nouvelles du projet. Nous donnerons également des exemples d’utilisation de l’outil en ligne de commande <code>gmic</code>, qui est de loin l’interface la plus puissante offerte par le projet.</p>
<h2 id="toc-2-nouveaux-filtres-pour-labstraction-le-glitch-art-et-la-génération-de-motifs">2. Nouveaux filtres pour l’abstraction, le <em>Glitch Art</em> et la génération de motifs</h2>
<ul>
<li>Pour commencer cette revue des nouveautés, mentionnons l’existence d’un nouveau filtre de transformation d’images sous la forme de dessins au trait (« <a href="https://en.wikipedia.org/wiki/Line_art">Line Art</a> » en anglais). Ce filtre, opportunément nommé <strong>Artistic / Line Art</strong> a été élaboré par <a href="https://github.com/cl4cnam">Claude Lion</a>, contributeur extérieur déjà auteur de plusieurs filtres (dont le très apprécié <strong>Artistic / Comic Book</strong> dont nous <a href="//linuxfr.org/news/sortie-de-g-mic-3-0-une-troisieme-dose-pour-un-traitement-efficace-de-vos-images#toc-21-effets-artistiques">avions déjà parlé</a> dans notre dépêche précédente).</li>
</ul>
<p>Ce filtre analyse la géométrie des structures principales dans les images et décide si ces structures doivent apparaître dans une image redessinée sur fond blanc, soit sous forme de traits noirs, soit sous forme d’aplats gris ou noirs. Il fonctionne particulièrement bien avec des portraits, puisque les contrastes sont assez marqués dans ce type d’images.</p>
<p><a href="https://gmic.eu/gmic325/img/filter_lineart.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f66696c7465725f6c696e656172742e706e67/filter_lineart.png" alt="filter_lineart" title="Source : https://gmic.eu/gmic325/thumbs/filter_lineart.png"></a> <em>Fig. 2.1. Le filtre <strong>Artistic / Line Art</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<p>La visualisation interactive du greffon <em>G’MIC-Qt</em> facilite le réglage de l’ensemble des paramètres du filtre, pour personnaliser le type de rendu souhaité. L’appui sur les boutons « <em>Apply</em> » ou « <em>OK</em> » applique le filtre sur l’image. Notons qu’une fois ces paramètres choisis, l’appui sur le bouton <em>« Copy to Clipboard »</em> de l’interface du greffon va copier la commande <em>G’MIC</em> correspondante dans le presse-papier.</p>
<p><a href="https://gmic.eu/gmic325/img/filter_lineart_zoom.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f66696c7465725f6c696e656172745f7a6f6f6d2e706e67/filter_lineart_zoom.png" alt="filter_lineart_zoom" title="Source : https://gmic.eu/gmic325/thumbs/filter_lineart_zoom.png"></a> <em>Fig. 2.2. Le bouton « Copy to Clipboard » copie dans le presse-papier la commande G’MIC correspondant à l’action du filtre.</em></p>
<p>Pour appliquer ensuite le filtre avec les mêmes paramètres sur d’autres images (par exemple pour du traitement par lot), il suffit de lancer <code>gmic</code> dans son terminal, en y ajoutant le nom du fichier image à traiter et la commande copiée préalablement dans le presse-papier, ce qui donnera par exemple :</p>
<pre><code class="sh">$ gmic autre_portrait.jpg cl_lineart <span class="m">0</span>,0,2,1,15,15,1,0,6,2,2,0,0,0,50,50 output lineart.png</code></pre>
<p>Cette astuce est utile quand on souhaite utiliser certains effets <em>G’MIC</em> simplement dans des scripts personnalisés (cela fonctionne évidemment avec tous les filtres disponibles dans le greffon).</p>
<p><a href="https://gmic.eu/gmic325/img/lineart.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6c696e656172742e706e67/lineart.png" alt="lineart" title="Source : https://gmic.eu/gmic325/thumbs/lineart.png"></a> <em>Fig. 2.3. Le filtre « Line Art », appliqué sur une autre image de portrait, avec les mêmes paramètres, depuis le terminal.</em></p>
<p><a href="https://gmic.eu/gmic325/img/lineart2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6c696e65617274322e706e67/lineart2.png" alt="lineart" title="Source : https://gmic.eu/gmic325/thumbs/lineart2.png"></a> <em>Fig. 2.4. Le filtre « Line Art », appliqué sur d’autres images d’exemples.</em></p>
<ul>
<li>Passons maintenant au filtre <strong>Degradations / Huffman Glitches</strong>, un moyen amusant de générer du <a href="https://fr.wikipedia.org/wiki/Glitch_art"><em>Glitch Art</em></a>. Plus précisément, on va simuler ici des artéfacts de décompression d’images via l’ajout volontaire d’erreurs (inversions de bits) dans les <a href="https://fr.wikipedia.org/wiki/Codage_de_Huffman">codes d’Huffman</a> qui auraient été utilisés pour la compression sans perte des données de l’image d’entrée. Cela produit des distorsions numériques visibles sur l’image lors de la décompression des données bruitées, distorsions qui sont justement des effets recherchés par les amateurs de <em>Glitch Art</em> !</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/huffman_glitches.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f687566666d616e5f676c6974636865732e706e67/huffman_glitches.png" alt="huffman_glitches" title="Source : https://gmic.eu/gmic325/thumbs/huffman_glitches.png"></a> <em>Fig. 2.5. Le filtre <strong>Degradations / Huffman Glitches</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<p>Ce filtre permet la génération d’artéfacts de compression avec des variations : bloc par bloc, ligne par ligne, colonne par colonne, ou sur des données image encodées dans des espaces couleur différents de <em>RGB</em>. Au final, la variété des anomalies qu’il est possible de produire est assez importante, comme illustré par la figure suivante :</p>
<p><a href="https://gmic.eu/gmic325/img/huffman_glitches2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f687566666d616e5f676c697463686573322e706e67/huffman_glitches2.png" alt="huffman_glitches2" title="Source : https://gmic.eu/gmic325/thumbs/huffman_glitches2.png"></a> <em>Fig. 2.6. Quelques variations des paramètres du filtre <strong>Degradations / Huffman Glitches</strong>.</em></p>
<p>Là encore, il est facile de récupérer la commande <em>G’MIC</em> correspondant à l’application du filtre, pour l’utiliser dans un script, par exemple pour l’application de cet effet sur toutes les <em>frames</em> d’une vidéo (cliquez sur l’image ci-dessous pour visualiser la vidéo) :</p>
<p><a href="https://gmic.eu/gmic325/img/v_huffman_glitches.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f687566666d616e5f676c6974636865732e706e67/v_huffman_glitches.png" alt="v_huffman_glitches" title="Source : https://gmic.eu/gmic325/thumbs/v_huffman_glitches.png"></a> <em>Fig. 2.7. Le filtre <strong>Degradations / Huffman Glitches</strong> appliqué sur la vidéo <a href="https://fr.wikipedia.org/wiki/Tears_of_Steel"><em>Tears of Steel</em></a> de la fondation Blender.</em></p>
<p>Il flotte comme un doux parfum de télé analogique… ☺</p>
<ul>
<li>Mentionnons également l’apparition d’un nouveau filtre, nommé <strong>Patterns / Pack Ellipses</strong>, qui risque de ne pas plaire à nos lecteurs <a href="https://fr.wikipedia.org/wiki/Trypophobie">trypophobes</a> (aucun lien avec la peur de manger des tripes à la mode de Caen) ! Ce filtre a pour tâche de redessiner une image en emboîtant des ellipses colorées, sans les faire se toucher. Les ellipses sont orientées parallèlement ou orthogonalement aux structures locales, pour faire ressortir au mieux les contours les plus saillants des images. Ce n’est pas le premier filtre de ce type dans <em>G’MIC</em>, mais on a ici un nouvel algorithme d’<a href="https://fr.wikipedia.org/wiki/Empilement_compact">empilement compact</a>, relativement rapide à exécuter, et qui produit des images intéressantes.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/pack_ellipses.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f7061636b5f656c6c69707365732e706e67/pack_ellipses.png" alt="pack_ellipses" title="Source : https://gmic.eu/gmic325/thumbs/pack_ellipses.png"></a> <em>Fig. 2.8. Le filtre <strong>Patterns / Pack Ellipses</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<p><a href="https://gmic.eu/gmic325/img/ellipses.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f656c6c69707365732e706e67/ellipses.png" alt="pack_ellipses2" title="Source : https://gmic.eu/gmic325/thumbs/ellipses.png"></a> <em>Fig. 2.9. Application du filtre <strong>Patterns / Pack Ellipses</strong> sur différentes images de portrait.</em></p>
<p>La vidéo ci-dessous illustre le comportement pas à pas de l’algorithme pour l’emboîtement de cercles colorés, afin de reconstituer l’image d’un portrait :</p>
<p><a href="https://gmic.eu/gmic325/img/v_circle_packing.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f636972636c655f7061636b696e672e706e67/v_circle_packing.png" alt="v_circle_packing" title="Source : https://gmic.eu/gmic325/thumbs/v_circle_packing.png"></a> <em>Fig. 2.10. Les différentes étapes du filtre <strong>Patterns / Pack Ellipses</strong> décomposées en vidéo.</em></p>
<ul>
<li>Toujours dans les effets de génération de textures et de motifs, signalons l’apparition d’un nouveau filtre de <a href="https://fr.wikipedia.org/wiki/Halftoning"><em>Halftoning</em></a>, nommé <strong>Patterns / Halftone [Generic]</strong>. Là encore, l’idée est de reconstituer une image d’entrée en empilant des motifs colorés de géométrie quelconque, par exemple de petits cercles :</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/halftone_generic.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f68616c66746f6e655f67656e657269632e706e67/halftone_generic.png" alt="halftone_generic" title="Source : https://gmic.eu/gmic325/thumbs/halftone_generic.png"></a> <em>Fig. 2.11. Le filtre <strong>Patterns / Halftone [Generic]</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<p>Ou encore, une spirale :</p>
<p><a href="https://gmic.eu/gmic325/img/halftone_generic2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f68616c66746f6e655f67656e65726963322e706e67/halftone_generic2.png" alt="halftone_generic2" title="Source : https://gmic.eu/gmic325/thumbs/halftone_generic2.png"></a> <em>Fig. 2.12. Filtre <strong>Patterns / Halftone [Generic]</strong> avec un motif en spirale.</em></p>
<p>Le filtre propose même un mode spécial pour que l’utilisateur puisse fournir son motif de <em>Halftoning</em> personnalisé, dans un calque séparé :</p>
<p><a href="https://gmic.eu/gmic325/img/halftone_generic3.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f68616c66746f6e655f67656e65726963332e706e67/halftone_generic3.png" alt="halftone_generic3" title="Source : https://gmic.eu/gmic325/thumbs/halftone_generic3.png"></a> <em>Fig. 2.13. Filtre <strong>Patterns / Halftone [Generic]</strong> avec un motif personnalisé.</em></p>
<p>D’un point de vue algorithmique, l’idée est d’éroder ou dilater localement le motif donné en paramètre du filtre, pour encoder au mieux le niveau de gris de chacun des pixels de l’image d’entrée.</p>
<ul>
<li>Le filtre suivant a une histoire amusante : étant abonné au compte <em>Twitter</em> de l’artiste <a href="https://www.memo.tv/">Memo Akten</a>, je suis tombé un jour sur <a href="https://twitter.com/memotv/status/1556619064491102209">ce tweet</a> qui décrit un algorithme d’art génératif que Memo a imaginé (mais pas implémenté). Ce fut une bonne occasion d’essayer de l’implémenter en langage <em>G’MIC</em>, juste pour le plaisir d’expérimenter ! Une fois cela réalisé, créer un filtre utilisable dans le greffon <em>G’MIC-Qt</em> allait de soi. Il en résulte le filtre <strong>Rendering / Algorithm A</strong>, qui crée des illustrations abstraites dans un esprit très « <a href="https://fr.wikipedia.org/wiki/Piet_Mondrian">Mondrianesque</a> ».</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/algorithmA.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f616c676f726974686d412e706e67/algorithmA.png" alt="algorithmA" title="Source : https://gmic.eu/gmic325/thumbs/algorithmA.png"></a> <em>Fig. 2.14. Le filtre <strong>Patterns / Algorithm A</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<p>La génération des images repose largement sur le tirage de nombres aléatoires. D’une simple ligne de commande, on peut donc facilement produire plusieurs œuvres différentes à la suite :</p>
<pre><code class="sh">$ gmic repeat <span class="m">6</span> <span class="o">{</span> <span class="m">500</span>,500,1,3 fx_memoakten_algorithm_a<span class="o">[</span>-1<span class="o">]</span> <span class="s1">'$>'</span>,20,30,30,2,50,10,50,40,3,60,1,0,0,0,255,255,255,255,0,0,255,128,0,255,255,0,0,0,0 <span class="o">}</span> frame <span class="m">1</span>,1,0 frame <span class="m">5</span>,5,255 append_tiles <span class="m">3</span> output output.png</code></pre>
<p>ce qui synthétise l’image suivante :</p>
<p><a href="https://gmic.eu/gmic325/img/algorithmA2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f616c676f726974686d41322e706e67/algorithmA2.png" alt="algorithmA2" title="Source : https://gmic.eu/gmic325/thumbs/algorithmA2.png"></a> <em>Fig. 2.15. Patchwork d’« œuvres d’art », produites par le filtre <strong>Patterns / Algorithm A</strong>.</em></p>
<ul>
<li>Toujours afin de produire des images bizarres et abstraites, évoquons l’apparition du filtre <strong>Arrays & Tiles / Shuffle Patches</strong>, qui va décomposer une image d’entrée sous la forme d’un tableau d’imagettes (« <em>patchs</em> »), et mélanger spatialement ces <em>patchs</em> avant de les recoller pour produire l’image résultat. Différentes options sont proposées, permettant la rotation aléatoire des <em>patchs</em>, ou le recollage de <em>patchs</em> qui se superposent.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/shuffle_patches.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f73687566666c655f706174636865732e706e67/shuffle_patches.png" alt="shuffle_patches" title="Source : https://gmic.eu/gmic325/thumbs/shuffle_patches.png"></a> <em>Fig. 2.16. Le filtre <strong>Arrays & Tiles / Shuffle Patches</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<p>On obtient ainsi une image qui ressemble à un collage de différentes parties de l’image d’origine, avec des couleurs globalement similaires, mais où l’on perd l’ordre naturel des structures.</p>
<p><a href="https://gmic.eu/gmic325/img/shuffle_patches2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f73687566666c655f70617463686573322e706e67/shuffle_patches2.png" alt="shuffle_patches2" title="Source : https://gmic.eu/gmic325/thumbs/shuffle_patches2.png"></a> <em>Fig. 2.17. Effet du filtre <strong>Arrays & Tiles / Shuffle Patches</strong> sur une image de paysage.</em></p>
<p>Ici encore, nous pouvons appliquer ce filtre sur toutes les <em>frames</em> d’une vidéo, illustré avec l’exemple ci-dessous (vous aurez bien sûr reconnu le court-métrage <a href="https://fr.wikipedia.org/wiki/Big_Buck_Bunny"><em>Big Buck Bunny</em></a> de la <a href="https://fr.wikipedia.org/wiki/Fondation_Blender">fondation <em>Blender</em></a>).</p>
<p><a href="https://gmic.eu/gmic325/img/v_shuffle_patches.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f73687566666c655f706174636865732e706e67/v_shuffle_patches.png" alt="shuffle_patches2" title="Source : https://gmic.eu/gmic325/thumbs/v_shuffle_patches.png"></a> <em>Fig. 2.18. Le filtre <strong>Arrays & Tiles / Shuffle Patches</strong> appliqué sur la vidéo <a href="https://fr.wikipedia.org/wiki/Big_Buck_Bunny"><em>Big Buck Bunny</em></a> de la fondation Blender.</em></p>
<ul>
<li>Et pour clôre cette section sur les effets d’abstraction d’images, de <em>Glitch Art</em> et de génération de motifs, voici le filtre <strong>Patterns / Pills</strong>, qui crée une texture périodique ressemblant à un empilement de « pilules » tournées de 90° les unes par rapport aux autres.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/pills.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f70696c6c732e706e67/pills.png" alt="pills" title="Source : https://gmic.eu/gmic325/thumbs/pills.png"></a> <em>Fig. 2.19. Le filtre <strong>Patterns / Pills</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<p>Rien de très compliqué : ce filtre est une implémentation directe de la formule mathématique</p>
<p><a href="https://gmic.eu/gmic325/img/pills_formula.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f70696c6c735f666f726d756c612e706e67/pills_formula.png" alt="pills_formula" title="Source : https://gmic.eu/gmic325/thumbs/pills_formula.png"></a></p>
<p>Cette jolie formule a été imaginée par <a href="https://en.wikipedia.org/wiki/User:Drummyfish">Miloslav Číž</a>, et décrite sur <a href="https://commons.wikimedia.org/wiki/File:2D_function_pills.png">cette page</a>. Il était tentant d’en faire un nouveau filtre accessible à tout le monde !</p>
<p>Notons que nous pouvons produire cette même image de base, directement à partir de la formule initiale, en lançant encore une fois <code>gmic</code> en ligne de commande :</p>
<pre><code class="sh">$ gmic <span class="m">600</span>,600,1,1,<span class="s2">"X = x*30/w; Y = y*30/h; sqrt(abs(sin(X + cos(Y + sin(X + cos(Y)))) * sin(Y + cos(X + sin(Y + cos(X))))))"</span> normalize <span class="m">0</span>,255</code></pre>
<p>Le filtre <strong>Patterns / Pills</strong> dans le greffon <em>G’MIC-Qt</em> autorise néanmoins quelques variations additionnelles, comme la possibilité de spécifier un angle de rotation ou de créer ces motifs indépendamment pour chacun des canaux <em>RGB</em> de l’image de sortie.</p>
<h2 id="toc-3-nouveautés-concernant-le-traitement-des-couleurs">3. Nouveautés concernant le traitement des couleurs</h2>
<h3 id="toc-31-fonctionnalités-pour-les-luts-3d">3.1. Fonctionnalités pour les <em>LUTs</em> 3D</h3>
<p><em>G’MIC</em> est un logiciel de traitement d’images qui intègre nativement beaucoup de <a><em>LUTs 3D</em> couleur</a> différentes (1045 à ce jour), en particulier grâce à un algorithme performant de compression de <em>LUTs</em> issu de nos travaux de recherche (décrit dans <a href="//linuxfr.org/news/g-mic-2-7-0-une-rentree-pleine-de-style-pour-le-traitement-d-images#toc-4-toujours-plus-de-transformations-colorim%C3%A9triques">une dépêche précédente</a>). Ces <em>LUTs</em> 3D couleur définissent des fonctions de transformation des couleurs d’une image, souvent pour lui donner une ambiance particulière. Récemment, de nouvelles commandes pour faciliter la visualisation et la création de <em>LUTs</em> 3D couleur ont été ajoutées à <em>G’MIC</em> :</p>
<ul>
<li>La commande <a href="https://gmic.eu/reference/display_clut"><code>display_clut</code></a> fait le rendu 3D d’une <em>LUT</em> couleur, ce qui permet de visualiser la transformation <em>RGB → RGB</em> qu’elle représente. Par exemple, la commande :</li>
</ul>
<pre><code class="sh">$ gmic clut summer clut spy29 display_clut <span class="m">400</span> text_outline<span class="o">[</span><span class="m">0</span><span class="o">]</span> Summer text_outline<span class="o">[</span><span class="m">1</span><span class="o">]</span> <span class="s2">"Spy 29"</span></code></pre>
<p>affichera :</p>
<p><a href="https://gmic.eu/gmic325/img/display_clut.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f646973706c61795f636c75742e706e67/display_clut.png" alt="display_clut" title="Source : https://gmic.eu/gmic325/thumbs/display_clut.png"></a> <em>Fig. 3.1.1. La commande <code>display_clut</code> affiche une vue 3D d’une _LUT</em> couleur._</p>
<ul>
<li>La commande <a href="https://gmic.eu/reference/random_clut"><code>random_clut</code></a>, quant à elle, produit une <em>LUT</em> 3D couleur aléatoire, possédant certaines propriétés de continuité des couleurs. Par exemple, la commande suivante :</li>
</ul>
<pre><code class="sh">$ gmic sample colorful resize2dx <span class="m">320</span> repeat <span class="m">4</span> <span class="o">{</span> random_clut +map_clut<span class="o">[</span><span class="m">0</span><span class="o">]</span> <span class="o">[</span>-1<span class="o">]</span> display_clut<span class="o">[</span>-2<span class="o">]</span> <span class="m">320</span> to_rgb<span class="o">[</span>-2<span class="o">]</span> append<span class="o">[</span>-2,-1<span class="o">]</span> y <span class="o">}</span> frame <span class="m">2</span>,2,0 to_rgba append x,1</code></pre>
<p>synthétisera une image du style de celle ci-dessous :</p>
<p><a href="https://gmic.eu/gmic325/img/random_clut.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f72616e646f6d5f636c75742e706e67/random_clut.png" alt="random_clut" title="Source : https://gmic.eu/gmic325/thumbs/random_clut.png"></a> <em>Fig. 3.1.2. Différentes _LUTs</em> 3D couleur aléatoires, obtenues via la commande <code>random_clut</code>, et appliquées sur une image couleur._</p>
<h3 id="toc-32-nouveaux-filtres-couleurs-pour-le-greffon-gmic-qt">3.2. Nouveaux filtres couleurs pour le greffon <em>G'MIC-QT</em>.</h3>
<ul>
<li>Assez logiquement, la commande <code>random_clut</code> est à la base de l’implémentation du nouveau filtre <strong>Colors / Random Color Transformation</strong>, apparu dans le greffon <em>G’MIC-Qt</em>, qui applique une transformation colorimétrique aléatoire sur une image d’entrée.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/random_color_transformation.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f72616e646f6d5f636f6c6f725f7472616e73666f726d6174696f6e2e706e67/random_color_transformation.png" alt="random_color_transformation" title="Source : https://gmic.eu/gmic325/thumbs/random_color_transformation.png"></a> <em>Fig. 3.2.1. Le filtre <strong>Colors / Random Color Transformation</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<ul>
<li>Pour rester dans le domaine des <em>LUTs</em> 3D couleur, mentionnons l’apparition du filtre <strong>Colors / Apply From CLUT Set</strong>, qui permet de transformer une image couleur en lui appliquant l’une des <em>LUTs</em> 3D définies dans un <em>pack</em> de <em>LUTs</em>, stocké lui-même sous la forme d’un fichier d’extension <code>.gmz</code>.</li>
</ul>
<p>Quelques explications sont nécessaires : le format de fichier <code>.gmz</code> est implémenté et utilisé par <em>G’MIC</em> pour la sérialisation et la sauvegarde de données binaires génériques compressées.<br>
Ainsi, comment produire un fichier <code>.gmz</code> stockant un ensemble de <em>LUTs</em> 3D couleur compressées, pour alimenter le filtre <strong>Colors / Random Color Transformation</strong> ? Prenons l’exemple concret du <em>pack</em> de 10 <em>LUTs</em> proposé gracieusement <a href="https://www.editingcorp.com/free-hand-picked-luts-for-cinematic-color-grading/">sur cette page web</a>. Ces <em>LUTs</em> sont distribuées en format <code>.cube</code>, le format le plus répandu pour le stockage des <em>LUTs</em> 3D couleur. Ces 10 fichiers occupent <strong>8.7 Mo</strong> sur le disque.</p>
<p><a href="https://gmic.eu/gmic325/img/clut_set2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f636c75745f736574322e706e67/clut_set2.png" alt="clut_set2" title="Source : https://gmic.eu/gmic325/thumbs/clut_set2.png"></a> <em>Fig. 3.2.2. Visualisation des 10 LUTs 3D couleur de notre cas d’exemple.</em></p>
<p>La commande suivante les compresse (avec des pertes visuellement imperceptibles) grâce à l’algorithme de compression de <em>LUTs</em> de <em>G’MIC</em>, en un fichier <a href="https://gmic.eu/gmic325/img/clut_pack.gmz"><code>clut_pack.gmz</code></a> de <strong>156 Ko</strong>. Attention, ce processus de compression est long (plusieurs dizaines de minutes) !</p>
<pre><code class="sh">$ gmic *.cube compress_clut , output clut_pack.gmz</code></pre>
<p>Une fois ce fichier de <em>pack</em> de <em>LUTs</em> généré, ces 10 transformations couleur sont disponibles, via le filtre <strong>Colors / Apply From CLUT Set</strong>, en lui spécifiant le fichier <code>clut_pack.gmz</code> en paramètre, comme illustré ci-dessous.</p>
<p><a href="https://gmic.eu/gmic325/img/clut_set.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f636c75745f7365742e706e67/clut_set.png" alt="clut_set" title="Source : https://gmic.eu/gmic325/thumbs/clut_set.png"></a> <em>Fig. 3.2.3. Le filtre <strong>Colors / Apply From CLUT Set</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<p>Voilà donc un filtre évitant de stocker des <em>packs</em> de <em>LUTs</em> 3D couleur de plusieurs méga-octets sur son disque !</p>
<ul>
<li>Toujours dans le thème des transformations colorimétriques, voici le filtre récent <strong>Colors / Vibrance</strong>, qui rend les couleurs de vos images toujours plus chatoyantes. Ce n’est pas le premier filtre de ce type disponible dans <em>G’MIC</em>, mais on dispose ainsi d’une alternative aux algorithmes similaires déjà présents. Ce filtre émane de l’utilisateur <a href="https://discuss.pixls.us/u/age/"><em>Age</em></a>, qui participe occasionnellement aux discussions sur notre <a href="https://discuss.pixls.us/c/software/gmic/">forum</a>, hébergé par nos amis de <a href="https://discuss.pixls.us/">PIXLS.US</a> (dont <a href="https://patdavid.net/">Pat David</a>, également contributeur au projet <a href="https://www.gimp.org">GIMP</a>, est l’instigateur).</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/vibrance.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f76696272616e63652e706e67/vibrance.png" alt="vibrance" title="Source : https://gmic.eu/gmic325/thumbs/vibrance.png"></a> <em>Fig. 3.2.4. Le filtre <strong>Colors / Vibrance</strong>, tel qu’il apparaît dans le greffon G’MIC-Qt.</em></p>
<h3 id="toc-33-commandes-color2name-et-name2color">3.3. Commandes <code>color2name</code> et <code>name2color</code>
</h3>
<p>Dernière nouveauté concernant les couleurs : les deux commandes <a href="https://gmic.eu/reference/color2name"><code>color2name</code></a> et <a href="https://gmic.eu/reference/name2color"><code>name2color</code></a>, qui convertissent un code couleur <em>RGB</em> en un nom de couleur (en anglais), et inversement. Un exemple d’utilisation est :</p>
<pre><code class="sh">$ gmic <span class="m">27</span>,1,1,3 rand <span class="m">0</span>,255 split x foreach <span class="o">{</span> color2name <span class="o">{</span>^<span class="o">}</span> resize <span class="m">300</span>,100 text_outline <span class="s1">'${}'</span>,0.5~,0.5~,28 <span class="o">}</span> frame <span class="m">1</span>,1,0 append_tiles <span class="m">3</span></code></pre>
<p>Cette commande construit un tableau de couleurs aléatoires nommées, sous la forme d’une image telle que :</p>
<p><a href="https://gmic.eu/gmic325/img/color2name.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f636f6c6f72326e616d652e706e67/color2name.png" alt="color2name" title="Source : https://gmic.eu/gmic325/thumbs/color2name.png"></a> <em>Fig. 3.3.1. Exemple d’utilisation de la commande <code>color2name</code> pour nommer des couleurs aléatoires.</em></p>
<p>Les associations entre les 881 noms de couleurs reconnues par ces commandes et leurs codes <em>RGB</em> respectifs ont été récupérées <a href="https://en.wikipedia.org/wiki/Lists_of_colors">de cette page Wikipédia</a>. Ci-dessous, l’ensemble de ces 881 couleurs visualisées dans le cube <em>RGB</em> :</p>
<p><a href="https://gmic.eu/gmic325/img/color2name3d.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f636f6c6f72326e616d6533642e706e67/color2name3d.png" alt="color2name3d" title="Source : https://gmic.eu/gmic325/thumbs/color2name3d.png"></a> <em>Fig. 3.3.2. Ensemble des couleurs nommées connues par la commande <code>color2name</code>.</em></p>
<h2 id="toc-4-maillages-3d-et-ensembles-de-voxels">4. Maillages 3D et ensembles de voxels</h2>
<p>Saviez vous que <em>G’MIC</em> était aussi capable de manipuler des <a href="https://fr.wikipedia.org/wiki/Mesh_(objet)">objets 3D maillés</a> (« <em>3D Mesh</em> » en anglais), en plus de gérer des images conventionnelles ? Et même si la modélisation et la visualisation 3D ne sont pas centrales dans les objectifs du projet, plusieurs ajouts intéressants ont été implémentés dans ce domaine.</p>
<h3 id="toc-41-import-dobjet-en-format-wavefront">4.1. Import d'objet en format <em>Wavefront</em>
</h3>
<p>Tout d’abord, <em>G’MIC</em> peut désormais importer des objets 3D en format <code>.obj</code> <a href="https://fr.wikipedia.org/wiki/Objet_3D_(format_de_fichier)"><em>Wavefront</em></a>, alors que seul l’export dans ce format était possible auparavant (export qui a d’ailleurs été amélioré). Toutes les caractéristiques du format <code>.obj</code> ne sont cependant pas prises en compte, mais l’import de la géométrie de l’objet, de ses couleurs et de ses textures fonctionnent en général. Ainsi, la commande :</p>
<pre><code class="sh">$ gmic luigi3d.obj display3d</code></pre>
<p>permet d’importer un objet 3D et de le visualiser dans une nouvelle fenêtre, comme l’illustre l’animation ci-dessous. Attention, le visualiseur intégré à <em>G’MIC</em> n’utilise pas les possibilités des <em>GPUs</em> pour l’accélération graphique. Le rendu peut donc être assez lent si le maillage comporte beaucoup de primitives (une piste d’amélioration pour le futur ?).</p>
<p><a href="https://gmic.eu/gmic325/img/v_luigi3d.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f696d672f765f6c7569676933642e676966/v_luigi3d.gif" alt="luigi3d" title="Source : https://gmic.eu/gmic325/img/v_luigi3d.gif"></a> <em>Fig. 4.1.1. Import et visualisation d’un maillage 3D texturé dans G’MIC.</em></p>
<p>Naturellement, nous avons intégré cette nouvelle fonctionnalité d’import de maillages 3D dans le greffon <em>G’MIC-Qt</em>, avec le nouveau filtre <strong>Rendering / 3D Mesh</strong>, qui permet d’importer un fichier <code>.obj</code> et d’en insérer un rendu 3D dans une image, comme l’illustre la vidéo ci-dessous :</p>
<p><a href="https://gmic.eu/gmic325/img/v_mesh3d.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f6d65736833642e706e67/v_mesh3d.png" alt="mesh3d" title="Source : https://gmic.eu/gmic325/thumbs/v_mesh3d.png"></a> <em>Fig. 4.1.2 Le filtre <strong>Rendering / 3D Mesh</strong> en action, dans le greffon G’MIC-Qt.</em></p>
<p>On l’utilisera typiquement pour importer un objet 3D du type que l’on souhaite dessiner, pour l’orienter dans l’espace, et s’en servir comme « guide » de dessin, soit en le redessinant complètement sur un calque supérieur, soit en utilisant un des nombreux filtres de <em>G’MIC</em>, par exemple pour en faire un rendu <em>cartoon</em> ou peinture.</p>
<h3 id="toc-42-outils-de-transformation-des-maillages-3d">4.2. Outils de transformation des maillages 3D.</h3>
<p>Que faire d’autre, une fois un maillage 3D chargé en mémoire ? <em>G’MIC</em> s’est doté des fonctionnalités suivantes :</p>
<ul>
<li>L’extraction des textures de l’objet 3D, grâce à la nouvelle commande <a href="https://gmic.eu/reference/extract_textures3d"><code>extract_textures3d</code></a>. Les trois figures suivantes illustrent un cas d’utilisation, avec l’exemple d’un objet 3D maillé de chat dont la texture est extraite, transformée avec un filtre de stylisation (basé sur le modèle de l’estampe japonaise <a href="https://fr.wikipedia.org/wiki/La_Grande_Vague_de_Kanagawa">La Grande Vague de Kanagawa</a>), puis réappliquée sur le chat.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/cat_obj.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6361745f6f626a2e706e67/cat_obj.png" alt="cat_obj" title="Source : https://gmic.eu/gmic325/thumbs/cat_obj.png"></a> <em>Fig. 4.2.1. Vue d’un objet 3D maillé representant un chat, avec sa texture.</em></p>
<p><a href="https://gmic.eu/gmic325/img/cat_textures.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6361745f74657874757265732e706e67/cat_textures.png" alt="cat_textures" title="Source : https://gmic.eu/gmic325/thumbs/cat_textures.png"></a> <em>Fig. 4.2.2. Extraction et stylisation des textures, via la commande <code>extract_textures3d</code>.</em></p>
<p><a href="https://gmic.eu/gmic325/img/v_extract_texture3d.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f657874726163745f7465787475726533642e706e67/v_extract_texture3d.png" alt="v_extract_texture3d" title="Source : https://gmic.eu/gmic325/thumbs/v_extract_texture3d.png"></a> <em>Fig. 4.2.3. Visualisation du maillage 3D original et de sa version stylisée.</em></p>
<ul>
<li>On peut également subdiviser les faces d’un objet 3D, grâce à la nouvelle commande <a href="https://gmic.eu/reference/subdivide3d"><code>subdivide3d</code></a>.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/subdivide3d.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f73756264697669646533642e706e67/subdivide3d.png" alt="subdivide3d" title="Source : https://gmic.eu/gmic325/thumbs/subdivide3d.png"></a> <em>Fig. 4.2.4. Subdivision des faces d’un maillage 3D de tore, par la commande <code>subdivide3d</code>.</em></p>
<ul>
<li>On peut convertir un objet 3D <strong>texturé</strong> en objet uniquement <strong>coloré</strong>, avec la commande <a href="https://gmic.eu/reference/primitives3d"><code>primitives3d</code></a>. La commande suivante applique ce processus sur l’objet <em>Luigi3d</em> introduit précédemment, pour lui retirer sa texture et la remplacer par des faces colorées :</li>
</ul>
<pre><code class="sh">$ gmic luigi3d.obj primitives3d <span class="m">2</span> output luigi3d_no_textures.obj</code></pre>
<p><a href="https://gmic.eu/gmic325/img/primitives3d.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f7072696d69746976657333642e706e67/primitives3d.png" alt="primitives3d" title="Source : https://gmic.eu/gmic325/thumbs/primitives3d.png"></a> <em>Fig. 4.2.5. Conversion des primitives texturées en primitives colorées uniquement, avec la commande <code>primitives3d</code>.</em></p>
<p>La couleur de chaque face est calculée comme la moyenne des couleurs à chacun des sommets composant la face. Pour les grandes faces, cela peut donc être très utile de subdiviser l’objet préalablement pour obtenir une résolution de texture colorée suffisante dans l’objet final (avec la commande <code>subdivide3d</code>).</p>
<ul>
<li>Enfin, on peut également convertir l’objet maillé 3D sous forme d’une image <strong>volumique</strong> contenant un ensemble de <strong>voxels</strong>, grâce à la nouvelle commande <a href="https://gmic.eu/reference/voxelize3d"><code>voxelize3d</code></a>. Cette commande convertit toutes les primitives de base composant un objet 3D (points, faces, segments, sphères), sous la forme de primitives discrètes tracées dans l’image volumique. Par exemple, la commande :</li>
</ul>
<pre><code class="sh">$ gmic skull.obj voxelize3d <span class="m">256</span>,1,1 output skull_voxelized.tif display_voxels3d</code></pre>
<p>va transformer le maillage du crane illustré ci-dessous, sous la forme d’une image volumique de voxels en couleurs, que l’on va pouvoir visualiser avec la nouvelle commande <a href="https://gmic.eu/reference/display_voxels3d"><code>display_voxels3d</code></a>. D’où un rendu très « <a href="https://fr.wikipedia.org/wiki/Minecraft">Minecraftien</a> » (representé ci-dessous pour différentes résolutions de voxélisation) :</p>
<p><a href="https://gmic.eu/gmic325/img/voxelize3d.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f766f78656c697a6533642e706e67/voxelize3d.png" alt="voxelize3d" title="Source : https://gmic.eu/gmic325/thumbs/voxelize3d.png"></a> <em>Fig. 4.2.6. Conversion d’un maillage 3D texturé sous forme d’images volumiques composé de voxels colorés, avec la commande <code>voxelize3d</code>.</em></p>
<p>Cette fonctionnalité servira, par exemple, aux personnes étudiant le domaine de la géométrie discrète, qui pourront facilement générer des objets discrets 3D complexes à partir de maillages (souvent plus faciles à produire que leurs équivalents discrets !). La vidéo ci-dessous illustre le rendu d’un objet 3D discret obtenu de cette façon :</p>
<p><a href="https://gmic.eu/gmic325/img/v_nounours.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f6e6f756e6f7572732e706e67/v_nounours.png" alt="v_display_voxels3d" title="Source : https://gmic.eu/gmic325/thumbs/v_nounours.png"></a> <em>Fig. 4.2.7. Vidéo de visualisation d’un maillage 3D complexe voxélisé par la commande <code>voxelize3d</code>.</em></p>
<h3 id="toc-43-outils-de-génération-de-maillages-3d">4.3. Outils de génération de maillages 3D</h3>
<p>Pour conclure cette partie dédiée aux maillages 3D dans <em>G’MIC</em>, mentionnons l’apparition de quelques commandes récentes, en vrac, pour la génération procédurale d’objets 3D maillés :</p>
<ul>
<li>Les commandes <a href="https://gmic.eu/reference/shape_menger"><code>shape_menger</code></a> et <a href="https://gmic.eu/reference/shape_mosely"><code>shape_mosely</code></a> produisent des représentation volumiques (images de voxels) des objets mathématiques fractals suivants : L’<a href="https://fr.wikipedia.org/wiki/%C3%89ponge_de_Menger">éponge de Menger</a> et le <a href="https://fr.wikipedia.org/wiki/Flocon_de_Mosely">flocon de Mosely</a>.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/menger_sponge.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6d656e6765725f73706f6e67652e706e67/menger_sponge.png" alt="menger_sponge" title="Source : https://gmic.eu/gmic325/thumbs/menger_sponge.png"></a> <em>Fig. 4.3.1. Rendus 3D de l’éponge de Menger et du flocon de Mosely, crées avec les commandes <code>shape_menger</code> et <code>shape_mosely</code>.</em></p>
<p><a href="https://gmic.eu/gmic325/img/v_menger_sponge.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f6d656e6765725f73706f6e67652e706e67/v_menger_sponge.png" alt="v_menger_sponge" title="Source : https://gmic.eu/gmic325/thumbs/v_menger_sponge.png"></a> <em>Fig. 4.3.2. Vidéo d’une éponge de Menger, rendue par G’MIC.</em></p>
<ul>
<li>La commande <a href="https://gmic.eu/reference/chainring3d"><code>chainring3d</code></a> produit un anneau 3D de tores colorés :</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/v_chainring3d.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f696d672f765f636861696e72696e6733642e676966/v_chainring3d.gif" alt="chainring3d" title="Source : https://gmic.eu/gmic325/img/v_chainring3d.gif"></a> <em>Fig. 4.3.3. Rendu d’un anneau 3D de tores colorés, avec la commande <code>chainring3d</code>.</em></p>
<ul>
<li>La commande <a href="https://gmic.eu/reference/curve3d"><code>curve3d</code></a> génère le maillage 3D d’une courbe paramétrée <code>t → (x(t),y(t),z(t))</code> avec optionnellement une épaisseur de rayon <code>r(t)</code>, elle aussi paramétrée.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/v_curve3d_2.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f696d672f765f637572766533642e676966/v_curve3d.gif" alt="curve3d" title="Source : https://gmic.eu/gmic325/img/v_curve3d.gif"></a> <em>Fig. 4.3.4. Rendu d’une courbe 3D paramétrée, créé par la commande <code>curve3d</code>.</em></p>
<ul>
<li>La commande <a><code>sphere3d</code></a> peut maintenant produire des maillages 3D de sphères par trois méthodes différentes : 1. la subdivision d’isocahèdres, 2. la subdivision de cubes, et 3. la discrétisation angulaire en coordonnées sphériques. Les voici illustrées de gauche à droite, ci-dessous :</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/sphere3d.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f73706865726533642e706e67/sphere3d.png" alt="sphere3d" title="Source : https://gmic.eu/gmic325/thumbs/sphere3d.png"></a> <em>Fig. 4.3.5. Production de maillages 3D de sphères, avec trois algorithmes de maillage différents, via la commande <code>sphere3d</code>.</em></p>
<p>En pratique, toutes ces nouvelles commandes de création de maillages 3D peuvent s’insérer dans des <em>pipelines</em> <em>G’MIC</em> plus complexes, afin de construire des objets 3D sophistiqués de manière procédurale. Ces maillages pourront ensuite être exportés en fichier <code>.obj</code>. En voici l’illustration, avec la création d’un anneau de chaines récursif qui a été d’abord généré par <em>G’MIC</em> (utilisant d’ailleurs la commande <code>chainring3d</code> comme élément de base), puis importé dans <a href="https://www.blender.org"><em>Blender</em></a> :</p>
<p><a href="https://gmic.eu/gmic325/img/antoine3d_blender.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f616e746f696e6533645f626c656e6465722e706e67/antoine3d_blender.png" alt="antoine3d" title="Source : https://gmic.eu/gmic325/thumbs/antoine3d_blender.png"></a> <em>Fig. 4.3.6. Génération procédurale d’objet faite en G’MIC, puis importé dans Blender.</em></p>
<h2 id="toc-5-autres-nouveautés">5. Autres nouveautés</h2>
<p>Cette dernière section livre quelques autres informations liées au projet, sans ordre précis.</p>
<h3 id="toc-51-amélioration-diverses-du-greffon-gmic-qt">5.1. Amélioration diverses du greffon G’MIC-Qt</h3>
<p>Beaucoup de travail a été accompli sur le code du greffon <em>G’MIC-Qt</em>, même si cela n’est pas forcément visible au premier abord. Citons en particulier :</p>
<ul>
<li>Des <strong>optimisations importantes</strong> du code qui améliorent le temps de démarrage du greffon : la fenêtre du greffon s’affiche plus rapidement, l’analyseur des filtres est plus efficace, notamment grâce à l’utilisation d’un cache binaire stockant les informations des filtres analysés après une mise à jour.</li>
<li>Des <strong>améliorations</strong> concernant la <strong>stabilité</strong> du greffon. Il gère mieux les <em>threads</em> lancés par des filtres non terminés.</li>
<li>Un changement du thème de l’interface, qui passe par défaut <strong>en mode sombre</strong> (« <em>Dark Mode</em> »).</li>
<li>Le temps d’exécution d’un filtre apparaît maintenant lorsque l’on clique sur le bouton « <em>Apply</em> ».</li>
<li>Un nouveau système de gestion des <strong>sources externes de filtres</strong> : il devient facile pour un développeur de partager ses filtres <em>G’MIC</em> personnalisés avec un utilisateur, en lui fournissant un fichier ou une URL pointant vers leur implémentation (à la manière des <em><a href="https://doc.ubuntu-fr.org/ppa">PPA</a></em> pour les gestionnaires de paquets sous <em>Ubuntu</em>).</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/filter_sources.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f66696c7465725f736f75726365732e706e67/filter_sources.png" alt="filter_sources" title="Source : https://gmic.eu/gmic325/thumbs/filter_sources.png"></a> <em>Fig. 5.1.1. Le nouveau système de gestion des sources de filtres externes dans le greffon _G’MIC-Qt</em>._</p>
<ul>
<li>Le greffon offre un moyen aux filtres de conserver des données persistantes dans un cache en mémoire, lors d’appels consécutifs. Cela permet aux filtres ayant besoin de charger ou générer des données volumineuses, de ne le faire qu’une fois, et de les réutiliser lors des appels suivants. Ce système est par exemple utilisé par le filtre <strong>Rendering / 3D Mesh</strong> pour stocker l’objet 3D lu à partir d’un fichier.</li>
<li>Le code du greffon a été modifié pour faciliter un future portage vers la version 6 de la bibliothèque <em>Qt</em>.</li>
<li><p>Grâce au travail de <a href="https://github.com/0xC0000054">Nicholas Hayes</a>, le greffon <em>G’MIC-Qt</em> est maintenant disponible sur le <a href="https://exchange.adobe.com/apps/cc/109191/gmic"><em>Marketplace</em> d’<em>Adobe</em></a>. L’installation du greffon est donc maintenant facilitée pour les utilisateurs de <a href="https://fr.wikipedia.org/wiki/Adobe_Photoshop">Photoshop</a>.</p></li>
<li><p>Mentionnons enfin la mise à jour du greffon pour la dernière version de <a href="https://www.digikam.org/">Digikam</a> (la <em>8.0.0</em>), grâce au travail de <a href="https://invent.kde.org/cgilles">Gilles Caulier</a>. Une <a href="https://docs.digikam.org/en/image_editor/enhancement_tools.html#g-mic-qt-tool">documentation fournie</a> a été mise en ligne sur le site de <em>Digikam</em>.</p></li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/digikam.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f646967696b616d2e706e67/digikam.png" alt="digikam" title="Source : https://gmic.eu/gmic325/thumbs/digikam.png"></a> <em>Fig. 5.1.2. Le greffon G’MIC-Qt est disponible directement depuis Digikam, logiciel libre de gestion de photographies.</em></p>
<h3 id="toc-52-amélioration-de-la-bibliothèque-standard-stdgmic">5.2. Amélioration de la bibliothèque standard <code>stdgmic</code>
</h3>
<p>La bibliothèque standard de <em>G’MIC</em> (<a href="https://raw.githubusercontent.com/GreycLab/gmic/develop/src/gmic_stdlib.gmic"><code>stdgmic</code></a>) contient l’ensemble des commandes non natives, écrites directement en langage <em>G’MIC</em>, et distribuées par défaut avec le cadriciel. En pratique, la grand majorité des commandes existantes rentrent dans ce cadre. En plus des nouvelles commandes déjà décrites plus haut, notons les ajouts et améliorations suivantes dans la <code>stdgmic</code> :</p>
<ul>
<li>La bibliothèque <code>nn_lib</code>, permettant l’<strong>apprentissage de réseaux de neurones</strong> simples, se dote de nouveaux modules (<em>Softmax Layer</em>, <em>Cross-Entropy Loss</em>, <em>Binary Cross-Entropy Loss</em>, <em>Conv3D</em>, <em>Maxpool3D</em> et <em>PatchUp/PatchDown 2D/3D</em>). Son développement avance doucement. Elle est déjà utilisée par le filtre <strong>Repair / Denoise</strong>, <a href="//linuxfr.org/news/sortie-de-g-mic-3-0-une-troisieme-dose-pour-un-traitement-efficace-de-vos-images#toc-22-am%C3%A9lioration-dimages">déjà mentionné</a> dans notre précédente dépêche. Nous avons aussi implémenté quelques exemples « jouets » d’apprentissage statistique utilisant cette bibliothèque, comme par exemple l’apprentissage d’une fonction <em>(x,y) → (R,G,B)</em> représentant une image. L’idée ici est d’apprendre à un réseau de neurones à reproduire une image couleur, en lui fournissant comme données d’apprentissage les coordonnées <em>(x,y)</em> des points de l’image (en entrée) et leurs couleurs <em>(R,G,B)</em> correspondantes (en sortie). La figure ci-dessous montre l’image globale reconstruite par le réseau au fur et à mesure des itérations d’apprentissage :</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/nnlib_xytorgb.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6e6e6c69625f7879746f7267622e706e67/nnlib_xytorgb.png" alt="nnlib" title="Source : https://gmic.eu/gmic325/thumbs/nnlib_xytorgb.png"></a> <em>Fig. 5.2.1. Apprentissage par réseaux de neurones d’une fonction (x,y) → (R,G,B) représentant une image. Les différentes itérations du processus d’apprentissage sont affichées.</em></p>
<p>La séquence d’apprentissage complète est visible dans la vidéo ci-dessous :</p>
<p><a href="https://gmic.eu/gmic325/img/v_nnlib_xytorgb.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f6e6e6c69625f7879746f7267622e706e67/v_nnlib_xytorgb.png" alt="v_nnlib" title="Source : https://gmic.eu/gmic325/thumbs/v_nnlib_xytorgb.png"></a> <em>Fig. 5.2.2. Séquence des itérations d’apprentissage du réseau de neurones, pour l’apprentissage d’une fonction (x,y) → (R,G,B) représentant une image.</em></p>
<p>Nous avons également des exemples fonctionnels de la <code>nn_lib</code> pour classifier automatiquement des images simples (provenant entre autres des jeux de données <a href="http://yann.lecun.com/exdb/mnist/"><em>MNIST</em></a> et <a href="https://github.com/zalandoresearch/fashion-mnist"><em>Fashion MNIST</em></a>). <em>G’MIC</em> peut donc potentiellement détecter le contenu de certaines images, comme illustré ci dessous avec la classification de chiffres manuscrits (nous avons en stock une méthode similaire pour la détection de visages humains).</p>
<p><a href="https://gmic.eu/gmic325/img/mnist.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6d6e6973742e706e67/mnist.png" alt="mnist" title="Source : https://gmic.eu/gmic325/thumbs/mnist.png"></a> <em>Fig. 5.2.3. Classification automatique d’images de chiffres manuscrits (base de données _MNIST</em>) par réseau de neurones, via l’utilisation de la bibliothèque <code>nn_lib</code> de G’MIC_.</p>
<p>Un début de documentation sur l’utilisation de cette bibliothèque d’apprentissage statistique en langage <em>G’MIC</em> est disponible sur <a href="https://discuss.pixls.us/t/neural-networks-in-gmic-an-introduction-to-the-api-of-nn-lib/33536">notre forum de discussion</a>.</p>
<ul>
<li>Autre fonctionnalité de la <code>stdgmic</code> : la commande <a href="https://gmic.eu/reference/match_icp"><code>match_icp</code></a> implémente l’algorithme appelé « <a href="https://fr.wikipedia.org/wiki/Iterative_Closest_Point">Iterative Closest Point</a> » (<em>ICP</em>), qui met en correspondance deux ensembles de vecteurs à <em>N</em> dimensions. Cette commande peut servir à déterminer la transformation géométrique rigide (rotation + translation) entre deux <em>frames</em> d’une animation, et cela, même en présence de bruit. L’animation ci-dessous illustre ce processus, avec deux transformations rigides estimées par <em>ICP</em>, pour recaler respectivement les silhouettes d’étoile et de coeur.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/v_icp.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f696d672f765f6963702e676966/v_icp.gif" alt="lineaa" title="Source : https://gmic.eu/gmic325/img/v_icp.gif"></a> <em>Fig. 5.2.4. Recalage de silhouettes par algorithme d’« Iterative Closest Point », via la commande <code>match_icp</code>.</em></p>
<ul>
<li>Signalons aussi les nouvelles commandes <a href="https://gmic.eu/reference/img2patches"><code>img2patches</code></a> et <a href="https://gmic.eu/reference/patches2img"><code>patches2img</code></a> :
elles permettent respectivement la décomposition d’une image en un empilement volumique d’imagettes (« <em>patchs</em> ») et sa récomposition, éventuellement en prenant en compte des <em>patchs</em> qui se superposent. Par exemple, la commande :</li>
</ul>
<pre><code class="sh">$ gmic butterfly.jpg img2patches <span class="m">64</span></code></pre>
<p>va transformer l’image d’entrée (à gauche ci-dessous) en un empilement volumique de <em>patchs</em> (image de droite) :</p>
<p><a href="https://gmic.eu/gmic325/img/img2patches0.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f696d673270617463686573302e706e67/img2patches0.png" alt="img2patches0" title="Source : https://gmic.eu/gmic325/thumbs/img2patches0.png"></a> <em>Fig. 5.2.5. Transformation d’une image couleur en un empilement volumique de _patchs</em>, par la commande <code>img2patches</code>._</p>
<p>On peut ensuite traiter cet ensemble de <em>patchs</em>, par exemple en les triant dans l’ordre croissant de leur variance (donc du niveau de détails qu’ils contiennent), avant de recomposer l’image. Comme avec la commande suivante :</p>
<pre><code class="sh">$ gmic sample butterfly W,H:<span class="o">=</span>w,h img2patches <span class="m">64</span>,0,3 split z sort_list +,iv append z patches2img <span class="s1">'$W,$H'</span></code></pre>
<p>Ceci produit l’image ci-dessous, où les <em>patchs</em> sont de plus en plus détaillés au fur et à mesure que l’on descend dans l’image.</p>
<p><a href="https://gmic.eu/gmic325/img/img2patches.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f696d6732706174636865732e706e67/img2patches.png" alt="img2patches" title="Source : https://gmic.eu/gmic325/thumbs/img2patches.png"></a> <em>Fig. 5.2.6. Tri des patchs d’une image par ordre de détail croissant.</em></p>
<ul>
<li>La nouvelle commande <a href="https://gmic.eu/reference/line_aa"><code>line_aa</code></a>, implémente l’algorithme de <a href="https://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Xiaolin_Wu">Xiaolin Wu</a> pour le tracé de segments <a href="https://fr.wikipedia.org/wiki/Anticr%C3%A9nelage"><em>anti-aliasées</em></a>, c’est-à-dire qu’elle essaye de minimiser l’effet de crénelage qui apparaît classiquement lors du tracé de primitives dans des images discrètes.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/lineaa.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6c696e6561612e706e67/lineaa.png" alt="lineaa" title="Source : https://gmic.eu/gmic325/thumbs/lineaa.png"></a> <em>Fig. 5.2.7. Comparaison des rendus de tracés de segments, entre l’algorithme classique de Brensenham et l’algorithme de Xiaolin Wu implémenté par la commande <code>line_aa</code>.</em></p>
<ul>
<li>Pour achever cette section sur la bibliothèque standard de <em>G’MIC</em>, mentionnons l’arrivée des commandes <a href="https://gmic.eu/reference/ssim"><code>ssim</code></a> (calcul de la mesure « <em><a href="https://fr.wikipedia.org/wiki/Structural_Similarity">Structural Similarity</a></em> » entre deux images), <a href="https://gmic.eu/reference/opening"><code>opening</code></a>, <a href="https://gmic.eu/reference/opening_circ"><code>opening_circ</code></a>, <a href="https://gmic.eu/reference/closing"><code>closing</code></a>, <a href="https://gmic.eu/reference/closing_circ"><code>closing_circ</code></a> (ouverture et fermeture morphologiques avec élément structurant carré ou circulaire), <a href="https://gmic.eu/reference/betti"><code>betti</code></a> (calcul des <a href="https://fr.wikipedia.org/wiki/Nombre_de_Betti">nombres de <em>Betti</em></a>, invariants topologiques de formes discrétisées en 2D ou 3D) et d’un nouveau mode de fusion de calque <code>shapeprevalent</code> pour la commande <a href="https://gmic.eu/reference/blend"><code>blend</code></a>. Comme vous le voyez, il y a toujours de nouvelles choses à explorer ☺ !</li>
</ul>
<h3 id="toc-53-informations-diverses-liées-au-projet">5.3. Informations diverses liées au projet</h3>
<p>Pour terminer cette longue dépêche, voici en vrac, quelques informations générales sur le projet <em>G’MIC</em>.</p>
<ul>
<li>D’abord, un rappel de l’existence de greffons <a href="https://en.wikipedia.org/wiki/OpenFX_(API)"><em>OpenFX</em></a> embarquant les fonctionnalités de <em>G’MIC</em>, permettant donc d’appliquer la plupart de nos filtres dans les logiciels d’édition vidéo qui implémentent cette <em>API</em> (tels que <a href="https://fr.wikipedia.org/wiki/Natron_(logiciel)"><em>Natron</em></a> ou <a href="https://fr.wikipedia.org/wiki/Adobe_After_Effects"><em>Adobe After Effects</em></a>). Pour en savoir plus, voir <a href="https://discuss.pixls.us/t/gmic-for-openfx-and-adobe-plugins">le <em>post</em> dédié</a> de l’auteur de ces greffons, <a href="https://discuss.pixls.us/u/tobias_fleischer/">Tobias Fleischer</a>.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/after_effect.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f61667465725f6566666563742e706e67/after_effect.png" alt="openfx" title="Source : https://gmic.eu/gmic325/thumbs/after_effect.png"></a> <em>Fig. 5.3.1. Un des greffons OpenFX de G’MIC en action, dans le logiciel Adobe After Effects.</em></p>
<p><a href="https://gmic.eu/gmic325/img/natron.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6e6174726f6e2e706e67/natron.png" alt="openfx2" title="Source : https://gmic.eu/gmic325/thumbs/natron.png"></a> <em>Fig. 5.3.2. Un des greffons OpenFX de G’MIC en action, dans le logiciel Natron.</em></p>
<ul>
<li>Notre algorithme d’<a href="//linuxfr.org/news/g-mic-2-3-4-traiter-ses-images-en-se-disant-deja-10-ans#toc-2-illumination-automatique-de-dessins-coloris%C3%A9s-en-aplats">éclairage automatique de dessins colorisés en aplats</a>, mentionné lors d’une dépêche précédente (filtre <strong>Illuminate 2D Shape</strong>) a fait l’objet d’une publication en fin d’année 2022, à la conférence <a href="https://2022.ieeeicip.org/"><em>IEEE International Conference on Image Processing</em></a> à Bordeaux. Cette publication, intitulée « <em><a href="https://tschumperle.users.greyc.fr/publications/tschumperle_icip22.pdf">Automatic Illumination of Flat-Colored Drawings by 3D Augmentation of 2D Silhouettes</a></em> » détaille l’ensemble de l’algorithme implémenté dans ce filtre. Ce filtre est apprécié des illustrateurs, qui peuvent l’utiliser pour donner rapidement du relief à leurs dessins colorisés en aplats, comme le montre la vidéo suivante :</li>
</ul>
<p><a href="https://www.youtube.com/watch?v=WQ2u639FgyQ"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f796f75747562655f696c6c756d696e61746532645f73686170652e706e67/youtube_illuminate2d_shape.png" alt="illuminate_shape" title="Source : https://gmic.eu/gmic325/thumbs/youtube_illuminate2d_shape.png"></a> <em>Fig. 5.3.3. Tutoriel vidéo d’utilisation du filtre <strong>Illuminate 2D Shape</strong> pour l’éclairage automatique d’un dessin colorisé en aplats.</em></p>
<p>Les plus curieux de détails techniques sur l’algorithme pourront visualiser la présentation suivante, donnée à la conférence <em>ICIP’2022</em> :</p>
<p><a href="https://www.youtube.com/watch?v=PmWlan_8Qdo"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f796f75747562655f696c6c756d696e61746532645f73686170655f696369702e706e67/youtube_illuminate2d_shape_icip.png" alt="illuminate_shape2" title="Source : https://gmic.eu/gmic325/thumbs/youtube_illuminate2d_shape_icip.png"></a> <em>Fig. 5.3.4. Vidéo d’explication de l’algorithme à la base du filtre <strong>Illuminate 2D Shape</strong>.</em></p>
<ul>
<li>Notons que le langage de script de <em>G’MIC</em> est suffisamment flexible pour être utilisé, non seulement pour définir des filtres de traitement d’images, mais aussi pour élaborer des <strong>démonstrateurs interactifs</strong>. Au laboratoire <em>GREYC</em>, il nous a permis de développer deux bornes de démonstration autour du traitement d’images. Ces démonstrateurs sont exposés sur notre stand lors d’évènements grand-public (par exemple la <a href="https://www.fetedelascience.fr/">Fête de la Science</a>, ou le <a href="https://www.normandie-tourisme.fr/evenement/feno-festival-excellence-normande/">Festival de l’Excellence Normande</a>).</li>
</ul>
<p>Le premier de ces démonstrateurs est visible en cliquant sur l’image ci-dessous (présentation donnée par notre collègue <a href="https://simonl02.users.greyc.fr/">Loïc Simon</a>). Il illustre la problématique du « <em>transfert de style</em> » entre deux images. Il s’exécute sur une table tactile.</p>
<p><a href="https://www.vip-studio360.fr/galerie360/visites/vv-ensicaen/vv-ensicaen-2022-c.html?s=pano41&h=0&v=0.0000&f=90.0000&skipintro&norotation"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f64656d6f5f7461626c655f74616374696c652e706e67/demo_table_tactile.png" alt="demo_table_tactile" title="Source : https://gmic.eu/gmic325/thumbs/demo_table_tactile.png"></a> <em>Fig. 5.3.5. Aperçu du démonstrateur G’MIC de transfert de style (cliquez sur l’image pour accéder à la démo à 360°).</em></p>
<p>Le deuxième démonstrateur permet de jouer avec un miroir déformant interactif, comme montré dans la vidéo ci-dessous :</p>
<p><a href="https://gmic.eu/gmic325/img/v_greyc_warp.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f67726579635f776172702e706e67/v_greyc_warp.png" alt="greyc_warp" title="Source : https://gmic.eu/gmic325/thumbs/v_greyc_warp.png"></a> <em>Fig. 5.3.6. Démonstrateur interactif de déformation d’images, implémenté en langage G’MIC.</em></p>
<ul>
<li>À titre de projet personnel, j’ai commencé l’écriture d’un <a href="https://fr.wikipedia.org/wiki/Ray_tracing"><em>raytracer</em></a> simple en langage <em>G’MIC</em>, pour tester les capacités du langage. Le but n’est pas forcément d’aller très loin (par manque de temps, car c’est très intéressant en pratique !), mais c’est un bon moyen de détecter les optimisations intéressantes qui pourraient être faites dans l’interpréteur <em>G’MIC</em> ultérieurement. Une animation d’un objet simple, générée par ce <em>raytracer</em> en cours de développemnt, est visible ci-dessous :</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/v_raytracer.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f7261797472616365722e706e67/v_raytracer.png" alt="raytracer" title="Source : https://gmic.eu/gmic325/thumbs/v_raytracer.png"></a> <em>Fig. 5.3.7. Exemple de rendu obtenu par la technique du raytracing, implémentée en G’MIC (en cours de développement).</em></p>
<ul>
<li>Pour ceux qui veulent en savoir plus sur le fonctionnement du langage <em>G’MIC</em>, nous recommandons la lecture des <a href="https://gmic.eu/tutorial/">formidables pages de tutoriel</a> écrites par <a href="https://discuss.pixls.us/u/grosgood">Garry Osgood</a>, contributeur depuis plusieurs années à la documentation du projet <em>G’MIC</em>. En particulier, il a récemment écrit <a href="https://gmic.eu/tutorial/wheelies.html">une série d’articles sur la création d’arabesques</a>, que l’on ne peut que conseiller !</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/v_arabesque.mp4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f765f6172616265737175652e706e67/v_arabesque.png" alt="arabesque" title="Source : https://gmic.eu/gmic325/thumbs/v_arabesque.png"></a> <em>Fig. 5.3.8. Exemple de tracé de silhouette par la technique d’arabesque décrite dans le tutoriel de Garry Osgood.</em></p>
<ul>
<li>Notons qu’avec le langage <em>G’MIC</em>, il est aussi possible de créer des <a href="https://fr.wiktionary.org/wiki/one-liner"><em>one-liners</em></a> amusants, c’est-à-dire des commandes qui tiennent sur une ligne et qui génèrent des images ou des animations insolites. Les deux commandes <em>G’MIC</em> suivantes en sont de bons exemples :</li>
</ul>
<p><strong>One-liner N°1</strong> : Génération d’une image couleur fixe.</p>
<pre><code class="sh">$ gmic <span class="m">500</span>,500 repeat <span class="m">10</span> <span class="o">{</span> +noise_poissondisk<span class="o">[</span><span class="m">0</span><span class="o">]</span> <span class="s1">'{3+$>}'</span> <span class="o">}</span> rm<span class="o">[</span><span class="m">0</span><span class="o">]</span> a z f <span class="s1">'!z?(R=cut(norm(x-w/2,y-h/2)/20,0,d-1);i(x,y,R)):0'</span> slices <span class="m">0</span> to_rgb f <span class="s1">'max(I)?u([255,255,255]):I'</span> blur_radial <span class="m">0</span>.6% equalize n <span class="m">0</span>,255</code></pre>
<p><a href="https://gmic.eu/gmic325/img/lightspeed.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6c6967687473706565642e706e67/lightspeed.png" alt="lightspeed" title="Source : https://gmic.eu/gmic325/thumbs/lightspeed.png"></a> <em>Fig.5.3.9. Résultat du one-liner N°1.</em></p>
<p><strong>One-liner N°2 :</strong> Création d’une animation couleur, de type « peau de dinosaure ».</p>
<pre><code class="sh">$ gmic <span class="m">300</span>,300x5 foreach <span class="o">{</span> noise_poissondisk <span class="m">40</span> +distance <span class="m">1</span> label_fg.. <span class="m">0</span> mul. -1 watershed.. . rm. g xy,1 a c norm neq <span class="m">0</span> distance <span class="m">1</span> apply_gamma <span class="m">1</span>.5 n <span class="m">0</span>,255 <span class="o">}</span> morph <span class="m">20</span>,0.1 map copper +rv<span class="o">[</span>^0<span class="o">]</span> animate <span class="m">40</span></code></pre>
<p><a href="https://gmic.eu/gmic325/img/v_reptile_skin.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f696d672f765f72657074696c655f736b696e2e676966/v_reptile_skin.gif" alt="reptile_skin" title="Source : https://gmic.eu/gmic325/img/v_reptile_skin.gif"></a> <em>Fig.5.3.10. Résultat du one-liner N°2.</em></p>
<ul>
<li>Les deux images ci-dessous sont le résultat d’expérimentations en langage <em>G’MIC</em> de <a href="https://discuss.pixls.us/u/reptorian"><em>Reptorian</em></a>, contributeur de longue date, qui explore beaucoup les possibilités du langage pour l’art génératif.</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/ga_reptorian_da2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f67615f726570746f7269616e5f6461322e706e67/ga_reptorian_da2.png" alt="generative_art2" title="Source : https://gmic.eu/gmic325/thumbs/ga_reptorian_da2.png"></a> <em>Fig.5.3.11. Variante de la technique de « </em><a href="https://en.wikipedia.org/wiki/Diffusion-limited_aggregation">Diffusion-limited aggregation</a><em> », guidée par la géométrie d’une image (par Reptorian).</em></p>
<p><a href="https://gmic.eu/gmic325/img/ga_reptorian.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f67615f726570746f7269616e2e706e67/ga_reptorian.png" alt="generative_art3" title="Source : https://gmic.eu/gmic325/thumbs/ga_reptorian.png"></a> <em>Fig.5.3.12. Génération de motif fractal (par Reptorian).</em></p>
<p>D’autres exemples sont visibles sur <a href="https://discuss.pixls.us/t/gmic-fun-with-reptorian/">son fil de discussion</a> (en anglais).</p>
<ul>
<li>Concernant la dimension « communication » du projet, il existe depuis plusieurs années un <a href="https://twitter.com/gmic_eu">compte <em>Twitter</em></a> où nous postons régulièrement des informations sur l’évolution du projet, l’arrivée de nouvelles fonctionnalités, la sortie de nouvelles versions, etc. Dorénavant, nous avons également <a href="https://piaille.fr/@gmic">un compte <em>Mastodon</em></a>, où nous postons les actualités autour du projet. N’hésitez pas à vous y abonner !</li>
</ul>
<p><a href="https://piaille.fr/@gmic"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6d6173746f646f6e2e706e67/mastodon.png" alt="mastodon" title="Source : https://gmic.eu/gmic325/thumbs/mastodon.png"></a> <em>Fig. 5.3.13. Aperçu du compte Mastodon de G’MIC.</em></p>
<ul>
<li>Sur les réseaux sociaux, il arrive qu’on tombe sur des <em>posts</em> inattendus où des personnes montrent leur utilisation de <em>G’MIC</em>. Par exemple, cette série de <em>posts</em> récents met en jeu du traitement d’images astronomiques avec des filtres de <em>G’MIC</em>, pour débruiter ou esthétiser des images :</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/astro.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f617374726f2e706e67/astro.png" alt="astro" title="Source : https://gmic.eu/gmic325/thumbs/astro.png"></a> <em>Fig. 5.3.14. Utilisation de G’MIC pour le traitement d’images astronomiques.</em></p>
<p>Ces <em>posts</em> sont visibles <a href="https://twitter.com/navaneeth_ank/status/1620110820272410624">ici</a>, <a href="https://twitter.com/SpaceGeck/status/1594213385377574913">là</a>, <a href="https://twitter.com/stim3on/status/1594292010000814080">là</a>, ou <a href="https://twitter.com/navaneeth_ank/status/1659381911255654400">encore là</a>. Ces retours d’utilisateurs sont évidemment valorisants pour nous. Si vous êtes vous même utilisateurs (contents ☺) de <em>G’MIC</em>, n’hésitez surtout pas à partager vos réalisations ou vos retours d’expérience. Ca fait toujours plaisir !</p>
<ul>
<li>Enfin, mentionnons le fait que <em>G’MIC</em> a fait l’objet d’articles dans les numéros <em>301</em> et <em>302</em> du magazine anglais <a href="https://www.linuxformat.com/">LinuxFormat</a> (numéros de mai et juin 2023), rédigés par <a href="https://linuxformat.com/archives?author_find=217">Karsten Gunther</a>. Ils présentent les différentes possibilités de retouche photo apportées par le greffon <em>G’MIC-Qt</em>, d’une manière très pédagogique (comme nous essayons d’ailleurs de le faire avec nos dépêches sur <a href="//linuxfr.org/tags/gmic/public"><em>Linuxfr</em></a> !).</li>
</ul>
<p><a href="https://gmic.eu/gmic325/img/linux_format.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633332352f7468756d62732f6c696e75785f666f726d61742e706e67/linux_format.png" alt="linux_format" title="Source : https://gmic.eu/gmic325/thumbs/linux_format.png"></a> <em>Fig. 5.3.15. Le magazine « Linux Format » propose une série d’articles sur l’utilisation de G’MIC-Qt, dans ses numéros de mai et juin 2023.</em></p>
<p>Voilà, ce qui conclut notre tour d’horizon des derniers développements et informations portant sur le projet <em>G’MIC</em>.</p>
<h2 id="toc-6-conclusions--perspectives">6. Conclusions & perspectives</h2>
<p>Après <strong>15 ans</strong> de développement de <em>G’MIC</em> et <strong>24 ans</strong> de développement de <a href="http://cimg.eu"><em>CImg</em></a>, la bibliothèque <em>C++</em> qui lui sert de fondation, nous disposons aujourd’hui d’un cadriciel libre et ouvert pour le traitement des images numériques, qui est mature et qui a prouvé son utilité pour résoudre des problèmes variés de traitement d’images.<br>
Le nombre de téléchargements n’a cessé de croître, depuis l’écriture des premières lignes de code (en 2008), ce qui montre que le projet est dynamique et attire un large éventail d’utilisateurs.</p>
<p>Ce dynamisme est il durable ? Nous avons bien sûr toujours des idées pour l’amélioration de ce cadriciel. Mais en même temps, avec les responsabilités professionnelles qui augmentent, le temps à consacrer à son développement diminue. La stratégie pour la suite sera donc de :</p>
<ul>
<li>Bien sélectionner les pistes d’amélioration sur lesquelles travailler.</li>
<li>Tenter de trouver du temps de développement extérieur (soit bénévole, soit financé).</li>
</ul>
<p>Sur le court-terme, nous sommes à la recherche de contributeurs pour :</p>
<ul>
<li>Avancer sur le développement du <a href="https://pypi.org/project/gmic/"><em>binding</em> <em>G’MIC</em></a> pour <a href="https://www.python.org/"><em>Python</em></a>. Il faudrait le mettre à jour et consacrer suffisamment de temps à le tester en profondeur, pour rendre <em>G’MIC</em> utilisable sans <em>bugs</em>, directement depuis un programme écrit en <em>Python</em>. Le <em>binding</em> existant est fonctionnel et constitue déjà une bonne base de travail.</li>
<li>Réussir à <em>packager</em> <em>G’MIC</em> pour <a href="https://fr.wikipedia.org/wiki/MacOS"><em>macOS</em></a>. Nous recevons en effet de nombreuses requêtes d’utilisateurs de <em>Mac</em> qui ne savent pas compiler et installer le greffon <em>G’MIC-Qt</em> pour <em>GIMP</em>. Nul doute qu’il soit possible d’améliorer cette situation, moyennant de l’aide extérieure.</li>
</ul>
<p>Si vous pensez pouvoir contribuer sur l’un de ces deux points, <a href="https://discuss.pixls.us/c/software/gmic">n’hésitez surtout pas à nous contacter !</a></p>
<p>Enfin, la révolution induite par l’utilisation des réseaux de neurones dans le domaine du traitement des images numériques est primordiale. Sur ce point, <em>G’MIC</em> a du retard à rattraper. Nous nous sommes plutôt focalisés jusqu’à présent sur l’algorithmique « classique » du traitement d’images. Il faudrait pouvoir développer plus rapidement notre bibliothèque <code>nn_lib</code> pour parvenir à déployer des modèles neuronaux plus larges (quelques dizaines/centaines de millions de paramètres, ça serait déjà satisfaisant !), afin d’autoriser le traitement ou la synthèse d’images en utilisant des techniques plus avancées d’apprentissage statistique.</p>
<p>Comme vous le voyez, ce ne sont pas les idées qui manquent !</p>
<p>Pour finir, il faut rappeler que le développement de <em>G’MIC</em> n’aurait pas été possible sans les encouragements et le support du <a href="https://www.greyc.fr/"><em>GREYC</em></a>, notre laboratoire, et de ses tutelles : l’<a href="https://www.ins2i.cnrs.fr/fr">Institut INS2I du CNRS</a>, l’<a href="https://www.unicaen.fr/">Université de Caen Normandie</a>, et l’<a href="https://www.ensicaen.fr/"><em>ENSICAEN</em></a>. Un grand merci à eux pour leurs aides à différents niveaux lors de ces quinze dernières années de développement. Depuis quelque temps, on voit se mettre en place, dans le domaine de la recherche scientifique, des initiatives intéressantes de valorisation de la science ouverte et reproductible (<a href="https://www.ouvrirlascience.fr/deuxieme-plan-national-pour-la-science-ouverte-pnso/">plan national pour la science ouverte</a>, plan de la <a href="https://www.science-ouverte.cnrs.fr/">science ouverte du CNRS</a>…), et du logiciel libre (programme de valorisation <a href="https://www.cnrsinnovation.com/open/">Open de CNRS Innovation</a>). Ce sont des signaux encourageants pour les chercheurs qui investissent souvent beaucoup de temps dans la création de communs numériques libres (logiciels, jeux de données, etc.), et qui ont parfois du mal à valoriser ces réalisations comme des contributions scientifiques d’importance.</p>
<p>Nous espérons que cette dépêche vous a plu. Rendez-vous dans quelques <s>mois</s> semestres, avec, on l’espère, encore de nombreuses nouveautés à partager avec vous !</p>
</div><div><a href="https://linuxfr.org/news/g-mic-3-2-5-15-ans-de-developpement-pour-du-traitement-d-images-libre-et-reproductible.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/131388/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/g-mic-3-2-5-15-ans-de-developpement-pour-du-traitement-d-images-libre-et-reproductible#comments">ouvrir dans le navigateur</a>
</p>
David TschumperléorfenorYves BourguignonYsabeau 🧶 🧦Julien JorgeArkemhttps://linuxfr.org/nodes/131388/comments.atomtag:linuxfr.org,2005:Bookmark/43532022-02-26T11:03:41+01:002022-02-26T11:03:41+01:00«Watchmaker At Time End» Dessin animé de SF (5 ans de travail, avec des logiciels libres)<a href="https://www.nalloru.com/watchmaker/">https://www.nalloru.com/watchmaker/</a> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/127030/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/bubar/liens/watchmaker-at-time-end-dessin-anime-de-sf-5-ans-de-travail-avec-des-logiciels-libres#comments">ouvrir dans le navigateur</a>
</p>
bubar🦥https://linuxfr.org/nodes/127030/comments.atomtag:linuxfr.org,2005:News/407892021-12-17T21:35:34+01:002023-08-26T11:18:32+02:00Sortie de G'MIC 3.0 : Une troisième dose pour un traitement efficace de vos images !Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Une nouvelle version majeure (numérotée <strong>3.0.0</strong>) de <a href="https://gmic.eu"><em>G’MIC</em></a> (<em>GREYC’s Magic for Image Computing</em>), <a href="https://fr.wikipedia.org/wiki/Framework">cadriciel</a> libre pour <a href="https://fr.wikipedia.org/wiki/Traitement_d%27images">le traitement des images</a>, a été publiée le 9 décembre 2021. Ce projet, distribué sous licence libre <a href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-fr.html"><em>CeCILL</em></a>, est développé principalement dans l’équipe <a href="https://www.greyc.fr/image"><em>IMAGE</em></a> du <a href="https://www.greyc.fr"><em>GREYC</em></a>, laboratoire de recherche en Sciences et Technologies de l’Information et de la Communication (Unité Mixte de Recherche <a href="https://www.cnrs.fr/"><em>CNRS</em></a> / <a href="https://www.ensicaen.fr/"><em>ENSICAEN</em></a> / <a href="https://www.unicaen.fr/">Université de Caen</a>).</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_teaser.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f7465617365722e676966/gmic_teaser.gif" alt="gmic_teaser" title="Source : https://gmic.eu/gmic300/fullsize/gmic_teaser.gif"></a></p>
<p><a href="//linuxfr.org/news/g-mic-2-7-0-une-rentree-pleine-de-style-pour-le-traitement-d-images">La dernière dépêche <em>LinuxFr.org</em></a> sur ce logiciel avait été publiée il y a plus de deux ans, en août 2019. Depuis, de nouvelles fonctionnalités ont vu le jour. Dans cette dépêche, nous proposons d’en détailler quelques-unes parmi les plus significatives.</p>
<p>C’est le moment de se préparer une boisson chaude, de s’installer bien confortablement dans le canapé et de se laisser conter deux ans de développement d’un projet libre dynamique !<br>
<em>N. D. A. : cliquez sur les images de la dépêche pour en visualiser des versions de meilleure résolution.</em></p>
</div><ul><li>lien nᵒ 1 : <a title="https://gmic.eu" hreflang="en" href="https://linuxfr.org/redirect/109551">Le projet G'MIC</a></li><li>lien nᵒ 2 : <a title="https://twitter.com/gmic_ip" hreflang="en" href="https://linuxfr.org/redirect/109552">Fil Twitter des nouvelles du projet</a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/tags/gmic/public" hreflang="fr" href="https://linuxfr.org/redirect/109553">Série d’articles G’MIC sur LinuxFr.org</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#toc-1-gmic-en-un-peu-plus-de-300-mots">1. <em>G’MIC</em> en un peu plus de <em>3.0.0</em> mots</a></li>
<li>
<a href="#toc-2-nouveaut%C3%A9s-du-greffon-gmic-qt">2. Nouveautés du greffon <em>G’MIC-Qt</em></a><ul>
<li><a href="#toc-21-effets-artistiques">2.1. Effets artistiques</a></li>
<li><a href="#toc-22-am%C3%A9lioration-dimages">2.2. Amélioration d’images</a></li>
<li><a href="#toc-23-retouche-des-couleurs">2.3. Retouche des couleurs</a></li>
<li><a href="#toc-24-d%C3%A9formations-et-d%C3%A9gradations">2.4. Déformations et dégradations</a></li>
<li><a href="#toc-25-rendus-de-formes-et-de-motifs">2.5. Rendus de formes et de motifs</a></li>
<li><a href="#toc-26-se-maintenir-%C3%A0-jour">2.6. Se maintenir à jour</a></li>
<li><a href="#toc-27-toujours-plus-de-logiciels-h%C3%B4tes">2.7 Toujours plus de logiciels hôtes</a></li>
<li><a href="#toc-28-am%C3%A9liorations-de-linterface">2.8. Améliorations de l’interface</a></li>
</ul>
</li>
<li>
<a href="#toc-3-am%C3%A9liorations-du-c%C5%93ur-de-gmic">3. Améliorations du cœur de G’MIC</a><ul>
<li><a href="#toc-31-am%C3%A9liorations-du-langage-et-de-linterpr%C3%A9teur">3.1. Améliorations du langage et de l’interpréteur</a></li>
<li><a href="#toc-32-am%C3%A9liorations-de-l%C3%A9valuateur-dexpressions-math%C3%A9matiques">3.2. Améliorations de l’évaluateur d’expressions mathématiques</a></li>
</ul>
</li>
<li><a href="#toc-4-autres-informations-notables">4. Autres informations notables</a></li>
<li><a href="#toc-5-et-ensuite">5. Et ensuite ?</a></li>
<li><a href="#toc-6-ressources-compl%C3%A9mentaires">6. Ressources complémentaires</a></li>
</ul>
<h2 id="toc-1-gmic-en-un-peu-plus-de-300-mots">1. <em>G’MIC</em> en un peu plus de <em>3.0.0</em> mots</h2>
<p><a href="https://gmic.eu"><em>G’MIC</em></a> est un cadriciel (<em>framework</em>) libre pour la manipulation et le traitement des <a href="https://fr.wikipedia.org/wiki/Image_num%C3%A9rique">images numériques</a>.<br>
Il propose des interfaces utilisateurs variées pour la manipulation algorithmique (automatisée ou semi-automatisée) d’images et de signaux génériques, qui vont du signal 1D simple jusqu’aux séquences d’images volumiques 3D à nombre de canaux quelconque (ce qui inclut de fait les images couleurs classiques). Le cœur de ce projet repose sur la définition d’un langage de script spécialisé (le <a href="https://gmic.eu/reference/overall_context.html"><em>« langage G’MIC »</em></a>) et sur une implémentation libre de son interpréteur associé. Ce langage métier a été spécifiquement élaboré pour faciliter le prototypage et l’implémentation de nouveaux algorithmes et opérateurs de traitement d’images. Les utilisateurs du cadriciel peuvent ainsi appliquer des opérateurs parmi les centaines déjà prédéfinis, mais ont également la possibilité d’écrire leurs propres pipelines complexes de traitement et les rendre accessibles dans les différentes interfaces utilisateurs du projet. <em>G’MIC</em> est donc, par essence, un cadriciel ouvert, extensible et en évolution constante.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/logo_gmic.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f6c6f676f5f676d69632e706e67/logo_gmic.png" alt="G’MIC logo" title="Source : https://gmic.eu/gmic300/thumb/logo_gmic.png"></a><br>
<em>Fig. 1.1 : logo du projet G’MIC, cadriciel libre pour le traitement d’images, et sa mascotte « Gmicky » (réalisée par <a href="https://www.davidrevoy.com/">David Revoy</a>).</em></p>
<p>Le projet <em>G’MIC</em> est développé depuis 2008, principalement par deux membres de l’équipe <a href="https://www.greyc.fr/image"><em>IMAGE</em></a> du laboratoire <a href="https://www.greyc.fr/"><em>GREYC</em></a> : <a href="https://tschumperle.users.greyc.fr/">David Tschumperlé</a> (Chargé de Recherche <a href="https://www.cnrs.fr"><em>CNRS</em></a>, responsable de l’équipe) et <a href="https://foureys.users.greyc.fr/Fr/index.php">Sébastien Fourey</a> (Maître de Conférences <a href="https://www.ensicaen.fr"><em>ENSICAEN</em></a>). L’équipe <em>IMAGE</em>, l’une des six équipes du <em>GREYC</em>, est composée d’une cinquantaine de membres (chercheurs, enseignants‐chercheurs, doctorants, post-doctorants et ingénieurs), tous spécialisés dans les domaines de l’algorithmique et des mathématiques du traitement d’images.</p>
<p>Les interfaces utilisateurs de <em>G’MIC</em> les plus visibles sont : la commande <a href="https://gmic.eu/reference/"><code>gmic</code>, exploitable en ligne de commande</a> (complément indispensable à <a href="https://www.imagemagick.org/"><em>ImageMagick</em></a> ou <a href="http://www.graphicsmagick.org"><em>GraphicsMagick</em></a> pour ceux qui traitent leurs images en passant par le terminal), le service Web <a href="https://gmicol.greyc.fr/"><em>G’MIC Online</em></a>, et surtout, le greffon <a href="https://github.com/c-koi/gmic-qt"><em>G’MIC-Qt</em></a>, disponible pour plusieurs logiciels populaires d’édition d’images numériques (libres ou propriétaires) tels que <a href="https://www.gimp.org"><em>GIMP</em></a>, <a href="https://www.krita.org"><em>Krita</em></a>, <a href="https://www.getpaint.net"><em>Paint.net</em></a>, et plus récemment, <a href="https://fr.wikipedia.org/wiki/Adobe_Photoshop"><em>Adobe Photoshop</em></a> ou encore <a href="https://fr.wikipedia.org/wiki/Affinity_Photo"><em>Affinity Photo</em></a>. Ce greffon permet d’enrichir ces logiciels de plus de 570 filtres et effets différents à appliquer sur des images.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic300.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69633330302e706e67/gmic300.png" alt="Greffon G’MIC-Qt" title="Source : https://gmic.eu/gmic300/thumb/gmic300.png"></a> <em>Fig. 1.2 : Aperçu du greffon G’MIC-Qt, en version <strong>3.0.0</strong>, ici lancé depuis GIMP 2.10.</em></p>
<p>Grâce à son langage de script intégré, facilitant le prototypage et l’implémentation d’algorithmes et d’opérateurs de traitement d’images, de nouveaux filtres sont régulièrement créés et ajoutés à <em>G’MIC</em>. Une grande partie de cette dépêche sera d’ailleurs consacrée à la description des nouveaux filtres et effets développés ces deux dernières années.</p>
<h2 id="toc-2-nouveautés-du-greffon-gmic-qt">2. Nouveautés du greffon <em>G’MIC-Qt</em>
</h2>
<p><em>G’MIC-Qt</em> étant l’interface la plus populaire et la plus utilisée du projet <em>G’MIC</em>, commençons donc par décrire les nouveautés la concernant. Nous avons sélectionné seulement un sous-ensemble des nouveaux filtres et effets ayant fait leur apparition dans le greffon, sans pouvoir être exhaustif, puisque c’est en réalité plus de cinquante nouvelles entrées qui ont été ajoutées en deux ans ! Nous avons essayé de suivre l’adage <em>« Une image vaut mille mots »</em>, en parsemant cette dépêche de nombreuses figures, illustrant les nouveautés présentées.</p>
<h3 id="toc-21-effets-artistiques">2.1. Effets artistiques</h3>
<ul>
<li>Le nouveau filtre <strong>Artistic / Paint With Brush</strong> s’inscrit dans la grande tradition des effets cherchant à transformer une photographie en dessin ou en peinture. Son originalité réside dans le fait qu’il va repeindre entièrement l’image donnée en entrée sur une toile blanche virtuelle, en appliquant des coups de pinceau successifs à différentes échelles : d’abord avec des brosses grossières, puis avec des brosses de plus en plus fines pour recréer les moindres détails de l’image.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_paint_with_brush.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f7061696e745f776974685f62727573682e706e67/gmic_paint_with_brush.png" alt="gmic_paint_with_brush" title="Source : https://gmic.eu/gmic300/thumb/gmic_paint_with_brush.png"></a><br>
<em>Fig.2.1.1. Le filtre « Artistic / Paint With Brush » en action.</em></p>
<p>Ici, tout est réglable : le nombre de coups de pinceau à chaque itération, la dynamique de la brosse (taille, opacité, couleur, orientation…), la précision géométrique des traits, etc. Cela en fait un filtre très polyvalent permettant de simuler des styles de peintures variés, comme on peut le voir sur l’animation ci-dessous, qui montre les résultats obtenus pour plusieurs pré-réglages proposés par ce filtre, et ce, pour une même image d’entrée.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_paint_with_brush_anim.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f7061696e745f776974685f62727573685f616e696d2e676966/gmic_paint_with_brush_anim.gif" alt="gmic_paint_with_brush" title="Source : https://gmic.eu/gmic300/fullsize/gmic_paint_with_brush_anim.gif"></a><br>
<em>Fig.2.1.2. Les différents préréglages proposés permettent de simuler plusieurs styles de peinture.</em></p>
<ul>
<li>Dans la même veine, le filtre <strong>Artistic / Doodle</strong> redessine une image sous forme de « gribouillages », à savoir un ensemble de traits noirs continus sur fond blanc, localisés principalement sur les contours des objets présents dans les images, comme illustré par le résultat ci-dessous.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_doodle.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f646f6f646c652e676966/gmic_doodle.gif" alt="gmic_doodle" title="Source : https://gmic.eu/gmic300/fullsize/gmic_doodle.gif"></a><br>
<em>Fig.2.1.3. Résultat du filtre « Artistic / Doodle ».</em></p>
<ul>
<li>Toujours dans l’optique de convertir une image en une illustration, le filtre <strong>Artistic / Comic Book</strong> a été récemment ajouté au greffon et permet de donner un aspect <em>cartoon</em> à vos images.
C’est un filtre « communautaire », puisqu’il a été initié par <a href="https://github.com/cl4cnam">Claude Lion</a>, nouveau contributeur au projet, puis légèrement modifié par moi-même.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_comic_book.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f636f6d69635f626f6f6b2e706e67/gmic_comic_book.png" alt="gmic_comic_book" title="Source : https://gmic.eu/gmic300/thumb/gmic_comic_book.png"></a><br>
<em>Fig.2.1.4. Le filtre « Artistic / Comic Book » en action.</em></p>
<ul>
<li>Vous souhaitez effrayer vos enfants juste avant de les coucher, pour être sûrs qu’ils passent une bonne nuit ? Le nouveau filtre <strong>Artistic / Ghost</strong> est fait pour vous ! Cet algorithme agglomère des segments blancs semi-transparents sur les contours des objets, ce qui a pour effet de générer le plus souvent des images assez cauchemardesques (notamment lorsqu’il est appliqué sur des portraits).</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_ghost.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f67686f73742e706e67/gmic_ghost.png" alt="gmic_ghost" title="Source : https://gmic.eu/gmic300/thumb/gmic_ghost.png"></a><br>
<em>Fig.2.1.5. Le filtre « Artistic / Ghost » en action. Éloignez les enfants !</em></p>
<p>Il est alors facile, en mélangeant le résultat de cet effet avec l’image originale (par des modes de fusion de calques bien choisis) de générer des animations, qui transformeront n’importe laquelle de vos images en vision d’horreur ! (ici, nous l’avons utilisé conjointement avec la commande <a href="https://gmic.eu/reference/morph"><code>morph</code></a> de <em>G’MIC</em> pour le rendu de l’animation ci-dessous).</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_ghost_anim.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f67686f73745f616e696d322e676966/gmic_ghost_anim2.gif" alt="gmic_ghost" title="Source : https://gmic.eu/gmic300/fullsize/gmic_ghost_anim2.gif"></a><br>
<em>Fig.2.1.6. Variation animée autour du filtre « Artistic / Ghost ».</em></p>
<ul>
<li>Enfin, mentionnons deux petites améliorations sur des filtres artistiques déjà existants. Tout d’abord, le filtre <strong>Frames / Droste</strong> se dote de points manipulables sur la fenêtre de prévisualisation, permettant de régler plus aisément la zone où va se positionner la répétition de l’image d’entrée. Ce sont les points de couleur visibles aux quatre coins du miroir, sur l’exemple ci-dessous.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_droste.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f64726f7374652e706e67/gmic_droste.png" alt="gmic_droste" title="Source : https://gmic.eu/gmic300/thumb/gmic_droste.png"></a><br>
<em>Fig.2.1.7. Ajout de points manipulables par l’utilisateur pour le réglage du filtre « Frames / Droste ».</em></p>
<p>Puis, le filtre <strong>Artistic / Stylize</strong> se dote de six nouveaux styles prédéfinis, élaborés par <a href="https://thimblefolio.com/">Christine Garner</a>, une artiste qui avait beaucoup utilisé ce filtre pour donner un aspect texturé à ses images avant de proposer sa contribution. Ces nouveaux styles permettent par exemple de produire des images avec des textures de crayon, de craie, de pastel ou de fusain.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_stylize.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f7374796c697a652e706e67/gmic_stylize.png" alt="gmic_stylize" title="Source : https://gmic.eu/gmic300/thumb/gmic_stylize.png"></a><br>
<em>Fig.2.1.8. Un des nouveaux styles prédéfinis disponibles dans le filtre « Artistic / Stylize ».</em></p>
<h3 id="toc-22-amélioration-dimages">2.2. Amélioration d’images</h3>
<ul>
<li>Le greffon se dote encore d’un nouvel algorithme pour aider au débruitage des images, problème très classique mais ô combien difficile à résoudre, qui occupe les chercheurs en traitement d’images depuis plusieurs générations.
Le nouveau filtre <strong>Repair / Denoise</strong> essaye de s’acquitter de cette tâche par une approche basée sur les <a href="https://fr.wikipedia.org/wiki/R%C3%A9seau_neuronal_convolutif">réseaux de neurones convolutifs</a>.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_denoise.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f64656e6f6973652e706e67/gmic_denoise.png" alt="gmic_denoise" title="Source : https://gmic.eu/gmic300/thumb/gmic_denoise.png"></a><br>
<em>Fig.2.2.1. Le filtre « Repair / Denoise » en action.</em></p>
<p>À première vue, cette information peut sembler anodine, mais elle représente en réalité un fait marquant dans l’histoire de <em>G’MIC</em> (ainsi qu’un bon paquet de semaines de développement !). En effet, pour réaliser ce filtre, il a fallu implémenter une bibliothèque complète d’<a href="https://fr.wikipedia.org/wiki/Apprentissage_automatique">apprentissage machine</a>, nommée <code>nn_lib</code> (pour « <em><strong>N</strong>eural <strong>N</strong>etwork <strong>Lib</strong>rary</em> »). Cette bibliothèque permet aujourd’hui la construction, l’apprentissage et l’évaluation de <a href="https://fr.wikipedia.org/wiki/R%C3%A9seau_de_neurones_artificiels">réseaux de neurones artificiels</a>. C’est généralement sous le terme (un peu dévoyé) d’<a href="https://fr.wikipedia.org/wiki/Intelligence_artificielle">« Intelligence Artificielle »</a> que l’on désigne ce type de méthodes. Le filtre de débruitage <strong>Repair / Denoise</strong> est donc tout simplement le premier filtre de <em>G’MIC</em> basé sur cette nouvelle bibliothèque d’apprentissage machine !</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_denoise_balloons.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f64656e6f6973655f62616c6c6f6f6e732e706e67/gmic_denoise_balloons.png" alt="gmic_denoise_balloons" title="Source : https://gmic.eu/gmic300/thumb/gmic_denoise_balloons.png"></a><br>
<a href="https://gmic.eu/gmic300/fullsize/gmic_denoise_parrot.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f64656e6f6973655f706172726f742e706e67/gmic_denoise_parrot.png" alt="gmic_denoise_parrot" title="Source : https://gmic.eu/gmic300/thumb/gmic_denoise_parrot.png"></a><br>
<em>Fig.2.2.2. Deux exemples de débruitage d’images, obtenus avec le filtre « Repair / Denoise ».</em></p>
<p>Avec l’apparition de <code>nn_lib</code>, nous espérons proposer dans le futur de plus en plus de filtres basés sur les réseaux de neurones, pour la retouche et la génération d’images. De belles choses à venir en perspective !</p>
<ul>
<li>Un autre filtre d’amélioration d’images, plus spécialisé celui-ci, a été intégré au greffon <em>G’MIC-Qt</em>. Il s’agit du filtre <strong>Repair / Unpurple</strong> dont le rôle est de supprimer les <a href="https://en.wikipedia.org/wiki/Purple_fringing">franges violettes</a> qui peuvent apparaître dans les photographies. L’algorithme utilisé ici est un portage direct en langage <em>G’MIC</em> de l’algorithme <a href="https://github.com/mjambon/purple-fringe">Unpurple</a> de <a href="https://github.com/mjambon">Martin Jambon</a>, portage réalisé par <a href="https://github.com/spaskalev">Stanislav Paskalev</a>. On peut voir ci-dessous l’effet de ce filtre sur une portion d’image comportant ces fâcheuses franges violettes.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/Purple_fringing.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f507572706c655f6672696e67696e672e706e67/Purple_fringing.png" alt="gmic_unpurple" title="Source : https://gmic.eu/gmic300/thumb/Purple_fringing.png"></a><br>
<em>Fig.2.2.3. Portion de photographie couleur comportant des franges violettes.</em></p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_unpurple.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f756e707572706c652e706e67/gmic_unpurple.png" alt="gmic_unpurple" title="Source : https://gmic.eu/gmic300/thumb/gmic_unpurple.png"></a><br>
<em>Fig.2.2.4. Le filtre « Repair / Unpurple » en action.</em></p>
<p><a href="https://gmic.eu/gmic300/fullsize/Purple_fringing2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f507572706c655f6672696e67696e67322e706e67/Purple_fringing2.png" alt="gmic_unpurple" title="Source : https://gmic.eu/gmic300/thumb/Purple_fringing2.png"></a><br>
<em>Fig.2.2.5. Résultat du filtre : les franges violettes ont disparu.</em></p>
<ul>
<li>Une envie soudaine de rehausser les détails dans vos images ? Le nouveau filtre <strong>Details / Sharpen [Multiscale]</strong> pourrait vous intéresser. Il vient compléter l’armada des algorithmes d’amélioration de netteté existants dans <em>G’MIC</em>. Il se base sur un algorithme de rehaussement multi-échelle pour faire ressortir les détails de différentes tailles présents dans les images.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_sharpen_multiscape.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f7368617270656e5f6d756c74697363616c652e706e67/gmic_sharpen_multiscale.png" alt="gmic_sharpen_multiscale" title="Source : https://gmic.eu/gmic300/thumb/gmic_sharpen_multiscale.png"></a><br>
<em>Fig.2.2.6. Le filtre « Details / Sharpen [Multiscale] » en action.</em></p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_sharpen.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f7368617270656e2e676966/gmic_sharpen.gif" alt="gmic_sharpen_multiscale_anim" title="Source : https://gmic.eu/gmic300/fullsize/gmic_sharpen.gif"></a><br>
<em>Fig.2.2.7. Résultat de l’application du filtre sur une photographie couleur.</em></p>
<h3 id="toc-23-retouche-des-couleurs">2.3. Retouche des couleurs</h3>
<p>Pour la retouche couleur des images, deux nouveaux filtres particulièrement intéressants font leur apparition dans <em>G’MIC-Qt</em> :</p>
<p>Premièrement, le filtre <strong>Colors / Tune HSV Colors</strong>, qui permet à l’utilisateur de définir, de façon très fine, une fonction de transformation opérant dans l’espace couleur <a href="https://fr.wikipedia.org/wiki/Teinte_Saturation_Valeur"><em>HSV</em> (Teinte-Saturation-Valeur)</a>. <br>
Ce filtre fonctionne de la manière suivante :</p>
<ul>
<li>Tout d’abord, le filtre va déterminer, dans l’image d’entrée, les couleurs existantes les plus proches des couleurs pures suivantes : le rouge (dénoté <em>R</em>), le jaune (<em>Y</em>), le vert (<em>G</em>), le cyan (<em>C</em>), le bleu (<em>B</em>) et le magenta (<em>M</em>). À ceci s’ajoute la couleur la plus sombre (<em>D</em>), la plus claire (<em>L</em>), ainsi que la couleur moyenne (<em>A</em>). Il arrive d’ailleurs que l’image d’entrée ne contienne pas du tout l’une ou l’autre de ces couleurs, et dans ce cas, la couleur extraite la plus proche peut être perceptivement assez éloignée de la couleur pure idéale. C’est le cas par exemple avec l’image du papillon illustrée ci-dessous : cette image ne contient aucun pixel dans les tons bleus.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_tune_hsv1.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f74756e655f687376312e706e67/gmic_tune_hsv1.png" alt="gmic_tune_hsv1" title="Source : https://gmic.eu/gmic300/thumb/gmic_tune_hsv1.png"></a><br>
<em>Fig.2.3.1. Le filtre « Colors / Tune HSV Colors » extrait tout d’abord des couleurs de base de l’image.</em></p>
<ul>
<li>Ces neuf couleurs extraites de l’image vont ensuite servir de base pour la définition d’une transformation couleur personnalisée. On va pouvoir en effet modifier chacune de ces couleurs indépendamment dans l’espace <em>HSV</em>, en rendant la couleur plus ou moins claire, plus ou moins saturée, ou en changeant carrément sa teinte. C’est ce que nous faisons dans l’exemple ci-dessous où l’on modifie les couleurs les plus rouges et magentas pour les rendre vertes et changer ainsi la couleur de la fleur sur laquelle est posé le papillon (dont on a également modifié légèrement la teinte en passant).</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_tune_hsv0.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f74756e655f687376302e706e67/gmic_tune_hsv0.png" alt="gmic_tune_hsv0" title="Source : https://gmic.eu/gmic300/thumb/gmic_tune_hsv0.png"></a><br>
<em>Fig.2.3.2. L’utilisateur peut agir sur chacune des 9 « couleurs-clés » individuellement pour définir une transformation couleur personnalisée.</em></p>
<p>D’un point de vue technique, cette redéfinition des « couleurs-clés » entraîne dans un premier temps la construction d’une <a href="https://www.bromptontech.com/what-is-a-3d-lut/"><em>CLUT</em> (<em>Color LUT</em>)</a> interpolée dense en 3D, qui sert à modifier dans un second temps l’image d’entrée suivant les désidératas de l’utilisateur, comme illustré ci-dessous dans notre exemple avec le papillon :</p>
<p><a href="https://gmic.eu/gmic300/fullsize/fig_hsv.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f6669675f6873762e706e67/fig_hsv.png" alt="fig_hsv" title="Source : https://gmic.eu/gmic300/thumb/fig_hsv.png"></a><br>
<em>Fig.2.3.3. En interne, G’MIC génère une CLUT 3D modélisant la transformation colorimétrique souhaitée.</em></p>
<p>Les cas d’utilisation de ce filtre sont assez nombreux. Que ce soit pour une retouche locale de couleur (transformation d’une couleur en une autre), ou une retouche colorimétrique plus globale, ce filtre trouvera facilement sa place dans la boîte à outils du bidouilleur de couleurs. Dans la figure ci-dessous, nous utilisons par exemple ce filtre pour définir une ambiance couleur crépusculaire.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_tune_hsv2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f74756e655f687376322e706e67/gmic_tune_hsv2.png" alt="gmic_tune_hsv2" title="Source : https://gmic.eu/gmic300/thumb/gmic_tune_hsv2.png"></a><br>
<em>Fig.2.3.4. Transformation couleur globale appliquée sur une image de <a href="https://www.peppercarrot.com/fr/">Pepper & Carrot</a> de l’artiste <a href="https://www.davidrevoy.com/">David Revoy</a>.</em></p>
<p>Une vidéo de démonstration de ce filtre est visible sur la chaîne Youtube de Pierre « El Lobo », qui poste régulièrement des tutoriels en français sur l’utilisation de <em>GIMP</em>. Cliquez sur l’image ci-dessous pour y accéder. Plus de détails sur l’utilisation de ce filtre peuvent également être trouvés sur le <a href="https://discuss.pixls.us/t/filter-colors-tune-hsv-colors/21920">forum <em>de G’MIC</em></a> (en anglais).</p>
<p><a href="https://www.youtube.com/watch?v=AvfusCL0YpA"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f74756e655f6873762e706e67/small_video_tune_hsv.png" alt="video_tune_hsv" title="Source : https://gmic.eu/gmic300/thumb/small_video_tune_hsv.png"></a></p>
<p>Le deuxième filtre de retouche colorimétrique notable se nomme <strong>Colors / Transfer Colors [PCA]</strong>. Il permet de transférer les couleurs d’une image de référence vers une image que l’on souhaite modifier. Techniquement, ce transfert est réalisé en imposant la matrice de covariance de l’image à modifier pour correspondre à celle de l’image de référence.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_transfer_pca.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f7472616e736665725f7063612e706e67/gmic_transfer_pca.png" alt="gmic_transfer_pca" title="Source : https://gmic.eu/gmic300/thumb/gmic_transfer_pca.png"></a><br>
<em>Fig.2.3.5. Le filtre « Colors / Transfer Colors [PCA] » en action.</em></p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_transfer_pca.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f7472616e736665725f7063612e676966/gmic_transfer_pca.gif" alt="gmic_transfer_pca_anim" title="Source : https://gmic.eu/gmic300/fullsize/gmic_transfer_pca.gif"></a><br>
<em>Fig.2.3.6. Résultat du transfert de couleur. Les couleurs de l’image de référence (bonhommes de neige) ont été transférées à l’image de l’oiseau.</em></p>
<p>À noter que l’algorithme de transfert de couleurs sous-jacent n’est pas utilisé uniquement pour ce filtre, mais a également été intégré comme une sous-partie de traitements plus complexes (par exemple, le filtre <strong>Artistic / Stylize</strong> évoqué précédemment).</p>
<h3 id="toc-24-déformations-et-dégradations">2.4. Déformations et dégradations</h3>
<p>Les amateurs de déformations d’images et de <a href="https://en.wikipedia.org/wiki/Glitch_art">Glitch art</a> peuvent aussi trouver quelque intérêt dans cette nouvelle version <em>3.0</em> de <em>G’MIC</em>.</p>
<ul>
<li>D’abord, avec le nouveau filtre <strong>Deformations / Breaks</strong>, qui introduit aléatoirement des discontinuités triangulaires dans les images. Ce filtre provient initialement d’une demande de l’artiste <a href="https://www.davidrevoy.com/">David Revoy</a> pour générer une déformation proche de ce que donnait un autre filtre plus ancien, <strong>Deformations / Crease</strong>, mais avec des coupures plus nettes. Deux nouveaux modes de déformations ont ainsi été implémentés pour cet effet (modes <em>Flat</em> et <em>Relief</em>) avec le résultat suivant :</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_breaks.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f627265616b732e676966/gmic_breaks.gif" alt="gmic_breaks" title="Source : https://gmic.eu/gmic300/fullsize/gmic_breaks.gif"></a><br>
<em>Fig.2.4.1. Application des deux modes différents du filtre « Deformations / Breaks » sur une image couleur.</em></p>
<p>David Revoy nous montre ci-dessous une application de ce filtre de « cassures » d’images dans le domaine de l’illustration, pour un rendu d’éclairs magiques du plus bel effet !</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_breaks.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f627265616b732e706e67/gmic_breaks.png" alt="gmic_breaks_revoy" title="Source : https://gmic.eu/gmic300/thumb/gmic_breaks.png"></a><br>
<em>Fig.2.4.2. Utilisation du filtre « Deformations / Breaks » pour perturber la forme d’éclairs magiques.</em></p>
<p>Une vidéo plus détaillée d’utilisation de ce type de filtres par David Revoy est visible en suivant le lien suivant :<br>
<a href="https://www.youtube.com/watch?v=vopP_8kJMj8"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f6372656173652e706e67/small_video_crease.png" alt="video_crease" title="Source : https://gmic.eu/gmic300/thumb/small_video_crease.png"></a></p>
<ul>
<li>Autre effet très <em>glitchesque</em> : le filtre <strong>Degradations / Rebuild From Blocs</strong> s’évertue à reconstruire une image à partir de l’ensemble de ses blocs, en s’imposant néanmoins de ne pas les repositionner à leur place initiale, mais en s’autorisant à réutiliser un même bloc, si besoin. Comme on s’en doute, le résultat ressemble vaguement à l’image initiale mais avec un effet de bloc très prononcé.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_rebuild_from_blocs.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f72656275696c645f66726f6d5f626c6f63732e706e67/gmic_rebuild_from_blocs.png" alt="gmic_rebuild_from_blocs" title="Source : https://gmic.eu/gmic300/thumb/gmic_rebuild_from_blocs.png"></a><br>
<em>Fig.2.4.3. Le filtre « Degradations / Rebuild From Blocs » va changer les positions des blocs de l’image.</em></p>
<p>Il est amusant de remarquer que dans l’exemple ci-dessus, les blocs correspondant aux yeux de la demoiselle ont simplement été inversés dans les deux images !</p>
<ul>
<li>Enfin, le filtre <strong>Degradations / Blur [Multidirectional]</strong> applique, comme son nom l’indique, un effet de flou multi-directionnel sur l’image. Il est possible d’ajuster le nombre de directions de flous simultanées, ainsi que d’éventuellement rehausser les contrastes locaux dans l’image obtenue.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_blur_multi.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f626c75725f6d756c74692e706e67/gmic_blur_multi.png" alt="gmic_blur_multi" title="Source : https://gmic.eu/gmic300/thumb/gmic_blur_multi.png"></a><br>
<em>Fig.2.4.4. Le filtre « Degradations / Blur [Multidirectional] » en action.</em></p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_blur_multi2.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f626c75725f6d756c7469322e706e67/gmic_blur_multi2.png" alt="gmic_blur_multi2" title="Source : https://gmic.eu/gmic300/thumb/gmic_blur_multi2.png"></a><br>
<em>Fig.2.4.5. Résultats obtenus avec différents paramétrages du filtre.</em></p>
<h3 id="toc-25-rendus-de-formes-et-de-motifs">2.5. Rendus de formes et de motifs</h3>
<p>Rentrons maintenant dans le monde merveilleux des filtres de rendus. C’est une catégorie sans pareille où l’on déniche toutes sortes de bizarreries, des filtres qui semblent n’avoir aucune utilité, jusqu’au jour où ils deviennent parfaitement indispensables… ou pas ! Les filtres suivants, qui ont fait leur apparition dans <em>G’MIC</em> <em>3.0</em>, n’échappent pas à cette règle. Ils vous serviront sans doute rarement, mais ils sont quand même sympas !</p>
<ul>
<li>Commençons par le plus simple d’entre eux, le filtre <strong>Silhouettes / Others / Dragon Curve</strong> dont le but est de tracer la <a href="https://fr.wikipedia.org/wiki/Courbe_du_dragon">Courbe du Dragon</a>, une courbe fractale composée d’un unique tracé continu, construit de manière itérative.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_dragon.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f647261676f6e2e676966/gmic_dragon.gif" alt="gmic_dragoncurve" title="Source : https://gmic.eu/gmic300/fullsize/gmic_dragon.gif"></a><br>
<em>Fig.2.5.1. Différentes itérations de construction de la courbe du dragon.</em></p>
<ul>
<li>Enchaînons rapidement avec le filtre <strong>Rendering / Hypotrochoid</strong> qui, là aussi, a pour but de tracer une courbe sinusoïdale particulière, à savoir une <a href="https://fr.wikipedia.org/wiki/Hypotrocho%C3%AFde">Hypotrochoïde</a>. À quoi ça sert ? On ne sait pas vraiment, mais il ne faut jamais sous-estimer la puissance créatrice des artistes utilisateurs !</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_hypotrochoid.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f6879706f74726f63686f69642e706e67/gmic_hypotrochoid.png" alt="gmic_hypotrochoid" title="Source : https://gmic.eu/gmic300/thumb/gmic_hypotrochoid.png"></a><br>
<em>Fig.2.5.2. Le filtre « Rendering / Hypochotroid » en action.</em></p>
<ul>
<li>Toujours dans l’univers du tracé de courbes, attardons-nous un peu plus longuement sur le nouveau filtre <strong>Rendering / Sine Curve</strong>, qui définit une famille de <a href="https://fr.wikipedia.org/wiki/Repr%C3%A9sentation_param%C3%A9trique">courbes paramétriques</a> 2D ou 3D, avec un grand nombre de paramètres réglables par l’utilisateur (près de 50 !).</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_sine_curve.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f73696e655f63757276652e706e67/gmic_sine_curve.png" alt="gmic_sine_curve" title="Source : https://gmic.eu/gmic300/thumb/gmic_sine_curve.png"></a><br>
<em>Fig.2.5.3. Le filtre « Rendering / Sine Curve » en action.</em></p>
<p>Le nombre de paramètres est vraiment élevé et ce filtre propose donc un ensemble de pré-réglages servant de base pour jouer avec toutes les variations de courbes possibles. La figure ci-dessous illustre quelques-unes des formes prédéfinies offertes par l’algorithme.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_sine_curve_presets.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f73696e655f63757276655f707265736574732e706e67/gmic_sine_curve_presets.png" alt="gmic_sine_curve_presets" title="Source : https://gmic.eu/gmic300/thumb/gmic_sine_curve_presets.png"></a><br>
<em>Fig.2.5.4. Quelques pré-réglages de paramètres proposés par le filtre « Rendering / Sine Curve ».</em></p>
<p>Vous l’aurez compris, ce filtre permet de dessiner des courbes sinusoïdales paramétrées très variées. On pourra l’utiliser notamment pour générer des fonds d’écrans chatoyants. Pierre « El Lobo » a d’ailleurs réalisé un petit tutoriel vidéo sur ce filtre, visible sur sa chaîne Youtube (suivre le lien ci-dessous)<br>
<a href="https://www.youtube.com/watch?v=qp7B0M50MHk"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f73696e655f63757276652e706e67/small_video_sine_curve.png" alt="video_sine_curve" title="Source : https://gmic.eu/gmic300/thumb/small_video_sine_curve.png"></a></p>
<ul>
<li>Et si, plutôt que de se contenter de rendus de courbes 1D, on s’intéressait maintenant à la génération paramétrique d’images en 2D ? C’est ce que propose le filtre <strong>Patterns / Random Pattern</strong>, dont le fonctionnement est assez original : il génère une fonction mathématique aléatoire <code>f(z)</code> (<code>z</code> étant une variable complexe), composée de fonctions complexes de base (<code>cos()</code>, <code>sin()</code>, <code>pow()</code>…) et d’opérateurs (<code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>…), en construisant récursivement un arbre d’expression. <code>f(z)</code> est ensuite évaluée pour tous les points <code>z</code> de l’image, localisés dans un domaine rectangulaire, lui-même choisi aléatoirement. Les valeurs de <code>f(z)</code> sont finalement transformées en valeurs <em>RGB</em> pour déterminer les couleurs de tous les pixels de l’image.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_random_pattern.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f72616e646f6d5f7061747465726e2e706e67/gmic_random_pattern.png" alt="gmic_random_pattern" title="Source : https://gmic.eu/gmic300/thumb/gmic_random_pattern.png"></a><br>
<em>Fig.2.5.5. Le filtre « Patterns / Random Pattern » en action.</em></p>
<p>Notons que la construction de la fonction <code>f(z)</code> dépend uniquement de la graine aléatoire utilisée pour engendrer l’arbre d’expression. La figure ci-dessous illustre quelques rendus d’images obtenus avec différentes valeurs de graines aléatoires.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_random_pattern_all.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f72616e646f6d5f7061747465726e5f616c6c2e706e67/gmic_random_pattern_all.png" alt="gmic_random_pattern" title="Source : https://gmic.eu/gmic300/thumb/gmic_random_pattern_all.png"></a><br>
<em>Fig.2.5.6. Quelques exemples de motifs aléatoires générés par le filtre « Patterns / Random Pattern ».</em></p>
<ul>
<li>Les méthodes de génération récursive d’images peuvent produire des motifs géométriques originaux et intéressants, ce que semble également confirmer le filtre <strong>Patterns / Triangular Pattern</strong>. Il génère des images constituées de triangles récursivement subdivisés de différentes façons, chacune ayant une probabilité d’occurrence réglable par l’utilisateur.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_triangular.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f747269616e67756c61722e706e67/gmic_triangular.png" alt="gmic_triangular" title="Source : https://gmic.eu/gmic300/thumb/gmic_triangular.png"></a><br>
<em>Fig.2.5.7. Le filtre « Patterns / Triangular Pattern » en action.</em></p>
<p>Au fur et à mesure des itérations, on voit se former dans l’image des motifs géométriques de plus en plus complexes, comme le montre l’animation ci-dessous.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_triangular_shape_anim.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f747269616e67756c61725f73686170655f616e696d2e676966/gmic_triangular_shape_anim.gif" alt="gmic_triangular_anim" title="Source : https://gmic.eu/gmic300/fullsize/gmic_triangular_shape_anim.gif"></a><br>
<em>Fig.2.5.8. Visualisation des itérations de construction du motif triangulaire par le filtre « Patterns / Triangular Pattern ».</em></p>
<p>En augmentant le nombre d’itérations et en ne traçant que les contours des triangles subdivisés, on arrive à générer des motifs géométriques fractals vraiment remarquables, étant donnée la simplicité apparente de l’algorithme de subdivision de triangles, comme l’illustre la figure suivante. De quoi donner des idées de motifs pour carreler sa cuisine ou sa salle de bain !</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_triangular_patterns.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f747269616e67756c61725f7061747465726e732e706e67/gmic_triangular_patterns.png" alt="gmic_triangular_patterns" title="Source : https://gmic.eu/gmic300/thumb/gmic_triangular_patterns.png"></a><br>
<em>Fig.2.5.9. Quelques exemples de subdivisions triangulaires récursives aléatoires obtenues par le filtre « Patterns / Triangular Pattern ».</em></p>
<ul>
<li>Et en parlant de fractales, venons-en au filtre <strong>Rendering / Newton Fractal</strong> qui permet justement de naviguer dans les <a href="https://fr.wikipedia.org/wiki/Fractale_de_Newton">Fractales de Newton</a>, avec un grand nombre de paramètres ajustables. Ces fractales sont obtenues en cherchant à trouver les zéros d’une fonction complexe <code>f(z)</code> (souvent un polynôme) par la <a href="https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Newton">méthode de Newton</a>. Cette technique itérative construit une suite censée converger vers l’un des zéros de la fonction. Pour chaque point (complexe) <code>z</code> de l’image, on détermine donc sa couleur affichée en fonction du nombre d’itérations nécessaires pour arriver à convergence, ce qui donne ces motifs géométriques fractals de toute beauté.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_newton.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f6e6577746f6e2e706e67/gmic_newton.png" alt="gmic_newton" title="Source : https://gmic.eu/gmic300/thumb/gmic_newton.png"></a><br>
<em>Fig.2.5.10. Le filtre « Rendering / Newton Fractal » en action.</em></p>
<p>Dans <em>G’MIC-Qt</em>, le filtre propose à l’utilisateur de rentrer sa propre formule mathématique pour définir la fonction <code>f(z)</code>, ainsi que ses dérivées. Il offre aussi des options pour coloriser la fractale de manière personnalisée et pour se balader facilement dans l’espace fractal grâce à son navigateur intégré, simple mais efficace. Enfin, il étend le principe du calcul à d’autres méthodes de résolutions (<a href="https://fr.wikipedia.org/wiki/M%C3%A9thode_de_la_s%C3%A9cante">méthode de la Sécante</a> et <a href="https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Householder">méthode de Householder</a>). Et comme toujours avec <em>G’MIC</em>, il est aussi possible de scripter ce filtre à partir de la ligne de commande (avec la commande <code>gmic</code>), pour générer par exemple ce type d’animations :</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_newton_anim.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f6e6577746f6e5f616e696d2e676966/gmic_newton_anim.gif" alt="gmic_newton_anim" title="Source : https://gmic.eu/gmic300/fullsize/gmic_newton_anim.gif"></a><br>
<em>Fig.2.5.11. Génération d’un zoom dans une fractale de Newton, scriptée avec <code>gmic</code>.</em></p>
<ul>
<li>Toujours dans l’esprit « fractal », le nouveau filtre <strong>Rendering / Tree</strong> vous propose de générer des <a href="https://mathcurve.com/fractals/arbre/arbre.shtml">arbres fractals</a>, là encore avec de nombreux paramètres réglables pour varier les plaisirs.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_tree.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f747265652e706e67/gmic_tree.png" alt="gmic_tree" title="Source : https://gmic.eu/gmic300/thumb/gmic_tree.png"></a><br>
<em>Fig.2.5.12. Le filtre « Rendering / Tree » en action.</em></p>
<p>On peut ainsi ajuster, outre les couleurs du tronc et des feuilles, les tailles des branches et les probabilités de séparation des branches en plusieurs morceaux. Cela permet de générer des arbres à la géométrie et aux looks assez différents, comme vous pouvez le voir sur la figure ci-dessous.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_3_trees.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f335f74726565732e706e67/gmic_3_trees.png" alt="gmic_3_trees" title="Source : https://gmic.eu/gmic300/thumb/gmic_3_trees.png"></a><br>
<em>Fig.2.5.13. Exemples de rendus d’arbres avec des paramétrages différents, par le filtre « Rendering / Tree ».</em></p>
<p>La vidéo suivante illustre l’utilisation de ce filtre dans <em>GIMP</em> (cliquez sur l’image ci-dessous pour accéder à la vidéo).<br>
<a href="https://www.youtube.com/watch?v=Bsvv0nFFz4w"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f74726565732e706e67/small_video_trees.png" alt="video_trees.png" title="Source : https://gmic.eu/gmic300/thumb/small_video_trees.png"></a></p>
<ul>
<li>Un autre effet de rendu qui mérite d’être mis en lumière (sans mauvais jeu de mot…) est le filtre <strong>Light & Shadows / Guided Light Rays</strong>. Ce filtre permet de lancer des rayons lumineux à partir d’une source de lumière ponctuelle, vers ou à travers une forme quelconque dessinée par l’utilisateur et définie sous la forme d’un masque opaque placé sur un calque transparent au-dessus de l’image d’entrée.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_light2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f6c69676874322e706e67/gmic_light2.png" alt="gmic_guided_light_rays" title="Source : https://gmic.eu/gmic300/thumb/gmic_light2.png"></a><br>
<em>Fig.2.5.14. Le filtre « Light & Shadows / Guided Light Rays » en action.</em></p>
<p>Dans l’exemple ci-dessus, les rayons lumineux s’arrêtent lorsqu’ils rencontrent les pixels du logo <em>G’MIC</em>. Mais on peut aussi adapter les paramètres du filtre pour que les rayons traversent la forme. C’est ce qui est fait dans l’exemple ci-dessous, où le masque défini par l’utilisateur correspond à la surface vitrée des fenêtres d’un salon.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_light.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f6c696768742e706e67/gmic_light.png" alt="gmic_guided_light_rays" title="Source : https://gmic.eu/gmic300/thumb/gmic_light.png"></a><br>
<em>Fig.2.5.15. Rayons lumineux synthétisés pour passer à travers un masque défini par l’utilisateur.</em></p>
<p>Avec ce filtre, il est ainsi facile d’ajouter des effets d’éclairages personnalisés sur des photographies, comme montré dans l’exemple suivant. Le tout est de bien définir le masque de la forme guidant les rayons lumineux, et le filtre fait le reste !</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_guided_light_rays_anim.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f6775696465645f6c696768745f726179735f616e696d2e676966/gmic_guided_light_rays_anim.gif" alt="gmic_guided_light_rays_anim" title="Source : https://gmic.eu/gmic300/fullsize/gmic_guided_light_rays_anim.gif"></a><br>
<em>Fig.2.5.16. Ajout d’un effet d’éclairage latéral grâce au filtre « Light & Shadows / Guided Light Rays ».</em></p>
<p>La vidéo tutorielle suivante montre l’utilisation de ce filtre sous <em>GIMP</em> :<br>
<a href="https://www.youtube.com/watch?v=VRiWu_0BZvc"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f6c69676874726179732e706e67/small_video_lightrays.png" alt="video_lightrays" title="Source : https://gmic.eu/gmic300/thumb/small_video_lightrays.png"></a></p>
<ul>
<li>Enfin, pour conclure notre tour des nouveautés concernant les effets de rendus, terminons avec le filtre <strong>Sequences / Moiré Animation</strong> qui nous entraîne dans le monde merveilleux de l’animation basée sur les technologies (robustes) du siècle dernier, à savoir : la feuille de papier et le calque transparent ! Ce filtre va en effet permettre de créer, à peu de frais, une illusion d’optique animée, en générant des images ayant un <a href="https://fr.wikipedia.org/wiki/Moir%C3%A9_(physique)">effet Moiré</a>. À partir d’une animation donnée en entrée (contenant peu d’images), le filtre va produire une image fixe ainsi qu’un masque binaire contenant des barres verticales comme ci-dessous :</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_moire.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f6d6f6972652e706e67/gmic_moire.png" alt="gmic_moire" title="Source : https://gmic.eu/gmic300/thumb/gmic_moire.png"></a><br>
<em>Fig.2.5.17. Images générées par le filtre « Sequences / Moiré Animation » à partir d’une animation constituée de 5 images.</em></p>
<p>L’astuce consiste à imprimer la première image sur une page blanche et la seconde sur un calque transparent de même taille. En positionnant le transparent sur la page de manière adéquate, et en déplaçant celui-ci latéralement, on rend visible l’animation. En effet, les barres verticales imprimées sur le transparent ne laissent passer qu’une seule image de l’animation à la fois, ces images se succédant lorsque le transparent se déplace :</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_moire_anim.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f6d6f6972655f616e696d2e676966/gmic_moire_anim.gif" alt="gmic_moire_anim" title="Source : https://gmic.eu/gmic300/fullsize/gmic_moire_anim.gif"></a><br>
<em>Fig.2.5.18. Rendu de l’animation lorsque le transparent se déplace sur la page imprimée.</em></p>
<p>À noter que si le nombre d’étapes-clés de l’animation doit être effectivement restreint (en général, moins d’une dizaine, il n’est évidemment pas question de convertir un film de deux heures sous cette forme !), il n’y a pas de raisons de se limiter à des images en niveaux de gris. Les deux figures suivantes illustrent, par exemple, le rendu d’une animation couleur avec ce filtre.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_moire2.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f6d6f697265322e706e67/gmic_moire2.png" alt="gmic_moire" title="Source : https://gmic.eu/gmic300/thumb/gmic_moire2.png"></a><br>
<em>Fig.2.5.19. Images générées par le filtre « Sequences / Moiré Animation » à partir d’une animation couleur de 6 images.</em></p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_moire_anim2.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f6d6f6972655f616e696d322e676966/gmic_moire_anim2.gif" alt="gmic_moire_anim" title="Source : https://gmic.eu/gmic300/fullsize/gmic_moire_anim2.gif"></a><br>
<em>Fig.2.5.20. Rendu de l’animation lorsque le transparent se déplace sur la page imprimée.</em></p>
<p>« Tes exemples, c’est bien joli, mais en vrai, ça donne quoi ? », m’objecterez-vous. Eh bien, le ressenti d’animation est vraiment présent, comme on peut l’apprécier dans la vidéo ci-dessous :<br>
<a href="https://www.youtube.com/watch?v=f5plDb_JRq4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f6d6f6972652e706e67/small_video_moire.png" alt="video_moire" title="Source : https://gmic.eu/gmic300/thumb/small_video_moire.png"></a></p>
<p>Au final, c’est une manière peu onéreuse et amusante de créer des supports d’animation personnalisées. Les enfants, pas encore <s>lobotomisés</s> blasés par l’application <em>Youtube</em> de leur téléphone portable, adoreront !</p>
<h3 id="toc-26-se-maintenir-à-jour">2.6. Se maintenir à jour</h3>
<p>L’ensemble des filtres que nous venons de décrire ne représente qu’une sous-partie de tous les nouveaux filtres ajoutés ces deux dernières années. Il existe en particulier de nombreux filtres « communautaires » qui restent parfois dans l’ombre un certain temps avant d’intégrer la liste principale des filtres proposés (filtres de la catégorie <strong>Testing /</strong> notamment). Pour faciliter le suivi de ces mises à jour, <em>G’MIC-Qt</em> s’est donc doté de la fonction <strong>About / What's New?</strong>, dont le rôle est de lister les récentes additions et suppressions de filtres dans le greffon. Cette liste est adaptée à l’utilisateur, puisqu’elle est élaborée en fonction de la liste précédemment consultée par celui-ci.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_whatsnew.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f77686174736e65772e706e67/gmic_whatsnew.png" alt="gmic_whatsnew" title="Source : https://gmic.eu/gmic300/thumb/gmic_whatsnew.png"></a><br>
<em>Fig.2.6.1. Le filtre « About / What's New? » en action.</em></p>
<p>Pour rappel, le bouton <strong>Mettre à jour les filtres</strong> situé sous la liste déroulante des filtres permettra au greffon de vérifier si de nouveaux filtres sont disponibles, et le cas échéant, de les télécharger.</p>
<p>Ce tour d’horizon des nouveaux filtres de <em>G’MIC-Qt</em> est maintenant terminé. Mais d’autres améliorations du greffon nous attendent !</p>
<h3 id="toc-27-toujours-plus-de-logiciels-hôtes">2.7 Toujours plus de logiciels hôtes</h3>
<ul>
<li>L’une des nouvelles marquantes dans la vie de <em>G’MIC-Qt</em> concerne sa mise à disposition sous la forme d’un greffon compatible avec le protocole <a href="https://fileinfo.fr/extension/8bf"><em>8bf</em></a>. Cette <em>API</em> a été imaginée par <em>Adobe</em> dans les années 90 pour le développement de greffons pour son logiciel phare (et non-libre) <em>Photoshop</em>. C’est un protocole toujours utilisé, malgré son grand âge (et ses limitations techniques). Avec les années, cette <em>API</em> de greffon a même été adoptée par de nombreux autres logiciels d’illustration et de retouche photo. Par conséquent, cette version du greffon <em>G’MIC-Qt</em> peut en pratique être maintenant utilisée à l’intérieur de nombreux logiciels populaires, compatibles avec le protocole <em>8bf</em>, à savoir : <a href="https://fr.wikipedia.org/wiki/Adobe_Photoshop"><em>Adobe Photoshop</em></a>, <a href="https://fr.wikipedia.org/wiki/Affinity_Photo"><em>Affinity Photo</em></a>, <a href="https://fr.wikipedia.org/wiki/Corel_Paint_Shop_Pro"><em>Paint Shop Pro</em></a>, <a href="https://www.pl32.com/"><em>Photoline</em></a>, <a href="https://www.xnview.com/fr/"><em>XnView</em></a>, pour n’en citer que quelques-uns.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_8bf.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f3862662e706e67/gmic_8bf.png" alt="Greffon G’MIC-Qt sous Affinity Photo" title="Source : https://gmic.eu/gmic300/thumb/gmic_8bf.png"></a><br>
Fig.2.1.1. <em>Le greffon G’MIC-Qt tournant sous Affinity Photo / Windows.</em></p>
<p>C’est grâce à <a href="https://github.com/0xC0000054"><em>Nicholas Hayes</em></a>, déjà l’auteur du portage du greffon pour le logiciel <a href="https://www.getpaint.net/"><em>Paint.NET</em></a>, que cette version <em>8bf</em> de <em>G’MIC-Qt</em> a été réalisée. C’est une bonne nouvelle pour tous les utilisateurs de ces logiciels propriétaires, qui pourront bénéficier d’un nouveau greffon bien fourni en filtres divers de traitement d’images, avec la possibilité de les modifier et de les améliorer, et tout cela sans rien payer (ça va les changer ! ☺).</p>
<ul>
<li><p>Une autre bonne nouvelle concerne l’amélioration du support du greffon <em>G’MIC-Qt</em> pour <em>GIMP</em>, notamment sous <em>Windows</em>, où plusieurs utilisateurs nous avaient rapporté des problèmes de compatibilités avec les <code>.dll</code> fournies, lors de la sortie de la dernière version de <em>GIMP</em> (la 2.10.28). De plus, grâce aux modifications apportées par <a href="https://github.com/jtojnar">Jan Tojnar</a>, le greffon <em>G’MIC-Qt</em> peut maintenant se compiler pour la version 2.99 de <em>GIMP</em> (nom de la version de développement de <em>GIMP</em> qui deviendra la très attendue <em>3.0</em>). Mentionnons également l’arrivée du greffon <em>G’MIC-Qt</em> pour la version <a href="https://github.com/flathub/org.gimp.GIMP.Plugin.GMic">Flatpak</a> de <em>GIMP</em>, grâce au travail d’<a href="https://github.com/hfiguiere">Hubert Figuière</a> qui l’a empaqueté pour <a href="https://github.com/flathub">Flathub</a>.</p></li>
<li><p>Enfin, notons l’intégration attendue de <em>G’MIC-Qt</em> <em>3.0</em> dans la prochaine version majeure <em>5.0</em> du logiciel <em>Krita</em>, dont la sortie est planifiée ce mois de décembre. Cette intégration est prévue pour être complète et systématique, c’est-à-dire que <em>G’MIC-Qt</em> sera inclus par défaut dans <em>Krita</em>, et non plus installé comme un greffon extérieur (comme c’est le cas actuellement). Cela promet une meilleure intégration dans <em>Krita</em> et devrait régler plusieurs problèmes récurrents, en particulier pour les utilisateurs de <em>Mac</em>. C’est <a href="https://www.amyspark.me/"><em>amyspark</em></a>, avec qui nous sommes en contact, qui est en charge de cette intégration.</p></li>
</ul>
<h3 id="toc-28-améliorations-de-linterface">2.8. Améliorations de l’interface</h3>
<p>Le greffon a aussi vu son interface graphique s’améliorer, avec en particulier :</p>
<ul>
<li>La mise à disposition d’un système de <em>tags</em> colorés pouvant être assignés à un ou plusieurs filtres. Ces pastilles de couleur (6 couleurs différentes) permettent à l’utilisateur qui le souhaite de marquer certains filtres pour les retrouver plus facilement par la suite. Chaque utilisateur décide bien sûr du sens qu’il attribue à chaque couleur et les cas d’utilisation sont donc potentiellement nombreux : on peut utiliser ces <em>tags</em> de manière temporaire pour une session donnée, ou au contraire marquer les filtres sur du plus long terme. L’interface du greffon propose un système simple mais efficace pour gérer ces différents <em>tags</em> comme le montre l’animation ci-dessous :</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_qt_tags.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f71745f746167732e676966/gmic_qt_tags.gif" alt="gmic_qt_tags" title="Source : https://gmic.eu/gmic300/fullsize/gmic_qt_tags.gif"></a><br>
<em>Fig.2.8.1. Un nouveau système de « tags » colorés pour marquer les filtres a fait son apparition dans le greffon.</em></p>
<ul>
<li>L’apparition d’un bouton <em>« Copier la commande G’MIC dans le presse-papier »</em> localisé en haut à gauche du panneau contenant la liste des filtres :</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_qt_clipboard.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f71745f636c6970626f6172642e706e67/gmic_qt_clipboard.png" alt="gmic_qt_clipboard" title="Source : https://gmic.eu/gmic300/thumb/gmic_qt_clipboard.png"></a><br>
<em>Fig.2.8.2. Nouveau bouton de copie de la commande G’MIC dans le presse-papier.</em></p>
<p>Ce bouton ravira tous les scripteurs : en appuyant dessus, on obtient la commande <em>G’MIC</em> à invoquer dans le terminal avec l’outil en ligne de commande <code>gmic</code>, afin d’appliquer le filtre actuellement sélectionné avec ses valeurs de paramètres courantes. Voici par exemple ce que contient le presse-papier après avoir appuyé sur ce bouton dans l’exemple ci-dessus :</p>
<pre><code>fx_spherize 50,4.16,0,58.8136,52.1628,0,0,2,0
</code></pre>
<p>On peut alors recoller cette chaîne dans un appel à <code>gmic</code> en ligne de commande, pour obtenir exactement le même effet sur d’autres images, ou pour l’intégrer dans un pipeline plus complexe de traitement :</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_qt_clipboard2.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f71745f636c6970626f617264322e706e67/gmic_qt_clipboard2.png" alt="gmic_qt_clipboard2" title="Source : https://gmic.eu/gmic300/thumb/gmic_qt_clipboard2.png"></a><br>
<em>Fig.2.8.3. Application via le terminal de la commande G’MIC copiée depuis le greffon G’MIC-Qt, sur d’autres images.</em></p>
<p>C’est une fonctionnalité vraiment pratique, pour peu que vous écriviez vos propres scripts de traitement. On peut ainsi profiter de la commodité de l’interface graphique du greffon (en particulier sa fenêtre de prévisualisation) pour régler les paramètres d’un filtre, mais aussi du confort de la ligne de commande pour appliquer un traitement par lots sur plusieurs dizaines ou centaines de fichiers images.</p>
<ul>
<li>Citons également entre autres améliorations, le fait que <em>G’MIC-Qt</em> se dote d’un système de traduction amélioré (une version française complète est d’ailleurs prévue à court terme), et que l’<em>API</em> proposée par le greffon a été enrichie pour permettre plus de contrôle par le logiciel hôte. Ces améliorations sont par exemple utilisées par <em>G’MIC-Qt</em> pour proposer de <a href="https://github.com/c-koi/gmic-qt/blob/master/STANDALONE.md">nouvelles options</a> de contrôle via un appel en ligne de commande.</li>
</ul>
<h2 id="toc-3-améliorations-du-cœur-de-gmic">3. Améliorations du cœur de G’MIC</h2>
<p>Cette description des nouveautés visibles dans le greffon <em>G’MIC-Qt</em> étant achevée, abordons les autres améliorations apportées par cette version <em>3.0</em>. Beaucoup de choses intéressantes ont été ajoutées au cœur du projet <em>G’MIC</em>, à savoir son interpréteur et sa bibliothèque de traitement d’image associée <a href="http://cimg.eu"><em>CImg</em></a>, qui passent également en version <em>3.0</em> pour l’occasion. Ces nouveautés sont certes moins visibles, mais tout aussi importantes puisqu’elles ont un impact potentiel sur l’ensemble des interfaces du projet !</p>
<h3 id="toc-31-améliorations-du-langage-et-de-linterpréteur">3.1. Améliorations du langage et de l’interpréteur</h3>
<ul>
<li>Commençons par la fonctionnalité qui a demandé le plus d’effort de développement, que nous avons déjà évoquée précédemment : l’implémentation d’une bibliothèque interne d’<a href="https://fr.wikipedia.org/wiki/Apprentissage_automatique">apprentissage machine</a> (<code>nn_lib</code>). Cette bibliothèque permet de manipuler des <a href="https://fr.wikipedia.org/wiki/R%C3%A9seau_de_neurones_artificiels">réseaux de neurones</a> génériques et prend en charge à la fois la phase d’apprentissage du réseau et la phase d’inférence. Cette bibliothèque a été ré-implémentée à partir de zéro, ce qui représente un effort réellement conséquent de recherche, d’implémentation et de tests (mais ça a été aussi un travail ô combien instructif !). <code>nn_lib</code> permet la construction dans <em>G’MIC</em> de réseaux de neurones comportant des modules convolutifs ou complètement connectés, des modules de <em>pooling</em>, des modules résiduels, etc. Plusieurs optimiseurs ont été implémentés pour gérer l’apprentissage (<code>SGD</code>, <code>RMSprop</code>, <code>Adam</code>, <code>Adamax</code>) et il est donc déjà possible d’entraîner des réseaux pour certaines tâches de traitement d’images avec cette nouvelle bibliothèque. Le diagramme ci-dessous illustre par exemple l’une des architectures de réseau qui a été entraînée dans le cadre du nouveau filtre de débruitage <strong>Repair / Denoise</strong> cité auparavant.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_denoise_nn.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f64656e6f6973655f6e6e2e706e67/gmic_denoise_nn.png" alt="gmic_denoise_nn" title="Source : https://gmic.eu/gmic300/thumb/gmic_denoise_nn.png"></a><br>
<em>Fig.3.1. Une des architectures de réseau de neurones entraîné pour le nouveau filtre de débruitage « Repair / Denoise ».</em></p>
<p>Ce n’est bien sûr encore qu’un début, mais nous espérons généraliser l’utilisation de <code>nn_lib</code> pour élaborer de nouveaux filtres intéressants dans un avenir proche. Plus de détails techniques sur la bibliothèque <code>nn_lib</code> sont visibles dans <a href="https://discuss.pixls.us/t/machine-learning-library-in-gmic">l’article dédié</a> (en anglais) sur le forum de <em>G’MIC</em>.</p>
<ul>
<li>Une autre amélioration notable concerne la ré-implémentation dans <em>G’MIC</em> d’un interpréteur de langage <a href="https://fr.wikipedia.org/wiki/Markdown"><em>Markdown</em></a> étendu : le <code>gmd</code> (comme <a href="https://gmic.eu/reference/g_mic_markdown.html"><em><strong>G</strong>’MIC <strong>M</strong>ark*<em>d</em>*own</em></a>). Ce moteur de rendu <em>Markdown</em> est maintenant celui utilisé pour produire la <a href="https://gmic.eu/reference/">documentation de référence</a> et les <a href="https://gmic.eu/tutorial/">pages de tutoriels</a>, visibles sur la page web du projet. Il est aussi utilisé pour l’affichage de l’aide sur le terminal lorsque l’on invoque <em>G’MIC</em> en ligne de commande (avec <code>gmic -h</code> par exemple). L’apparition de ce nouvel analyseur <em>Markdown</em> va donc de pair avec une amélioration globale de la documentation disponible pour le projet.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_tutref.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f7475747265662e706e67/gmic_tutref.png" alt="gmic_tutorial_reference" title="Source : https://gmic.eu/gmic300/thumb/gmic_tutref.png"></a><br>
<em>Fig.3.1. Le nouvel analyseur Markdown de G’MIC est utilisé pour le rendu de la documentation web de référence.</em></p>
<ul>
<li>La gestion de nouvelles palettes de couleurs personnalisées a été améliorée, avec l’introduction d’une nouvelle commande <a href="https://gmic.eu/reference/palette"><code>palette</code></a> mettant à disposition 34 palettes de couleurs prédéfinies, chacune composée de 256 couleurs <em>RGB</em> (certaines étant récupérées depuis <a href="https://matplotlib.org/cmocean/">CMOcean</a> et <a href="https://lospec.com/palette-list">LOSPEC</a>) :</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_palettes.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f70616c65747465732e706e67/gmic_palettes.png" alt="gmic_palettes" title="Source : https://gmic.eu/gmic300/thumb/gmic_palettes.png"></a><br>
<em>Fig.3.2. Ensemble des palettes de couleurs proposées par défaut dans G’MIC.</em></p>
<p>De plus l’utilisateur de l’interpréteur <em>G’MIC</em> a maintenant la possibilité de définir et nommer ses propres palettes de couleurs qui seront utilisables dans les commandes <a href="https://gmic.eu/reference/map"><code>map</code></a> ou <a href="https://gmic.eu/reference/_index"><code>index</code></a>, servant à appliquer ces palettes sur des images couleurs. Les dites palettes sont généralement utiles à des fins de visualisation couleur de données scalaires. Par exemple, la colorisation d’une <a href="https://fr.wikipedia.org/wiki/Ensemble_de_Mandelbrot">fractale de Mandelbrot</a> peut se faire très simplement en <em>G’MIC</em> avec la ligne de commande suivante :</p>
<pre><code>$ gmic 600,600 mandelbrot -1.0132,-0.316356,-1.00227,-0.305418,512 map amiga7800
</code></pre>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_mandelbrot.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f6d616e64656c62726f742e706e67/gmic_mandelbrot.png" alt="gmic_mandelbrot" title="Source : https://gmic.eu/gmic300/thumb/gmic_mandelbrot.png"></a><br>
<em>Fig.3.3. Résultat de l’application de la palette de couleur <code>amiga7800</code> sur une fractale de Mandelbrot.</em></p>
<ul>
<li>Au niveau du rendu d’objets maillés en 3D, deux nouveautés sont à signaler : d’abord la ré-implémentation du visualiseur 3D (commande <a href="https://gmic.eu/reference/display3d"><code>display3d</code></a>) qui a été ré-écrit directement en langage <em>G’MIC</em> et qui sera donc plus simple à maintenir et à faire évoluer.</li>
</ul>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_solenoid.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f736f6c656e6f69642e706e67/gmic_solenoid.png" alt="gmic_solenoid" title="Source : https://gmic.eu/gmic300/thumb/gmic_solenoid.png"></a><br>
<em>Fig.3.4. Aperçu du nouveau visualiseur 3D d’objets maillés de G’MIC.</em></p>
<p>Ensuite, notons la possibilité maintenant offerte d’exporter un objet 3D maillé construit dans <em>G’MIC</em> (typiquement avec une génération procédurale) sous la forme d’un fichier <code>.obj</code> en format <a href="https://fr.wikipedia.org/wiki/Objet_3D_(format_de_fichier)"><em>Wavefront</em></a>, un format <em>ASCII</em> simple que la plupart des modeleurs 3D sait relire. Voici, illustré ci-dessous, un exemple d’importation d’un objet 3D généré récursivement sous <em>G’MIC</em> et ré-importé dans <a href="https://www.blender.org/"><em>Blender</em></a>, grâce à l’utilisation de ce format de fichier <em>Wavefront</em>.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_blender.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f626c656e6465722e706e67/gmic_blender.png" alt="gmic_blender" title="Source : https://gmic.eu/gmic300/thumb/gmic_blender.png"></a><br>
<em>Fig.3.5. Importation dans Blender d’un objet 3D généré par G’MIC de manière procédurale.</em></p>
<ul>
<li><p>Toujours en restant dans le domaine des entrées-sorties, notons l’apparition ou l’amélioration du support de certains formats de fichiers, tels que ceux ayant les extensions <code>.png</code>, <code>.tiff</code>, <code>.csv</code>, <code>.webp</code>, <code>.arw</code>, <code>.cr2</code>, <code>.nef</code>, <code>.dng</code>, <code>.heic</code>, <code>.avif</code> (ces deux derniers n’étant cependant pas activés par défaut).</p></li>
<li><p>Deux nouvelles commandes <a href="https://gmic.eu/reference/lorem"><code>lorem</code></a> et <a href="https://gmic.eu/reference/portrait"><code>portrait</code></a> apparaissent également et permettent de récupérer des images aléatoires à partir de deux services web différents : <a href="https://picsum.photos/"><em>Lorem Picsum</em></a> et <a href="https://thispersondoesnotexist.com/"><em>ThisPersonDoesNotExist</em></a>. Elles sont assez pratiques pour tester des filtres rapidement sur des images quelconques, sans avoir à les stocker explicitement sur le disque dur. Par exemple, la commande :</p></li>
</ul>
<pre><code>$ gmic +lorem 800 +portrait 800
</code></pre>
<p>pourra vous afficher ceci :</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_lorem_portrait.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f6c6f72656d5f706f7274726169742e706e67/gmic_lorem_portrait.png" alt="gmic_lorem_portrait" title="Source : https://gmic.eu/gmic300/thumb/gmic_lorem_portrait.png"></a><br>
<em>Fig.3.6. Aperçu du résultat des nouvelles commandes <code>lorem</code> et <code>portrait</code>.</em></p>
<ul>
<li>Notons enfin que <code>gmic</code>, l’interface en ligne de commande de <em>G’MIC</em>, accepte désormais la définition de <a href="https://fr.wikipedia.org/wiki/Point_d%27entr%C3%A9e">points d’entrées</a> dans des fichiers scripts d’extension <code>.gmic</code>, et que l’on peut donc rendre désormais de tels fichiers exécutables (avec le <a href="https://fr.wikipedia.org/wiki/Shebang">Shebang</a>). Par exemple, sous <em>Unix</em>, le fichier <code>test.gmic</code> suivant pourra être rendu directement exécutable et lancé depuis un terminal :</li>
</ul>
<pre><code>#!/usr/bin/env gmic
# File 'test.gmic'
echo[] "Salut les amis de Linuxfr !"
</code></pre>
<h3 id="toc-32-améliorations-de-lévaluateur-dexpressions-mathématiques">3.2. Améliorations de l’évaluateur d’expressions mathématiques</h3>
<p>Le domaine du traitement numérique des images se base essentiellement sur des modélisations mathématiques des images et des algorithmes que l’on souhaite appliquer. <em>G’MIC</em>, en bon professionnel du traitement d’images, possède donc son propre évaluateur d’expressions mathématiques, et celui-ci a aussi vu son état général s’améliorer avec le passage à cette nouvelle version <em>3.0</em>. Pour résumer, c’est plus de 40 nouvelles fonctions mathématiques qui ont été implémentées dans cet évaluateur ces deux dernières années, afin d’améliorer ses capacités de calcul :<br>
<code>store()</code>, <code>date()</code>, <code>begin_t()</code>, <code>end_t()</code>, <code>merge()</code>, <code>f2ui()</code>, <code>ui2f()</code>, <code>ccos()</code>, <code>csin()</code>, <code>ctan()</code>, <code>ccosh()</code>, <code>csinh()</code>, <code>ctanh()</code>, <code>lerp()</code>, <code>maxabs()</code>, <code>minabs()</code>, <code>argmaxabs()</code>, <code>argminabs()</code>, <code>da_size()</code>, <code>da_insert()</code>, <code>da_push()</code>, <code>da_remove()</code>, <code>da_pop()</code>, <code>da_back()</code>, <code>isvarname()</code>, <code>resize()</code>, <code>fill()</code>, <code>repeat()</code>, <code>set()</code>, <code>deg2rad()</code>, <code>rad2deg()</code>, <code>swap()</code>, <code>vargkth()</code>, <code>vargmin()</code>, <code>vargmax()</code>, <code>vargminabs()</code>, <code>vargmaxabs()</code>, <code>vavg()</code>, <code>vkth()</code>, <code>vmin()</code>, <code>vmax()</code>, <code>vminabs()</code>, <code>vmaxabs()</code>, <code>vmed()</code>, <code>vprod()</code>, <code>vstd()</code>, <code>vsum()</code>, <code>vvar()</code>, <code>string()</code>.</p>
<p>Ces fonctions ont été ajoutées au fur et à mesure des besoins et aujourd’hui, de plus en plus de filtres complexes de <em>G’MIC</em> en bénéficient. Un travail d’optimisation important a également été réalisé ces dernières années pour rendre cet évaluateur de plus en plus performant, notamment en favorisant le calcul parallèle lorsque cela est possible. Plutôt que de rentrer dans des détails techniques rébarbatifs sur l’implémentation et l’optimisation de ce module, je vous propose ici un exemple qui montre la façon dont on peut utiliser cet évaluateur dans un pipeline <em>G’MIC</em>. Ici, on cherche à produire une image de <a href="https://fr.wikipedia.org/wiki/Buddhabrot">Buddhabrot</a>, une représentation particulière de l’<a href="https://fr.wikipedia.org/wiki/Ensemble_de_Mandelbrot">ensemble de Mandelbrot</a>. Ci-dessous à gauche, on peut voir le contenu du fichier <code>buddhabrot.gmic</code> définissant la commande <code>buddhabrot</code>, qui produit l’image de droite. L’évaluateur d’expressions mathématiques de <em>G'MIC</em> est appelé entre les lignes <code>9</code> et <code>27</code>, ce qui correspond donc à une unique expression. Comme on le voit, cet évaluateur est capable de compiler puis d’exécuter une expression qui se trouve être en réalité un vrai petit programme !</p>
<p><a href="https://gmic.eu/gmic300/fullsize/gmic_buddhabrot_all.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f66756c6c73697a652f676d69635f62756464686162726f745f616c6c2e706e67/gmic_buddhabrot_all.png" alt="gmic_buddhabrot_all" title="Source : https://gmic.eu/gmic300/fullsize/gmic_buddhabrot_all.png"></a><br>
<em>Fig.3.2.1. Génération d’une image de Buddhabrot avec un script G'MIC.</em></p>
<p>L’évaluateur mathématique est vraiment un élément essentiel du cadriciel <em>G’MIC</em> et continuera probablement d’évoluer au fil des prochaines versions.</p>
<h2 id="toc-4-autres-informations-notables">4. Autres informations notables</h2>
<p>En a-t-on terminé avec cette dépêche ? Pas encore ! Car travailler sur le projet <em>G’MIC</em>, c’est évidemment passer beaucoup de soirées à faire de la recherche, de la programmation et du test de nouvelles fonctionnalités, mais une part importante du temps passé concerne également la gestion des éléments annexes, à savoir : répondre aux questions sur les forums ou les forges <em>github</em>, trouver des financements pour faire avancer le projet plus rapidement, ou encore communiquer autour du projet (par exemple en écrivant des dépêches <em>LinuxFr.org</em> ☺ !). Et sur ces différents points, il s’est passé des choses appréciables, depuis fin 2019 :</p>
<ul>
<li><p>D’abord, nous avons eu le privilège d’obtenir deux financements (deux <em>CDD 12 mois</em>), dans le cadre de l’appel <em>« Soutien Plateforme »</em> de l’<a href="https://ins2i.cnrs.fr/">Institut INS2I</a> du CNRS. Ces financements ont permis consécutivement le recrutement de deux ingénieurs de développement pour travailler sur le projet <em>G’MIC</em>. Le premier (2018-2019), on le connait tous ici, puisqu’il s’agit de <a href="//linuxfr.org/users/jehan">Jehan</a> qui écrit les fameuses dépêches <em>LinuxFr.org</em> sur <em>GIMP</em> (et qui est par ailleurs contributeur majeur de <em>GIMP</em>). Nous avions d’ailleurs décrit ses apports dans <a href="//linuxfr.org/news/g-mic-2-7-0-une-rentree-pleine-de-style-pour-le-traitement-d-images">notre dépêche précédente</a>.</p></li>
<li><p>Le deuxième ingénieur (2019-2020), <a href="https://github.com/myselfhimself">Jonathan-David Schröder</a> a réalisé un travail conséquent pour l’implémentation d’un <em>binding G’MIC</em> pour le langage <em>Python</em> : <a href="https://pypi.org/project/gmic/">https://pypi.org/project/gmic/</a>. Ce <em>binding</em> est pour le moment figé à une version antérieure (<em>2.9.2</em>) de <em>G’MIC</em> et il reste a priori quelques corrections à réaliser, mais c’est une interface qu’on aimerait bien mettre sur le devant de la scène. Espérons que cela suscitera l’intérêt de nouveaux contributeurs extérieurs, experts en <em>Python</em>, pourquoi pas ? En 2020, Jonathan-David a présenté l’avancement de son travail lors du <a href="https://libregraphicsmeeting.org/2020/fr/index.html"><em>Libre Graphics Meeting</em></a> qui a eu lieu en ligne. Sa présentation est disponible en cliquant sur le lien suivant :<br>
<a href="https://www.youtube.com/watch?v=qbJv7QScs3s"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f6c676d323032302e706e67/small_video_lgm2020.png" alt="video_lgm2020" title="Source : https://gmic.eu/gmic300/thumb/small_video_lgm2020.png"></a></p></li>
</ul>
<p>Dans les deux cas, ces financements ont été fructueux et ont permis d’ouvrir le projet <em>G’MIC</em> à d’autres horizons (sans parler du plaisir d’interagir avec ces deux ingénieurs de talent !).</p>
<ul>
<li>Une autre nouvelle notable concerne le volet « communication » autour du projet, avec le développement et la mise en place de la borne tactile <strong><em>Virtual Artist</em></strong> (« Artiste Virtuel » en français). Cette borne interactive montre le principe du transfert de style entre deux images. Elle permet d’initier le grand-public au domaine de l’algorithmique du traitement d’images, avec une application artistique directe et amusante. Elle est constituée d’une table tactile sur laquelle tourne un script <em>G’MIC</em> qui implémente à la fois l’interface utilisateur et l’algorithme de transfert de style démontré. La vidéo ci-dessous illustre le fonctionnement de cette borne (cliquez sur l’image pour ouvrir le lien) :
<a href="https://www.youtube.com/watch?v=us_7SkNajm0"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69635f7669727475616c5f6172746973742e706e67/gmic_virtual_artist.png" alt="Virtual Artist" title="Source : https://gmic.eu/gmic300/thumb/gmic_virtual_artist.png"></a>
</li>
</ul>
<p><strong><em>Virtual Artist</em></strong> constitue un support intéressant pour la médiation scientifique auprès du grand-public. Elle a été utilisée par exemple lors du <a href="https://www.normandie.fr/feno"><em>FÉNO 2021</em></a> (Festival de l’Excellence Normande qui s’est tenu à Rouen), sur le stand du CNRS.</p>
<p><a href="https://gmic.eu/gmic300/fullsize/feno2021.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f66656e6f323032312e706e67/feno2021.png" alt="feno2021" title="Source : https://gmic.eu/gmic300/thumb/feno2021.png"></a><br>
<em>Fig.4.1. La table tactile « Virtual Artist » du GREYC, en action, lors du FÉNO 2021.</em></p>
<ul>
<li><p>Et toujours pour rester dans le domaine de la communication, notons que <em>G’MIC</em> a eu droit à une petite séquence vidéo de présentation lors de la <a href="https://www.fetedelascience.fr/">Fête de la Science 2020</a>, réalisée par le service communication de la <a href="https://www.normandie.cnrs.fr/fr/delegation">délégation CNRS Normandie</a>. Cliquez sur l’image ci-dessous pour découvrir cette vidéo :<br>
<a href="https://youtu.be/qP_rVje6VFA?t=214"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f666473323032302e706e67/small_video_fds2020.png" alt="video_fds2020" title="Source : https://gmic.eu/gmic300/thumb/small_video_fds2020.png"></a></p></li>
<li><p>Toujours en ce qui concerne la communication, nous voulions en profiter pour annoncer que la mascotte « Gmicky » du projet (le petit tigre magicien) avait été réalisée en crochet par Florence, de <a href="https://www.doomyflocrochet.com/">Doomyflocrochet</a>. Florence réalise des versions crochet de <a href="https://www.doomyflocrochet.com/boutique/amigurumi-linux/">mascottes de projets libres</a> qui sont bien sympathiques, et qu’on vous invite à aller voir (et pourquoi pas, à commander).</p></li>
</ul>
<p><a href="https://www.doomyflocrochet.com/boutique/amigurumi-linux/gmicky-tigre-magicien-mascotte-gmic-en-coton-au-crochet/"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f676d69636b795f63726f636865742e706e67/gmicky_crochet.png" alt="Gmicky Crochet" title="Source : https://gmic.eu/gmic300/thumb/gmicky_crochet.png"></a><br>
<em>Fig.4.1. « Gmicky », la mascotte du projet G’MIC, réalisée en crochet.</em></p>
<ul>
<li>Enfin, plus généralement, pour ceux qui souhaiteraient se plonger plus profondément dans la programmation d’algorithmes de traitement d’images, mentionnons la sortie du livre <a href="https://www.editions-ellipses.fr/accueil/13463-le-traitement-numerique-des-images-en-c-implementation-dalgorithmes-avec-la-bibliotheque-cimg-9782340045965.html">« Le traitement numérique des images en C++ »</a> (Éd. Ellipses, 318 pages), que j’ai coécrit avec mes collègues de l'Université Clermont Auvergne, <a href="https://perso.isima.fr/%7Evibarra/">Vincent Barra</a> et <a href="http://christophe.tilmant.free.fr/">Christophe Tilmant</a>, pendant la période de confinement de 2020. Vous y trouverez une présentation de <a href="http://cimg.eu">CImg</a>, la bibliothèque C++ de traitement d’images (dont je suis l’auteur) et sur laquelle la majeure partie des fonctionnalités de <em>G’MIC</em> reposent, ainsi que des ateliers variés autour de différentes thématiques et applications du traitement d’images.</li>
</ul>
<p><a href="https://www.editions-ellipses.fr/accueil/13463-le-traitement-numerique-des-images-en-c-implementation-dalgorithmes-avec-la-bibliotheque-cimg-9782340045965.html"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f626f6f6b5f63696d672e706e67/book_cimg.png" alt="Book CImg" title="Source : https://gmic.eu/gmic300/thumb/book_cimg.png"></a><br>
<em>Fig.4.2. Un livre pour approfondir ses connaissances en algorithmique du traitement d’images, avec la bibliothèque CImg, sur laquelle est basé G'MIC.</em></p>
<h2 id="toc-5-et-ensuite">5. Et ensuite ?</h2>
<p>Depuis 2008, <em>G’MIC</em> n’a cessé d’être un projet actif, et ce, même si nous n’avons jamais défini de feuille de route très précise. Le développement de nouvelles fonctionnalités se réalise en fonction du temps et des opportunités de chacun, ainsi que des activités de recherche en traitement d’images que nous menons en parallèle dans notre équipe de recherche au laboratoire <em>GREYC</em>. Nous espérons seulement que ce temps ne finira pas inévitablement par nous faire défaut ! Avoir une activité de chercheur ou d’enseignant-chercheur semble parfois assez incompatible avec une activité de développement logiciel libre, qui est un travail à la fois très prenant et en même temps pas forcément très bien valorisé lors d’un suivi de carrière. Il peut donc être tentant de se focaliser sur des activités plus « rentables » d’un point de vue professionnel.</p>
<p>À titre personnel, je souhaiterais donc adresser des <strong>remerciements appuyés</strong> au <a href="https://www.greyc.fr/">laboratoire <em>GREYC</em></a> (notamment la direction, le service gestion et le service DDA), la <a href="https://www.normandie.cnrs.fr/fr/delegation">Délégation <em>CNRS</em> Normandie</a> (notamment le service Valorisation, le service Communication et le service <em>RH</em>), l’<a href="https://www.ins2i.cnrs.fr/fr/institut">Institut <em>INS2I</em></a> du <em>CNRS</em>, l’association <a href="https://libreart.info/fr/"><em>LILA</em></a>, mon collègue <a href="https://foureys.users.greyc.fr/Fr/index.php">Sébastien Fourey</a> (co-développeur principal du projet), les membres de l’association <a href="https://pixls.us/"><em>PIXLS.US</em></a> (qui héberge <a href="https://discuss.pixls.us/c/software/gmic/">notre forum de discussion</a>) ainsi que tous les contributeurs au projet, les utilisateurs faisant des retours gentils, <a href="https://github.com/dtschump/gmic/issues">utiles</a>, ou même <a href="https://libreart.info/en/projects/gmic">financiers</a>. Toutes ces personnes qui ont cru au projet à un moment donné et en la capacité de ses développeurs nous ont apporté leur soutien d’une manière ou d’une autre. Cela nous a permis de ne jamais abandonner le développement de <em>G'MIC</em>, depuis 2008. Qu’ils en soient vraiment remerciés !</p>
<p>Cette dépêche est quasiment terminée, merci d’avoir tenu jusqu’au bout ! J’essayerai autant que possible de répondre aux questions que vous pourrez poser dans les commentaires.</p>
<h2 id="toc-6-ressources-complémentaires">6. Ressources complémentaires</h2>
<p>Pour vraiment clore cette dépêche et contenter les lecteurs encore réveillés et qui pourraient être restés sur leur faim, voici une petite sélection de vidéos à regarder, pour occuper les longues soirées d’hiver qui arriveront dans les prochaines semaines :</p>
<ul>
<li><p>Découverte de G’MIC pour GIMP (en français) : <em>« GIMP 2.10.22 : Tuto 198 ( Filtres G’Mic ) »</em>.<br>
<a href="https://www.youtube.com/watch?v=rNXj83DVmrM"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f676d69635f67696d702e706e67/small_video_gmic_gimp.png" alt="video_gmic_gimp" title="Source : https://gmic.eu/gmic300/thumb/small_video_gmic_gimp.png"></a></p></li>
<li><p>Découverte de <em>G’MIC</em> pour <em>Affinity Photo</em> (en français) : <em>« Tutoriel sur l’installation et l’utilisation du plugin G’MIC pour Affinity Photo »</em>.<br>
<a href="https://www.youtube.com/watch?v=VkUXiV1rJJU"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f616666696e6974795f66722e706e67/small_video_affinity_fr.png" alt="video_affinity_fr" title="Source : https://gmic.eu/gmic300/thumb/small_video_affinity_fr.png"></a></p></li>
<li><p>Découverte de <em>G’MIC</em> (en anglais) : « G’MIC—Free Image Manipulation Powerhouse ».<br>
<a href="https://www.youtube.com/watch?v=1agzsBn7ZE0"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f676d69635f706f776572686f7573652e706e67/small_video_gmic_powerhouse.png" alt="video_gmic_powerhouse" title="Source : https://gmic.eu/gmic300/thumb/small_video_gmic_powerhouse.png"></a></p></li>
<li><p>Découverte de <em>G’MIC</em> (en anglais) : <em>« G’MIC: An Amazing, Free Plugin »</em>.<br>
<a href="https://www.youtube.com/watch?v=p3h8SASo1nI"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f676d69635f616d617a696e672e706e67/small_video_gmic_amazing.png" alt="video_gmic_amazing" title="Source : https://gmic.eu/gmic300/thumb/small_video_gmic_amazing.png"></a></p></li>
<li><p>Présentation de différentes techniques pour transformer une photographie en <em>cartoon</em> (en anglais) : <em>« G’mic for Krita - Three ways to turn a photograph into a cartoon »</em>.<br>
<a href="https://www.youtube.com/watch?v=d0KiBfRLiUQ"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f6b726974615f636172746f6f6e2e706e67/small_video_krita_cartoon.png" alt="video_krita_cartoon" title="Source : https://gmic.eu/gmic300/thumb/small_video_krita_cartoon.png"></a></p></li>
<li><p>Présentation de G’MIC pour Krita (en anglais) : <em>« G’mic for Krita - Step by Step tutorial on how to use this amazing FREE image manipulation plugin »</em>.<br>
<a href="https://www.youtube.com/watch?v=pZHS7lgUSM4"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f6b726974615f676d69632e706e67/small_video_krita_gmic.png" alt="video_krita_gmic" title="Source : https://gmic.eu/gmic300/thumb/small_video_krita_gmic.png"></a></p></li>
<li><p>Présentation <em>G’MIC</em> au <em>Libre Graphics Meeting 2021</em> (en anglais) : <em>« How to make 890+ Color LUTs fit in 3.3Mb ? »</em>.<br>
<a href="https://www.youtube.com/watch?v=YlIDXVDI15E"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f6c676d323032312e706e67/small_video_lgm2021.png" alt="video_lgm2021" title="Source : https://gmic.eu/gmic300/thumb/small_video_lgm2021.png"></a></p></li>
<li><p>Utilisation du filtre <strong>Degradations / Rain & Snow</strong> de <em>G’MIC</em> (en français) : <em>« Tutoriel Krita - Comment dessiner la pluie dans Krita avec G’MIC »</em>.<br>
<a href="https://www.youtube.com/watch?v=7V1D5OlUq4o"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f7261696e2e706e67/small_video_rain.png" alt="video_rain" title="Source : https://gmic.eu/gmic300/thumb/small_video_rain.png"></a></p></li>
<li><p>Utilisation du filtre <strong>Artistic / Hough Sketch</strong> de <em>G’MIC</em> (en français) : <em>« Amusez vous avec Hough Sketch de G’MIC dans GIMP »</em>.<br>
<a href="https://www.youtube.com/watch?v=5wM1-Wg8bhg"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f686f7567685f736b657463682e706e67/small_video_hough_sketch.png" alt="video_hough_sketch" title="Source : https://gmic.eu/gmic300/thumb/small_video_hough_sketch.png"></a></p></li>
<li><p>Utilisation du filtre <strong>Artistic / Stylize</strong> de <em>G’MIC</em> (en anglais) : <em>« Using the G’MIC Stylize filter in Krita with flat texture patterns »</em>.<br>
<a href="https://www.youtube.com/watch?v=BwZNyNo0yjY"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633330302f7468756d622f736d616c6c5f766964656f5f746578747572652e706e67/small_video_texture.png" alt="video_texture" title="Source : https://gmic.eu/gmic300/thumb/small_video_texture.png"></a></p></li>
<li><p><strong>Note finale</strong> : cette dépêche est un résumé (si, si !) des notes de versions détaillées suivantes : <a href="https://discuss.pixls.us/t/release-of-gmic-2-8">notes de version <em>2.8</em></a>, <a href="https://discuss.pixls.us/t/release-of-gmic-2-9">notes de version <em>2.9</em></a>, <a href="https://discuss.pixls.us/t/release-of-gmic-3-0">notes de version <em>3.0</em></a>.</p></li>
</ul>
</div><div><a href="https://linuxfr.org/news/sortie-de-g-mic-3-0-une-troisieme-dose-pour-un-traitement-efficace-de-vos-images.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/126227/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-de-g-mic-3-0-une-troisieme-dose-pour-un-traitement-efficace-de-vos-images#comments">ouvrir dans le navigateur</a>
</p>
David TschumperléAnonymeBenoît Sibaudpalm123theojouedubanjohttps://linuxfr.org/nodes/126227/comments.atomtag:linuxfr.org,2005:Bookmark/17012020-06-23T10:04:23+02:002020-06-23T10:04:23+02:00Des plug-ins pour GIMP enfin disponibles sur flatpak!<a href="https://twitter.com/zemarmot/status/1275134489191157767">https://twitter.com/zemarmot/status/1275134489191157767</a> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/120876/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/jehan/liens/des-plug-ins-pour-gimp-enfin-disponibles-sur-flatpak#comments">ouvrir dans le navigateur</a>
</p>
Jehanhttps://linuxfr.org/nodes/120876/comments.atomtag:linuxfr.org,2005:News/393872019-08-24T08:58:14+02:002019-09-08T17:26:30+02:00G’MIC 2.7.0 : Une rentrée pleine de style pour le traitement d’images !Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>L’équipe <a href="https://www.greyc.fr/?page_id=445">IMAGE</a> du laboratoire <a href="https://www.greyc.fr">GREYC</a> est ravie de vous annoncer la sortie (pour la rentrée ☺), de la version <strong>2.7.0</strong> de <a href="https://gmic.eu"><em>G’MIC</em></a> (<em>GREYC’s Magic for Image Computing</em>), son <a href="https://fr.wikipedia.org/wiki/Framework">cadriciel</a> libre, générique, extensible, et sans doute un peu magique, pour <a href="https://fr.wikipedia.org/wiki/Traitement_d%27images">le traitement des images</a>.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f6f726967696e616c2f7465617365722e676966/teaser.gif" alt="teaser" title="Source : https://gmic.eu/gmic270/original/teaser.gif"></p>
<p><a href="//linuxfr.org/news/g-mic-2-3-4-traiter-ses-images-en-se-disant-deja-10-ans">La dernière dépêche <em>LinuxFr.org</em></a> sur ce logiciel libre avait été publiée, il y a un an, en août 2018. C’est donc l’occasion pour nous de résumer les nouveautés et les événements importants qui ont marqué la vie du projet le long de ces douze mois écoulés. Attachez vos ceintures, la route est longue et pleine de surprises !</p>
</div><ul><li>lien nᵒ 1 : <a title="https://gmic.eu" hreflang="en" href="https://linuxfr.org/redirect/104669">Le projet G’MIC</a></li><li>lien nᵒ 2 : <a title="https://twitter.com/gmic_ip" hreflang="en" href="https://linuxfr.org/redirect/104670">Fil Twitter des News du projet</a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/tags/gmic/public" hreflang="fr" href="https://linuxfr.org/redirect/104671">Série d’articles G’MIC sur LinuxFr.org</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#toc-1-gmic-en-300-mots">1. <em>G’MIC</em> en 300 mots</a></li>
<li><a href="#toc-2-donner-du-style-%C3%A0-ses-images">2. Donner du style à ses images</a></li>
<li><a href="#toc-3-d%C3%A9formation-interactive-et-morphing">3. Déformation interactive et morphing</a></li>
<li><a href="#toc-4-toujours-plus-de-transformations-colorim%C3%A9triques">4. Toujours plus de transformations colorimétriques…</a></li>
<li><a href="#toc-5-cr%C3%A9er-des-palettes-de-couleurs-par-m%C3%A9lange-de-nuances">5. Créer des palettes de couleurs par mélange de nuances</a></li>
<li><a href="#toc-6-il-y-en-a-un-peu-plus-jvous-le-mets-quand-m%C3%AAme">6. Il y en a un peu plus, j’vous le mets quand même ?</a></li>
<li>
<a href="#toc-7-autres-faits-notables-dans-l%C3%A9volution-du-projet">7. Autres faits notables dans l’évolution du projet</a><ul>
<li><a href="#toc-71-acceptation-des-dons">7.1. Acceptation des dons</a></li>
<li><a href="#toc-72-int%C3%A9gration-de-la-colorisation-intelligente-dans-gimp">7.2. Intégration de la « Colorisation intelligente » dans GIMP</a></li>
<li><a href="#toc-73-br%C3%A8ves-diverses-li%C3%A9es-au-projet">7.3. Brèves diverses liées au projet</a></li>
</ul>
</li>
<li><a href="#toc-8-le-futur-et-promis-on-arr%C3%AAte">8. Le futur, et promis on arrête !</a></li>
</ul>
<p><em>N. D. A. : cliquez sur les images de la dépêche pour en visualiser des versions à meilleure résolution.</em></p>
<h2 id="toc-1-gmic-en-300-mots">1. <em>G’MIC</em> en 300 mots</h2>
<p><a href="https://gmic.eu"><em>G’MIC</em></a> est un logiciel développé depuis plus de <a href="//linuxfr.org/news/g-mic-2-3-4-traiter-ses-images-en-se-disant-deja-10-ans">10 ans</a> maintenant, principalement en <a href="https://fr.wikipedia.org/wiki/C%2B%2B"><em>C++</em></a>, par deux membres de l’équipe <a href="https://www.greyc.fr/?page_id=445">IMAGE</a> du <a href="https://www.greyc.fr/">GREYC</a> : <a href="https://foureys.users.greyc.fr/Fr/index.php">Sébastien Fourey</a> et <a href="https://tschumperle.users.greyc.fr/">David Tschumperlé</a>. Il est distribué sous licence libre <a href="http://www.cecill.info/">CeCILL</a>. Le GREYC est un laboratoire de recherche public français situé à Caen, spécialisé en sciences du numérique et chapeauté par trois tutelles : le <a href="https://www.cnrs.fr">CNRS</a>, l’<a href="https://www.unicaen.fr/">Université de Caen</a>, et l’<a href="https://www.ensicaen.fr/">ENSICAEN</a>. L’équipe IMAGE, l’une des sept équipes du laboratoire, est composée de chercheurs, d’enseignants‐chercheurs, de doctorants et d’ingénieurs, tous spécialisés dans les domaines de l’algorithmique et des mathématiques du <a href="https://fr.wikipedia.org/wiki/Traitement_d%27images">traitement d’images</a>.<br>
<a href="https://gmic.eu/gmic270/fullsize/logo_gmic.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f6c6f676f5f676d69632e706e67/logo_gmic.png" alt="G’MIC logo" title="Source : https://gmic.eu/gmic270/thumb/logo_gmic.png"></a> <em>Fig. 1.1 : logo du projet G’MIC, framework libre pour le traitement d’images, et sa mascotte « Gmicky » (réalisée par <a href="https://www.davidrevoy.com/">David Revoy</a>).</em></p>
<p><em>G’MIC</em> se veut multiplateforme (GNU/Linux, MacOS, Windows…). Il fournit un ensemble varié d’interfaces utilisateur pour la manipulation de données images <em>génériques</em>, à savoir des images ou des séquences d’images hyperspectrales 2D ou 3D à valeurs flottantes (ce qui inclut de fait les images couleur « classiques »). Environ <a href="https://gmic.eu/reference.shtml">un millier de fonctions</a> différentes de traitement sont déjà disponibles, nombre extensible à l’infini puisque les utilisateurs ont la possibilité de développer et d’ajouter leurs propres fonctionnalités via l’utilisation d’un langage de script intégré.</p>
<p>Les interfaces utilisateurs de <em>G’MIC</em> les plus utilisées sont : la commande <a href="https://gmic.eu/reference.shtml"><code>gmic</code>, exploitable en ligne de commande</a> (complément indispensable à <a href="https://www.imagemagick.org/">ImageMagick</a> ou <a href="https://www.graphicsmagick.org">GraphicsMagick</a>), le service Web <a href="https://gmicol.greyc.fr/"><em>G’MIC Online</em></a>, mais surtout, le greffon <a href="https://github.com/c-koi/gmic-qt"><em>G’MIC-Qt</em></a>, qui est accessible pour les logiciels grand public d’édition d’images <a href="https://www.gimp.org">GIMP</a>, <a href="https://www.krita.org">Krita</a> et <a href="https://www.getpaint.net">Paint.net</a>, et qui permet de les enrichir de plus de 500 filtres et effets différents à appliquer sur des images.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/gmic_270.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f676d69635f3237302e706e67/gmic_270.png" alt="Greffon G’MIC-Qt" title="Source : https://gmic.eu/gmic270/thumb/gmic_270.png"></a> <em>Fig. 1.2 : le greffon G’MIC-Qt, en version <strong>2.7.0</strong>, aujourd’hui l’interface utilisateur du projet G’MIC la plus téléchargée.</em></p>
<p>Grâce à son architecture extensible, de nouveaux filtres de traitement d’images apparaissent régulièrement dans <em>G’MIC</em>, et c’est justement des derniers arrivés dont nous allons parler dans la suite de la dépêche.</p>
<h2 id="toc-2-donner-du-style-à-ses-images">2. Donner du style à ses images</h2>
<p><em>G’MIC</em> s’est doté récemment d’un filtre étonnant de <strong>transfert de style</strong> entre images, accessible depuis le greffon <em>G’MIC-Qt</em>, sous l’entrée « <strong>Artistic / Stylize</strong> ». Le concept du transfert de style est simple à appréhender : on cherche à transformer une image (typiquement une <em>photographie</em>) en lui transférant le style d’une autre image (par exemple une <em>peinture</em>).</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_style_transfer.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f7374796c655f7472616e736665722e706e67/fr_style_transfer.png" alt="Principe du transfert de style" title="Source : https://gmic.eu/gmic270/thumb/fr_style_transfer.png"></a> <em>Fig. 2.1 : principe du transfert de style entre deux images.</em></p>
<p>L’implémentation effective d’un tel objectif est, quant à elle, relativement complexe. L’algorithme doit être capable de recomposer la photographie originale en « empruntant » des pixels à l’image de style et en les agençant intelligemment, tel un puzzle à reconstruire, pour coller au mieux au contenu des données à reproduire, en termes de contours, couleurs et textures. La facilité de la tâche dépend donc du niveau de compatibilité entre l’image et le style choisi. En traitement d’images, la plupart des implémentations existantes des méthodes de transfert de style se basent sur <a href="https://fr.wikipedia.org/wiki/R%C3%A9seau_neuronal_convolutif">des réseaux de neurones convolutionnels</a>, plus particulièrement des <a href="https://fr.wikipedia.org/wiki/R%C3%A9seaux_antagonistes_g%C3%A9n%C3%A9ratifs">réseaux antagonistes génératifs (<em>GAN</em>)</a>.</p>
<p><em>G’MIC</em> implémente le transfert de style de manière différente (sans se baser sur des réseaux de neurones, l’article scientifique détaillant l’algorithme utilisé est en cours de rédaction!). Cette méthode est parallélisable et peut donc bénéficier de tous les cœurs de calculs présents sur la machine de l’utilisateur. Le temps de calcul dépend naturellement de la résolution de l’image à transformer, et de la précision de la reconstruction souhaitée. Sur un PC standard à 4 cœurs, comptez quelques dizaines de secondes pour des images à petite résolution (par ex. <em>800x800</em>), à plusieurs minutes pour des images de tailles plus importantes.</p>
<p>Comme on peut l’imaginer, c’est un filtre <strong>très polyvalent</strong>, puisque l’on peut appliquer sans contraintes n’importe quel style sur n’importe quelle image d’entrée. Quelques peintures célèbres sont accessibles par défaut dans le filtre, afin de disposer de styles prédéfinis.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/gmic_stylize.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f676d69635f7374796c697a652e706e67/gmic_stylize.png" alt="Filtre ’Artistic / Stylize’" title="Source : https://gmic.eu/gmic270/thumb/gmic_stylize.png"></a> <em>Fig. 2.2 : filtre « <strong>Artistic / Stylize</strong> », tel qu’il apparaît dans le greffon G’MIC-Qt, avec ses nombreux paramètres à régler !</em></p>
<p>Soyons honnêtes, il n’est pas toujours facile d’obtenir des résultats satisfaisants dès le premier jet. Il faut en général bien choisir ses images de départ, et jouer avec les nombreux paramètres disponibles pour affiner le type de rendu généré par l’algorithme. Néanmoins, le filtre est capable de générer de belles images, comme celles illustrées ci‐dessous (la photo originale est visible en haut à gauche, le style choisi en haut à droite, et le résultat du transfert de style en bas). Imaginez surtout le temps que cela prendrait à un graphiste de réaliser ces transformations « à la main » !</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_stylization_car_full_1.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f7374796c697a6174696f6e5f6361725f66756c6c5f312e706e67/fr_stylization_car_full_1.png" alt="Stylisation Mondrian" title="Source : https://gmic.eu/gmic270/thumb/fr_stylization_car_full_1.png"></a> <em>Fig. 2.3 : stylisation d’une photo de voiture à partir du tableau « <a href="https://fr.wikipedia.org/wiki/Arbre_argent%C3%A9">Arbre argenté</a> » de <a href="https://fr.wikipedia.org/wiki/Piet_Mondrian">Piet Mondrian</a>.</em></p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_stylization_car_full_2.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f7374796c697a6174696f6e5f6361725f66756c6c5f322e706e67/fr_stylization_car_full_2.png" alt="Stylisation Kandinsky" title="Source : https://gmic.eu/gmic270/thumb/fr_stylization_car_full_2.png"></a> <em>Fig. 2.4 : stylisation de la photo de voiture à partir du tableau « <a href="https://fr.wikipedia.org/wiki/Gelb-Rot-Blau">Jaune‐rouge‐bleu</a> » de <a href="https://fr.wikipedia.org/wiki/Vassily_Kandinsky">Vassily Kandinsky</a>.</em></p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_stylization_car_full_5.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f7374796c697a6174696f6e5f6361725f66756c6c5f352e706e67/fr_stylization_car_full_5.png" alt="Stylisation Hokusai" title="Source : https://gmic.eu/gmic270/thumb/fr_stylization_car_full_5.png"></a> <em>Fig. 2.5 : stylisation de la photo de voiture à partir du tableau « <a href="https://fr.wikipedia.org/wiki/La_Grande_Vague_de_Kanagawa">La Grande Vague de Kanagawa</a> » d’<a href="https://fr.wikipedia.org/wiki/Hokusai">Hokusai</a>.</em></p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_stylization_cat_full_7.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f7374796c697a6174696f6e5f6361745f66756c6c5f372e706e67/fr_stylization_cat_full_7.png" alt="Stylisation par hachures" title="Source : https://gmic.eu/gmic270/thumb/fr_stylization_cat_full_7.png"></a> <em>Fig. 2.6 : stylisation d’une photo de chat à partir d’un dessin hachuré.</em></p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_stylization_bottles_full_21.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f7374796c697a6174696f6e5f626f74746c65735f66756c6c5f32312e706e67/fr_stylization_bottles_full_21.png" alt="Stylisation Mondrian-2" title="Source : https://gmic.eu/gmic270/thumb/fr_stylization_bottles_full_21.png"></a> <em>Fig. 2.7 : stylisation d’une photo de bouteilles à partir du tableau « <a href="https://fr.wikipedia.org/wiki/Arbre_rouge">Arbre rouge</a> » de <a href="https://fr.wikipedia.org/wiki/Piet_Mondrian">Piet Mondrian</a>.</em></p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_stylization_bottles_full_23.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f7374796c697a6174696f6e5f626f74746c65735f66756c6c5f32332e706e67/fr_stylization_bottles_full_23.png" alt="Stylisation Picasso" title="Source : https://gmic.eu/gmic270/thumb/fr_stylization_bottles_full_23.png"></a> <em>Fig. 2.8 : stylisation de la photo de bouteilles à partir du tableau « <a href="https://lewebpedagogique.com/bourguignon/2011/02/10/le-reservoir-picasso/">Le réservoir — Horta de Ebro</a> » de <a href="https://fr.wikipedia.org/wiki/Pablo_Picasso">Pablo Picasso</a>.</em></p>
<p>D’autres exemples de stylisation d’images sont visibles sur <a href="https://gmic.eu/gallery/stylization.shtml">la galerie d’images, dédiée à ce filtre</a>. <em>G’MIC</em> est à notre connaissance, le seul logiciel de traitement d’images « grand public » proposant actuellement un filtre de transfert de style générique, où des images de style <strong>quelconques</strong> peuvent être choisies.</p>
<p>(<em>Second degré activé</em> : attendons encore une dizaine d’années, et <a href="https://patdavid.net/2012/08/getting-around-in-gimp-heal-selection.html">ça sera peut‐être disponible dans Photoshop</a> !)</p>
<p>Dernière expérience amusante : récupérez une <a href="https://www.google.com/search?hl=en&tbm=isch&source=hp&biw=1920&bih=1072&ei=WpNWXcWzOITQaJDghfAN&q=alien+roswell&oq=alien+roswell&gs_l=img.3..0l7j0i5i30j0i8i30l2.1371.3446..3664...1.0..0.51.587.14......0....1..gws-wiz-img.KpJUtbI9LbU&ved=0ahUKEwjFyNjPpIfkAhUEKBoKHRBwAd4Q4dUDCAU&uact=5">photo de tête d’Alien</a>, façon <em>Roswell</em>, et choisissez ensuite une image provenant de <a href="https://fr.wikipedia.org/wiki/Ensemble_de_Mandelbrot">l’ensemble de Mandelbrot</a> comme image de style. Utilisez le filtre de transfert pour générer une image façon « fractale » de votre tête d’Alien. Puis, faites croire au monde entier que l’ensemble de Mandelbrot contient la preuve mathématique de l’existence des extra‐terrestres… ☺</p>
<p><a href="https://gmic.eu/gmic270/fullsize/alien_mandelbrot.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f616c69656e5f6d616e64656c62726f742e706e67/alien_mandelbrot.png" alt="Stylisation Mandelbrot" title="Source : https://gmic.eu/gmic270/thumb/alien_mandelbrot.png"></a> <em>Fig. 2.9 : <strong>Breaking News!</strong> Une tête d’Alien a été trouvée dans l’ensemble fractal de Mandelbrot ! (si vous ne l’apercevez pas du premier coup d’œil, penchez la tête vers la gauche…)</em></p>
<p>Bref, vous l’aurez compris, ce filtre a un certain potentiel créatif pour les artistes de tout poil !</p>
<h2 id="toc-3-déformation-interactive-et-morphing">3. Déformation interactive et morphing</h2>
<p>Cette année, <em>G’MIC</em> s’est également pourvu d’une implémentation de <a href="https://en.wikipedia.org/wiki/Radial_basis_function_interpolation">la méthode d’interpolation par <em>RBF</em></a> (<em>Radial Basis Functions</em>), qui permet d’estimer une fonction dense interpolée en dimension quelconque, à partir d’un ensemble connu d’échantillons localisés de manière éparse (et pas forcément sur une grille régulière). C’est une invitation à développer des filtres dont l’interaction utilisateur se résume principalement à l’ajout, la suppression ou le déplacement de points‐clés sur des images, le travail d’interpolation des données représentées par ces points‐clés étant dorénavant géré automatiquement par <em>G’MIC</em>.</p>
<p>C’est donc ce que nous avons fait, avec deux nouveaux filtres bénéficiant de cette interpolation <em>RBF</em>.</p>
<p>Tout d’abord, le filtre <strong>« Deformations / Warp [interactive] »</strong> qui, comme son nom l’indique, propose à l’utilisateur de déformer localement une image en créant‐déplaçant des point‐clés.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_warp_girl.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f776172705f6769726c2e706e67/fr_warp_girl.png" alt="Déformation par points-clés" title="Source : https://gmic.eu/gmic270/thumb/fr_warp_girl.png"></a> <em>Fig. 3.1 : le nouveau filtre « Deformations / Warp [interactive] » permet de déformer interactivement des images, par exemple pour réaliser rapidement des caricatures à partir de photographies de portraits.</em></p>
<p>L’animation ci‐dessous montre ce filtre interactif en cours d’utilisation, et illustre bien le comportement déformant de ces points‐clés, qui peuvent être vus comme des points d’ancrage de l’image, qui sont déplacés de manière naturelle.</p>
<p><a href="https://gmic.eu/gmic270/original/gmic_deform.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f6f726967696e616c2f676d69635f6465666f726d2e676966/gmic_deform.gif" alt="Déformation par points‐clés — animation" title="Source : https://gmic.eu/gmic270/original/gmic_deform.gif"></a> <em>Fig. 3.2 : illustration de l’interaction utilisateur dans le filtre de déformation de G’MIC, basée sur la création et le déplacement de points‐clés.</em></p>
<p><em>(À l’attention de celles et ceux qui pourraient s’émouvoir du sort que nous faisons subir aux personnes dont les photos sont utilisées dans les figures ci‐dessus et ci‐dessous : tous ces portraits sont totalement artificiels, aléatoirement générés par des GAN via le site <a href="https://thispersondoesnotexist.com/"><em>This Person Does Not Exist</em></a>. Aucun préjudice moral en vue !)</em>.</p>
<p>Le grand avantage de l’interpolation <em>RBF</em> est de ne pas avoir à gérer explicitement une <em>structuration spatiale</em> entre les points‐clés, par exemple par la définition d’un <a href="https://fr.wikipedia.org/wiki/Maillage">maillage</a> (c’est‐à‐dire d’une « grille de déformation »). On obtient ainsi un plus grand degré de liberté dans les déformations possibles (voir fig. 3.3. ci‐dessous). Et dans le même temps, on conserve un contrôle assez fin sur l’amplitude locale de déformation, puisqu’en ajoutant plus de points-clés « identités » autour d’une zone, on restreint naturellement l’amplitude de la déformation à l’intérieur de cette zone.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_warp_man.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f776172705f6d616e2e706e67/fr_warp_man.png" alt="Déformation par points‐clés — autre exemple" title="Source : https://gmic.eu/gmic270/thumb/fr_warp_man.png"></a> <em>Fig. 3.3 : l’interpolation RBF permet de créer des déformations continues complexes, avec très peu de points‐clés (ici, par inversion des positions des yeux droit/gauche, et seulement quatre points‐clés utilisés).</em></p>
<p>Enfin, notons qu’une courte démonstration de ce filtre de déformation est visible dans <a href="https://youtu.be/eWoRDzhAEtw">cette vidéo Youtube</a>.</p>
<p>Et pourquoi ne pas étendre le principe de cette interpolation à deux images, au lieu d’une seule ? C’est justement ce que propose un autre nouveau filtre <strong>« Deformations / Morph [interactive] »</strong> qui réalise un <a href="https://fr.wikipedia.org/wiki/Morphing">morphing</a> entre deux images (situées sur deux calques séparés), avec la même technique d’interpolation, qui demande à l’utilisateur de placer uniquement des points‐clés colorés en correspondance sur les deux images.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_morph_st.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f6d6f7270685f73742e706e67/fr_morph_st.png" alt="Filtre de morphing — positionnement des points‐clés" title="Source : https://gmic.eu/gmic270/thumb/fr_morph_st.png"></a> <em>Fig. 3.4 : le filtre « Deformations / Morph [interactive] » demande à l’utilisateur de positionner des points‐clés indiquant des zones de correspondance entre deux images.</em></p>
<p>Sur l’exemple ci‐dessus, des points‐clés sont placés sur des endroits caractéristiques des deux visages (bout du nez, des lèvres, des sourcils, etc.). En pratique, cela ne prend pas plus de cinq minutes. Grâce à ces correspondances, l’algorithme en déduit une carte de déformation globale d’une image vers l’autre, et peut ainsi générer des images « mixées » où les éléments du visage restent relativement bien alignés.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_morph_ib.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f6d6f7270685f69622e706e67/fr_morph_ib.png" alt="Filtre de morphing — image intermédiaire" title="Source : https://gmic.eu/gmic270/thumb/fr_morph_ib.png"></a> <em>Fig. 3.5 : une des images intermédiaire générée pour le morphing entre les deux visages.</em></p>
<p>Par comparaison, voici ce qu’on obtiendrait en mélangeant simplement les deux images d’entrée entre elles, c’est‐à‐dire sans corriger la différence de localisation des éléments du visage entre les deux images. C’est pas joli joli !</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_morph_avg.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f6d6f7270685f6176672e706e67/fr_morph_avg.png" alt="Filtre de morphing — moyennage simple" title="Source : https://gmic.eu/gmic270/thumb/fr_morph_avg.png"></a> <em>Fig. 3.6 : un simple moyennage des images « Source » et « Destination » révèle les différences de localisation des éléments du visage.</em></p>
<p>Ainsi, le filtre de morphing est capable de générer rapidement un ensemble d’images intermédiaires, allant du visage « Source » au visage « Destination », séquence qui par la suite peut être sauvegardée sous forme d’animation.</p>
<p><a href="https://gmic.eu/gmic270/original/morph.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f6f726967696e616c2f6d6f7270682e676966/morph.gif" alt="Filtre de morphing — animation générée" title="Source : https://gmic.eu/gmic270/original/morph.gif"></a> <em>Fig. 3.7 : animation obtenue après génération de l’ensemble des frames intermédiaires par le filtre de morphing de G’MIC.</em></p>
<p>Beaucoup d’autres cas d’utilisation de ce filtre de morphing sont envisageables. L’exemple suivant illustre son application pour synthétiser une animation à partir de deux photographies du même objet (un nain de jardin), mais prises avec des <a href="https://fr.wikipedia.org/wiki/Profondeur_de_champ">profondeurs de champ</a> différentes.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_morph_dwarf_st.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f6d6f7270685f64776172665f73742e706e67/fr_morph_dwarf_st.png" alt="Filtre de morphing — exemple du nain de jardin" title="Source : https://gmic.eu/gmic270/thumb/fr_morph_dwarf_st.png"></a><br>
<em>Fig. 3.8 : deux photographies à profondeurs de champ différentes, avec le placement des points de correspondance réalisé par l’utilisateur.</em></p>
<p><a href="https://gmic.eu/gmic270/original/morph_dwarf.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f6f726967696e616c2f6d6f7270685f64776172662e676966/morph_dwarf.gif" alt="Filtre de morphing animation — nain de jardin" title="Source : https://gmic.eu/gmic270/original/morph_dwarf.gif"></a> <em>Fig. 3.9 : animation obtenue après génération de l’ensemble des trames intermédiaires par le filtre de morphing de G’MIC.</em></p>
<p>Les utilisateurs et les utilisatrices de la ligne de commande seront potentiellement intéressés d’apprendre que ces deux filtres peuvent être testés très simplement à partir d’un <em>shell</em>, de la façon suivante :</p>
<pre><code class="sh">$ gmic image.jpg x_warp
$ gmic source.jpg target.jpg x_morph</code></pre>
<h2 id="toc-4-toujours-plus-de-transformations-colorimétriques">4. Toujours plus de transformations colorimétriques…</h2>
<p>Depuis plusieurs années, <em>G’MIC</em> possède des filtres de transformations colorimétriques permettant, par exemple, de simuler le développement de photographies avec des pellicules argentiques, ou encore de donner des ambiances colorimétriques particulières à des images (ensoleillement, pluie, brouillard, lumière du matin, de l’après‐midi, du soir, nuit, etc). Dans une <a href="//linuxfr.org/news/g-mic-2-0-un-second-souffle-pour-le-traitement-d-images-libre#41-clut-et-transformations-colorim%C3%A9triques">précédente dépêche</a>, nous avions déjà évoqué ces filtres, qui se basent essentiellement sur l’utilisation de <a href="https://en.wikipedia.org/wiki/3D_lookup_table"><em>CLUT</em> 3D</a> (<em>Color Lookup Tables</em>) pour la modélisation des transformations couleurs.</p>
<p>Une <em>CLUT</em> est tout simplement un tableau 3D qui fournit pour chaque couleur <em>RGB</em> existante, une couleur de remplacement à appliquer sur l’image.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_whatisaclut.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f77686174697361636c75742e706e67/fr_whatisaclut.png" alt="Illustration d’une Color LUT 3D" title="Source : https://gmic.eu/gmic270/thumb/fr_whatisaclut.png"></a> <em>Fig. 4.1 : modélisation d’une transformation colorimétrique par une « Color LUT 3D ».</em></p>
<p>L’intérêt principal de ces <em>CLUT</em>, c’est la grande variété de transformations qu’elles permettent de représenter : elles peuvent en effet définir des fonctions de modifications de couleurs <em>RGB</em> → <em>RGB</em> avec des variations absolument quelconques. La seule « contrainte » de ces méthodes, c’est que tous les pixels d’une image ayant la même couleur seront transformés en des pixels également de couleurs identiques.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_cluts_ex.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f636c7574735f65782e706e67/fr_cluts_ex.png" alt="Exemples de transformations basées CLUT" title="Source : https://gmic.eu/gmic270/thumb/fr_cluts_ex.png"></a> <em>Fig. 4.2 : illustration de la variété des transformations colorimétriques modélisables par des CLUT.</em></p>
<p>L’inconvénient, par contre, c’est que ces <em>CLUT</em> 3D sont des données relativement <em>volumineuses</em>. Quand on veut en proposer plusieurs centaines différentes dans un même logiciel (ce qui est le cas dans <em>G’MIC</em>), on se retrouve vite avec un volume de données important à installer. Pour illustrer ces propos, prenons l’exemple d’un autre logiciel libre, <a href="https://rawpedia.rawtherapee.com/Film_Simulation/fr">RawTherapee</a>, qui propose sur son site de télécharger un pack additionnel de <strong>294</strong> fonctions <em>CLUT</em>, toutes stockées sous forme de fichiers <code>.png</code> dans une archive <code>.zip</code> d’une taille totale de <strong>402 Mio</strong>. Même si on peut considérer que stocker quelques centaines de <a href="https://fr.wikipedia.org/wiki/Octet#Multiples_normalis%C3%A9s">mébioctets</a> n’est plus forcément bloquant de nos jours, ça reste une taille pénalisante pour une distribution rapide et légère de filtres colorimétriques basiques.</p>
<p>Cette année, nous avons donc effectué au GREYC, un travail de recherche et de développement important autour de cette problématique. Le résultat : un nouvel algorithme de compression (<em>avec pertes imperceptibles</em>) capable de générer des représentations binaires de <em>CLUT</em> avec des taux de compression moyen <strong>de plus de 99 %</strong>, relativement aux données <em>déjà compressées sans pertes</em>. L’idée générale est de déterminer un ensemble de points‐clés couleurs optimal qui permette la reconstruction d’une <em>CLUT</em> (<em>décompression</em>) avec une erreur de reconstruction minimale. Stocker ces points‐clés est alors incontestablement plus léger que de stocker l’ensemble des couleurs transformées.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_clut_compression.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f636c75745f636f6d7072657373696f6e2e706e67/fr_clut_compression.png" alt="Principe de la compression de CLUT" title="Source : https://gmic.eu/gmic270/thumb/fr_clut_compression.png"></a> <em>Fig. 4.3 : principe de la compression de CLUT, par stockage d’un ensemble de points‐clés bien choisi.</em></p>
<p>Actuellement, l’exploitation de cette méthode de compression originale nous permet de mettre à disposition pas moins de <strong>763 <em>CLUT</em></strong> dans le logiciel <em>G’MIC</em>, toutes stockées dans un fichier binaire de <strong>moins de 3 Mio</strong> !</p>
<p>Tous ces filtres de variations de couleurs ont été regroupés dans deux entrées distinctes du greffon <em>G’MIC-Qt</em>, à savoir <strong>« Colors / Simulate Film »</strong> (pour toutes les simulations de films argentiques), et <strong>« Colors / Color Presets »</strong> (pour toutes les autres transformations). Chacun de ces filtres propose des sous‐catégories pour structurer l’accès aux différentes <em>CLUT</em>. À notre connaissance, cela fait de <em>G’MIC</em>, le logiciel de traitement d’images détenteur du record mondial du nombre de transformations couleurs proposées, et ce, en gardant une taille raisonnable.</p>
<p>Le lecteur, ou la lectrice, intéressé par les détails mathématiques de ces algorithmes de compression/décompression de <em>CLUT</em>, pourra consulter <a href="https://hal.archives-ouvertes.fr/hal-02066484v3/document">l’article</a> que nous avons publié, ainsi que les <a href="https://gmic.eu/gmic270/talk_fr.pdf">transparents</a> des présentations qui seront faites dans les prochains jours aux conférences sur le traitement d’images <a href="http://gretsi.fr/colloque2019/">GRETSI’2019</a> (conférence nationale, à Lille) et <a href="https://caip2019.unisa.it/">CAIP’2019</a> (conférence internationale, à Salerne).</p>
<p><a href="https://gmic.eu/gmic270/talk_fr.pdf"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f636c75745f74616c6b2e706e67/fr_clut_talk.png" alt="Transparents de présentation des algorithmes (en français)" title="Source : https://gmic.eu/gmic270/thumb/fr_clut_talk.png"></a> <em>Fig. 4.4 : transparents de présentation des algorithmes de compression/décompression de CLUT (ici, en français).</em></p>
<p>Notons, pour finir avec ce sujet, que nous avons mis en ligne <a href="https://framagit.org/dtschump/libclut">une implémentation libre</a> de cet algorithme de décompression de <em>CLUT</em>, en <em>C++</em> (avec 716 <em>CLUT</em> incluses). Des <a href="https://discuss.pixls.us/t/3d-lut-module-in-darktable-2-7-dev">discussions ont été également amorcées</a> pour une intégration potentielle dans un module « <em>Color LUT</em> » du logiciel libre <a href="https://www.darktable.org/">Darktable</a> de développement de photos <em>RAW</em> .</p>
<h2 id="toc-5-créer-des-palettes-de-couleurs-par-mélange-de-nuances">5. Créer des palettes de couleurs par mélange de nuances</h2>
<p>Parlons maintenant du filtre récent <strong>« Colors / Colorful Blobs »</strong> qui, ne le cachons pas, s’inspire directement du concept original de <a href="https://siecledigital.fr/2017/07/25/playful-palette-le-nouvel-outil-des-graphistes-en-reflexion-chez-adobe/">« Playful Palette »</a> imaginé par l’équipe d’<em>Adobe Research</em> en 2017, et qui se destine aux artistes illustrateurs (dessinateurs et peintres numériques). L’objectif est de créer des palettes de couleurs, qui ne contiennent que quelques nuances principales (que l’on souhaite utiliser dans une illustration), mais aussi des ensembles de couleurs intermédiaires entre ces nuances, sous la forme de dégradés de couleurs. En piochant uniquement dans les couleurs présentées sur une telle palette, l’artiste préserve plus facilement la cohérence des teintes qui apparaissent dans son œuvre.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/colorful_blobs.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f636f6c6f7266756c5f626c6f62732e706e67/colorful_blobs.png" alt="Filtre « Colors / Colorful Blobs » dans G’MIC-Qt" title="Source : https://gmic.eu/gmic270/thumb/colorful_blobs.png"></a> <em>Fig. 5.1 : le filtre « Colors / Colorful Blobs » permet de créer des palettes de couleurs personnalisées, par mélange de nuances.</em></p>
<p>Comme illustré sur la figure ci‐dessus, le filtre propose à l’utilisateur de déplacer des « blobs » colorés qui, en fusionnant les uns avec les autres, créent les dégradés de couleurs désirés. Le résultat du filtre est une image que l’artiste peut utiliser par la suite comme palette, pour piocher les couleurs dont il a besoin.</p>
<p>D’un point de vue purement technique, on utilise une technique de <a href="https://fr.wikipedia.org/wiki/Metaballs"><em>Metaballs</em></a> (en 2D) pour la modélisation des taches de couleurs. On peut ajouter jusqu’à douze « blobs » distincts et choisir différents espaces de couleur (<em>sRGB</em>, <em>RGB linéaire</em> ou <em>Lab</em>) pour le calcul des dégradés. Le filtre exploite également les fonctionnalités récentes apportées au greffon <em>G’MIC-Qt</em> qui enrichissent l’interactivité utilisateur avec la fenêtre de prévisualisation (<a href="//linuxfr.org/news/g-mic-2-3-4-traiter-ses-images-en-se-disant-deja-10-ans#toc-61-am%C3%A9liorations-de-linterface-du-greffon">fonctionnalité que nous avions évoquée dans une précédente dépêche</a>), tel que l’on peut le voir avec l’animation ci-dessous, montrant le filtre en cours d’utilisation directement depuis la fenêtre de prévisualisation du greffon (voir aussi cette <a href="https://www.youtube.com/watch?v=M1pSn1g7sC8">vidéo</a>, plus longue).</p>
<p><a href="https://gmic.eu/gmic270/original/colorful_blobs.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f6f726967696e616c2f636f6c6f7266756c5f626c6f62732e676966/colorful_blobs.gif" alt="Filtre « Colors / Colorful Blobs » — utilisation interactive" title="Source : https://gmic.eu/gmic270/original/colorful_blobs.gif"></a> <em>Fig. 5.2 : illustration de l’interaction utilisateur avec le filtre de création de palettes de G’MIC, basée sur la création et le déplacement de « blobs » colorés.</em></p>
<p>Alors certes, ce filtre ne sera pas utile pour la plupart des utilisateurs de <em>G’MIC</em>. Mais avouez que c’est plutôt <em>fun</em>, non ?</p>
<h2 id="toc-6-il-y-en-a-un-peu-plus-jvous-le-mets-quand-même">6. Il y en a un peu plus, j’vous le mets quand même ?</h2>
<p>Décrivons maintenant une sélection de quelques autres filtres et effets apparus durant l’année, peut‐être un peu moins originaux que les précédents (pas forcément moins utiles !) mais qui témoignent d’un certain dynamisme du développement de <em>G’MIC</em>.</p>
<ul>
<li>Tout d’abord, le filtre <strong>« ️Rendering / Symmetric 2D Shape »</strong> est d’une aide précieuse quand on souhaite dessiner des figures géométriques possédant des symétries angulaires.</li>
</ul>
<p><a href="https://gmic.eu/gmic270/original/symmetric2dshape.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f6f726967696e616c2f73796d6d6574726963326473686170652e676966/symmetric2dshape.gif" alt="Filtre « Rendering / Symmetric 2D Shape » — utilisation interactive" title="Source : https://gmic.eu/gmic270/original/symmetric2dshape.gif"></a> <em>Fig. 6.1 : le filtre « <strong>Rendering / Symmetric 2D Shape</strong> » en action, dans le greffon G’MIC-Qt.</em></p>
<p>On peut subdiviser le plan jusqu’à trente‐deux portions angulaires, chacune de ces portions pouvant accueillir au maximum six point‐clés pour définir un profil de forme, ce qui permet de réaliser des rendus de formes potentiellement complexes et variées (tel le super‐<a href="https://fr.wikipedia.org/wiki/Shuriken">shuriken</a> ci‐dessous ☺).</p>
<p><a href="https://gmic.eu/gmic270/fullsize/symmetric2dshape.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f73796d6d6574726963326473686170652e706e67/symmetric2dshape.png" alt="Filtre « Rendering / Symmetric 2D Shape » — exemple complexe" title="Source : https://gmic.eu/gmic270/thumb/symmetric2dshape.png"></a> <em>Fig. 6.2 : exemple de figure symétrique complexe réalisable avec le filtre « <strong>Rendering / Symmetric 2D Shape</strong> ».</em></p>
<ul>
<li>Le filtre <strong>« Degradations / Self Glitching »</strong> combine une image avec une version décalée d’elle‐même, pour créer un effet de type <a href="https://fr.wikipedia.org/wiki/Glitch_art"><em>Glitch art</em></a>. On a le choix entre plusieurs opérations de combinaison bit à bit (<em>Add</em>, <em>Mul</em>, <em>And</em>, <em>Or</em>, <em>Xor</em>…) et on peut régler la direction et l’amplitude du décalage, ainsi que divers autres paramètres de contrôle.</li>
</ul>
<p><a href="https://gmic.eu/gmic270/fullsize/self_glitching.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f73656c665f676c69746368696e672e706e67/self_glitching.png" alt="Filtre « Degradations / Self Glitching »" title="Source : https://gmic.eu/gmic270/thumb/self_glitching.png"></a> <em>Fig. 6.3 : le filtre « <strong>Degradations / Self Glitching</strong> » aide à ruiner vos photos en toute simplicité !</em></p>
<p>Là encore, ce n’est pas un filtre qu’on utilisera forcément tous les jours ! Mais il a le mérite d’exister, et il a d’ailleurs été ajouté en réponse à une demande d’un utilisateur.</p>
<ul>
<li>Dans le même style, le filtre « <strong>Degradations / Mess With Bits</strong> » applique certaines opérations sur les valeurs des pixels, vus comme des nombres binaires qu’il ne faut pas hésiter à triturer (décalage et inversion de bits par exemple). Toujours dans l’idée de simuler du <em>Glitch art</em>, bien entendu !</li>
</ul>
<p><a href="https://gmic.eu/gmic270/fullsize/messwithbits.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f6d65737377697468626974732e706e67/messwithbits.png" alt="Filtre « Degradations / Mess With Bits »" title="Source : https://gmic.eu/gmic270/thumb/messwithbits.png"></a> <em>Fig. 6.4 : le filtre « <strong>Degradations / Mess With Bits</strong> », ou comment transformer un adorable bambin en un monstre pustulant…</em></p>
<ul>
<li>Le filtre <strong>« Degradations / Noise [Perlin] »</strong> implémente la génération du <a href="https://fr.wikipedia.org/wiki/Bruit_de_Perlin">bruit de Perlin</a>, un modèle de bruit très classique en synthèse d’images, utilisé notamment pour la génération de cartes d’élévations de terrains virtuels. On propose ici une version multi‐échelle de l’algorithme original, avec jusqu’à quatre échelles de variations simultanées.</li>
</ul>
<p><a href="https://gmic.eu/gmic270/fullsize/noise_perlin.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f6e6f6973655f7065726c696e2e706e67/noise_perlin.png" alt="Filtre « Degradations / Noise — Perlin »" title="Source : https://gmic.eu/gmic270/thumb/noise_perlin.png"></a> <em>Fig. 6.5 : le filtre « <strong>Degradations / Noise [Perlin]</strong> » propose une implémentation multi‐échelle du bruit de Perlin (illustré ici avec deux échelles de variations).</em></p>
<ul>
<li>Le filtre <strong>« Frames / Frame [Mirror] »</strong> est aussi un effet réalisé « sur mesure », pour combler les besoins d’un utilisateur du greffon <em>G’MIC-Qt</em>. Ce photographe souhaitait pouvoir redimensionner ses photos pour obtenir un ratio précis <em>largeur/hauteur</em>, mais sans avoir à rogner ses images. La solution souhaitée était au contraire de rajouter des informations aux bords de l’image, par symétrisation, pour arriver au ratio désiré. C’est donc ce qu’accomplit ce filtre.</li>
</ul>
<p><a href="https://gmic.eu/gmic270/fullsize/frame_mirror.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f6672616d655f6d6972726f722e706e67/frame_mirror.png" alt="Filtre « Frames / Frame — Mirror »" title="Source : https://gmic.eu/gmic270/thumb/frame_mirror.png"></a> <em>Fig. 6.6 : le filtre « <strong>Frames / Frame [Mirror]</strong> » rajoute des pixels aux bords en symétrisant l’image.</em></p>
<ul>
<li>Notons enfin l’arrivée prochaine d’un nouveau filtre de <a href="https://fr.wikipedia.org/wiki/D%C3%A9bruitage_par_patchs">débruitage d’images</a> avancé, dont le développement est en cours, par <a href="https://iainisbald.wordpress.com/">Iain Fergusson</a>. Cela fait déjà plusieurs années que Iain contribue à <em>G’MIC</em> en expérimentant et proposant des filtres de débruitage originaux, et sa dernière réalisation semble vraiment très aboutie, avec des résultats prometteurs. <a href="https://www.youtube.com/watch?v=pPj_7J4iD_U">Cette vidéo</a> permet de voir ce filtre en action, et d’en apprendre un peu plus sur son fonctionnement.</li>
</ul>
<p>Maintenant que cet inventaire des nouveaux filtres et effets notables de <em>G’MIC</em> se referme, il nous semble important de rappeler que, comme dans beaucoup de projets informatiques, cette partie visible de l’iceberg cache un ensemble de développements plus « bas niveau » (lui, invisible) réalisés au fil des jours afin d’améliorer les possibilités d’interaction du greffon <em>G’MIC-Qt</em>, ou encore les performances du langage de script interne (<a href="https://gmic.eu/reference.shtml">le langage <em>G’MIC</em></a>), avec lequel tous ces filtres et effets sont implémentés. Ces améliorations ou optimisations incrémentales de la base de code profitent à tous les filtres (même ceux déjà disponibles depuis plusieurs années) et représentent en pratique la majorité du temps de développement. Chers utilisateurs, ne vous étonnez donc pas si aucun nouveau filtre n’apparaît pendant un certain temps. C’est qu’on est sûrement en train d’ajouter des choses indispensables dans le cœur du logiciel !</p>
<h2 id="toc-7-autres-faits-notables-dans-lévolution-du-projet">7. Autres faits notables dans l’évolution du projet</h2>
<p>Nous recensons ici d’autres nouvelles importantes qui ont rythmé la vie du projet, depuis août dernier.</p>
<h3 id="toc-71-acceptation-des-dons">7.1. Acceptation des dons</h3>
<p>C’est une nouvelle essentielle pour nous : depuis mars 2019, le projet <em>G’MIC</em> est habilité à <a href="https://libreart.info/fr/projets/gmic"><strong>récolter des dons</strong></a> (par exemple via <em>Paypal</em>), pour aider à sa maintenance et son développement !</p>
<p><a href="https://gmic.eu/gmic270/original/chat_dons.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f6f726967696e616c2f636861745f646f6e732e676966/chat_dons.gif" alt="Animation de chatons mignons" title="Source : https://gmic.eu/gmic270/original/chat_dons.gif"></a></p>
<p>C’est une bonne chose, car jusqu’à présent, nous n’avions pas de mécanisme simple à proposer, pour qu’un laboratoire de recherche public comme le GREYC puisse accepter des dons, en vue de soutenir le développement d’un logiciel libre tel que <em>G’MIC</em>, pourtant utilisé quotidiennement par plusieurs milliers de personnes à travers le monde (on dénombre entre 400 et 800 téléchargements quotidiens, rien que depuis le site du projet). Et nous n’avons d’ailleurs aujourd’hui aucune autre piste tangible pour financer ce logiciel, à long terme.</p>
<p>Ainsi, nous nous sommes associés à <a href="https://libreart.info/fr/">LILA</a> (<em>Libre comme l’Art</em>), association loi 1901 qui accepte les dons, et les reverse au laboratoire sous forme de contrats de collaboration, pour le développement de <em>G’MIC</em>.</p>
<p><a href="https://libreart.info/fr/projets/gmic"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f6173736f635f6c696c612e706e67/assoc_lila.png" alt="logo de l’association LILA" title="Source : https://gmic.eu/gmic270/thumb/assoc_lila.png"></a> <em>Fig. 7.1 : Logo de l’association LILA, qui récolte les dons pour le projet G’MIC.</em></p>
<p>C’est quelque chose qui a été en pratique un peu long à mettre en place, mais maintenant que le système est fonctionnel, on espère bénéficier de ces dons dans le futur pour aider le projet à se développer encore plus vite (l’utilisation possible des fonds est détaillée sur <a href="https://libreart.info/fr/projets/gmic">la page de donations</a>, ceci étant bien sûr très dépendant des dons recueillis).</p>
<p>Par souci de transparence, nous <a href="https://gmic.eu/gmic270/fullsize/donations_march.png">affichons les montants récoltés</a> sur le site Web du projet. C’est nouveau, on ne sait pas vraiment à quoi on peut s’attendre, donc on va voir comment ces dons évoluent. On remercie bien sûr toutes les personnes qui ont déjà participé (ou qui projettent de le faire) à financer notre logiciel libre pour le traitement des images. Notre rêve ultime serait de pouvoir un jour affirmer que l’illustration ci‐dessous n’est plus qu’un lointain souvenir !</p>
<p><a href="https://gmic.eu/gmic270/fullsize/fr_commitstrip.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66725f636f6d6d697473747269702e706e67/fr_commitstrip.png" alt="La réalité du développement du projet G’MIC" title="Source : https://gmic.eu/gmic270/thumb/fr_commitstrip.png"></a> <em>Fig. 7.2 : la dure réalité du développement du projet G’MIC ☺ (<a href="https://www.commitstrip.com/fr/2014/05/07/the-truth-behind-open-source-apps/">illustration issue du site CommitStrip</a>).</em></p>
<h3 id="toc-72-intégration-de-la-colorisation-intelligente-dans-gimp">7.2. Intégration de la « Colorisation intelligente » dans GIMP</h3>
<p>Mentionnons également le travail de <a href="//linuxfr.org/users/jehan">Jehan</a>, bien connu des lecteurs de LinuxFr.org, de par ses dépêches régulières et ses contributions au développement du logiciel GIMP. Jehan a été recruté par le laboratoire GREYC en septembre 2018 (CDD de 12 mois), pour travailler sur <em>G’MIC</em>, grâce à un financement d’ingénieur de développement alloué par l’<a href="https://ins2i.cnrs.fr/">institut INS2I du CNRS</a> (qu’au passage, nous remercions chaleureusement).</p>
<p>Une de ses premières missions a été de ré‐implémenter l’algorithme de « Colorisation intelligente » de <em>G’MIC</em> (que nous avions <a href="//linuxfr.org/news/g-mic-2-0-un-second-souffle-pour-le-traitement-d-images-libre#3-faciliter-la-vie-des-dessinateurs">déjà présenté précédemment</a>) pour en faire un nouveau mode interactif intégré à l’outil « Remplissage » de GIMP.</p>
<p><a href="https://gmic.eu/gmic270/fullsize/smart_coloring.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f736d6172745f636f6c6f72696e672e706e67/smart_coloring.png" alt="Algorithme de « Colorisation intelligente »" title="Source : https://gmic.eu/gmic270/thumb/smart_coloring.png"></a> <em>Fig. 7.3 : l’algorithme de colorisation intelligente de G’MIC, maintenant disponible dans GIMP, aide les illustrateurs à coloriser leurs dessins plus rapidement.</em></p>
<p>Jehan a décrit tout son travail dans <a href="https://girinstud.io/news/2019/02/colorisation-intelligente-dans-gimp/">un article de blog</a>, dont on ne peut que conseiller la lecture. L’idée ici n’est pas de reproduire son texte, mais de faire mention de cette activité, et de la considérer comme une autre contribution originale du projet <em>G’MIC</em> aux outils libres pour la création graphique : au laboratoire GREYC, nous sommes réellement heureux et fiers d’avoir imaginé et élaboré un algorithme de colorisation d’images, dont les artistes peuvent se servir via un outil bien intégré dans un logiciel aussi populaire que GIMP.</p>
<p>Cet algorithme de colorisation intelligente a fait l’objet de <a href="https://hal.archives-ouvertes.fr/hal-01891876">publications scientifiques</a>, de présentations aux conférences <em>GRETSI’2017</em>, <em>EuroGraphics VMV’2018</em>, ainsi qu’au <a href="https://www.youtube.com/watch?v=3oHe0Y43dx8"><em>Libre Graphics Meeting 2019</em></a>. Jehan a par ailleurs été interviewé dans <a href="https://cause-commune.fm/podcast/logiciels-libres-pour-limage-et-la-video-transcriptions-directive-droit-dauteur/">l’émission « Libre à vous »</a>, sur Radio Cause commune. Et on a même eu le droit à un petit encart dans un numéro de <em>Sciences & Vie Junior</em> !</p>
<p><a href="https://gmic.eu/gmic270/fullsize/sev_junior.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f7365765f6a756e696f722e706e67/sev_junior.png" alt="Algorithme de « Colorisation intelligente »" title="Source : https://gmic.eu/gmic270/thumb/sev_junior.png"></a> <em>Fig. 7.4 : extrait du magazine</em> Sciences & Vie Junior <em>où l’algorithme de colorisation intelligente de G’MIC est cité.</em></p>
<p>Et c’est avec une grande satisfaction que nous constatons que cet algorithme est réellement utilisé, à gauche et à droite, pour diverses réalisations (comme dans <a href="https://www.youtube.com/watch?v=Z5THsjJGYcE&feature=youtu.be">cette chouette vidéo</a> de <em>GDQuest</em>, pour la colorisation de <em>sprites</em> de jeux vidéos). La recherche scientifique réalisée en laboratoire, qui se démocratise de cette façon, et qui devient accessible au grand public, c’est ça qu’on veut voir !</p>
<h3 id="toc-73-brèves-diverses-liées-au-projet">7.3. Brèves diverses liées au projet</h3>
<ul>
<li><p>Récemment, une grosse amélioration des performances de <em>G’MIC</em> sous Windows a été accomplie, par le recodage du générateur de nombres aléatoires (maintenant <a href="https://fr.wikipedia.org/wiki/R%C3%A9entrance">réentrant</a>) et la suppression de <a href="https://fr.wikipedia.org/wiki/Exclusion_mutuelle">Mutex</a> qui créaient un goulot d’étranglement des performances pour tous les filtres nécessitant des séries de nombres aléatoires (et il y en avait beaucoup !). C’était tout bête, mais il fallait y penser, et certains filtres se voient accélérer d’un facteur quatre à cinq sous Windows !</p></li>
<li><p>Depuis décembre 2018, notre greffon <em>G’MIC-Qt</em> est utilisable avec le logiciel <a href="https://fr.wikipedia.org/wiki/Paint.net"><em>Paint.net</em></a>, gratuiciel (non libre) d’édition graphique sous Windows. Ceci, grâce au travail de <a href="https://github.com/0xC0000054">Nicholas Hayes</a> qui a écrit le <a href="https://en.wikipedia.org/wiki/Glue_code">code glu</a> permettant l’interaction entre <em>G’MIC-Qt</em> et le logiciel hôte <em>Paint.net</em>. Les utilisateurs de ce logiciel peuvent donc maintenant profiter eux aussi des nombreux filtres proposés par <em>G’MIC</em>. Cette version du greffon, <a href="https://forums.getpaint.net/topic/113564-gmic-8-14-2019">disponible ici</a>, a déjà été élu « meilleur greffon de l’année 2018 » par les membres du forum de <em>Paint.net</em> ! ☺ Nicholas surveille les sorties de <em>G’MIC</em> de près et a déjà actualisé sa variante du greffon, en version <strong>2.7.0</strong>.</p></li>
<li>
<p>Depuis octobre 2018, le greffon <em>G’MIC-Qt</em> pour GIMP est compilé et proposé pour MacOS, par un nouveau mainteneur, <a href="https://www.patreon.com/andreaferrero">Andrea Ferrero</a>, qui est par ailleurs le développeur principal du logiciel libre <a href="http://photoflowblog.blogspot.com/">Photoflow</a>, un éditeur d’images non destructif (<a href="https://discuss.pixls.us/t/pre-compiled-gimp-plug-in-for-osx-ready-for-testing/">plus d’informations ici</a>).</p>
<ul>
<li>Depuis la fermeture du réseau social <em>Google+</em> nous avons ouvert deux nouveaux comptes, sur <a href="https://framasphere.org/people/b1132ee0b40a013639932a0000053625">Framasphere</a> et <a href="https://www.reddit.com/r/gmic">Reddit</a>, pour partager des nouvelles de la vie du projet (mais notre <a href="https://twitter.com/gmic_ip">flux twitter</a> est toujours celui qui reste le plus actif).</li>
</ul>
</li>
<li><p>Remercions au passage le père Noël, qui l’année dernière nous a gentiment livré une version matérialisée de notre mascotte « Gmicky ». C’est presque ça ! ☺</p></li>
</ul>
<p><a href="https://gmic.eu/gmic270/fullsize/gmicky_irl.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f676d69636b795f69726c2e706e67/gmicky_irl.png" alt="pouet" title="Source : https://gmic.eu/gmic270/thumb/gmicky_irl.png"></a> <em>Fig. 7.5 : la mascotte « Gmicky », apportée par le père Noël, en décembre 2018.</em></p>
<ul>
<li>Le projet <em>G’MIC</em> a été présenté lors du <a href="https://www.normandie.fr/feno">FÊNO</a>, le Festival grand public de l’« Excellence Normande », du 12 au 14 avril 2019, au parc des Expositions de Caen. Nous étions hébérgés sur le stand du <a href="http://normandie.cnrs.fr/">CNRS Normandie</a>, et nous avons réalisé entre autres des démonstrations de <a href="https://gmic.eu/gmic270/fullsize/teaser_style_transfer.png">transfert de style (<em>teaser</em>)</a> et <a href="https://gmic.eu/gmic270/fullsize/teaser_illumination2d.png">d’illumination automatique de dessins au trait (<em>teaser</em>)</a>.</li>
</ul>
<p><a href="https://gmic.eu/gmic270/fullsize/feno.png"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f676d69633237302f7468756d622f66656e6f2e706e67/feno.png" alt="pouet" title="Source : https://gmic.eu/gmic270/thumb/feno.png"></a> <em>Fig. 7.6 : nous étions présents au stand du CNRS, pour des démonstrations de G’MIC, à la « Fête de l’Excellence Normande 2019 ».</em></p>
<ul>
<li>Et pour creuser encore plus, quelques autres liens externes que nous avons trouvé intéressants, et qui mentionnent <em>G’MIC</em> :
<ul>
<li>une <a href="https://youtu.be/cshL2EjFdXc">vidéo de présentation du greffon <em>G’MIC-Qt</em></a>, par <em>Chris’Tutorial</em> ;</li>
<li>la chaine Youtube <a href="https://www.youtube.com/channel/UCPHIhisbs90ks4-4EsdXtpQ"><em>MyGimpTutorialChannel</em></a> propose des tas de vidéos montrant l’utilisation de <em>G’MIC-Qt</em> sous GIMP pour réaliser divers effets (en allemand) ;</li>
<li>
<a href="https://www.theclinic.cl/"><em>The Clinic</em></a>, journal hebdomadaire chilien a apparemment utilisé <em>G’MIC</em> <a href="https://twitter.com/nacecontragolpe/status/1106917303587885056/photo/1">pour réaliser un effet sur l’une de ses couvertures</a> (via le filtre de lissage <strong>« Artistic / Dream Smoothing »</strong>) ;</li>
<li>un autre <a href="https://www.youtube.com/watch?v=yv7a7R3gTFA">tutoriel vidéo</a>, montrant comment utiliser le filtre <strong>« Artistic / Rodilius »</strong> de <em>G’MIC</em> pour créer des photos d’animaux stylisés.</li>
</ul>
</li>
</ul>
<h2 id="toc-8-le-futur-et-promis-on-arrête">8. Le futur, et promis on arrête !</h2>
<p>Quand je dis qu’on arrête, c’est bien sûr de la dépêche dont je parle, pas du développement du projet ! </p>
<p>Comme nous avons essayé de le montrer, <em>G’MIC</em> continue d’être un projet libre actif, et avec ses onze ans d’existence, suffisamment mature pour être utilisé « en production » (qu’elle soit artistique ou scientifique). Et c’est d’ailleurs ce qu’on observe, à notre grande satisfaction, par les nombreux témoignages d’utilisateurs à travers le monde. Nous n’avons jamais suivi de feuille de route précise pour le développement du projet : les fonctionnalités arrivent en fonction des besoins des développeurs et des utilisateurs (et du temps limité que nous pouvons y consacrer !). En ce moment, on s’intéresse beaucoup aux méthodes de traitement d’images basées sur l’utilisation des réseaux de neurones, et des techniques d’<a href="https://fr.wikipedia.org/wiki/Apprentissage_profond">apprentissage profond</a>. Il est donc possible que certaines de ces méthodes soient intégrées dans le logiciel, dans un futur plus ou moins proche (nous avons par exemple déjà du code prototypé qui tourne dans <em>G’MIC</em> et qui réalise de l’apprentissage de données images avec <a href="https://fr.wikipedia.org/wiki/R%C3%A9seau_neuronal_convolutif">des réseaux de neurones convolutionnels</a>, mais on en est encore qu’au stade du prototypage…).</p>
<p>Après onze ans de développement (et même vingt ans, si l’on inclut la bibliothèque <a href="http://cimg.eu"><em>CImg</em></a> sur lequel <em>G’MIC</em> se repose), on en arrive à un point où le cœur du projet est, techniquement parlant, suffisamment bien conçu et stable, pour ne pas devoir le réécrire complètement dans les années à venir. Par ailleurs, le nombre de fonctionnalités disponibles dans <em>G’MIC</em> couvre déjà une grosse partie des besoins classiques en traitement d’images.</p>
<p>L’évolution de ce projet peut donc emprunter plusieurs chemins, en fonction des ressources humaines et matérielles que nous pourrons y consacrer dans le futur (en développement, mais aussi en gestion de projet, en communication, etc.). Arriver à accroître ces ressources sera sans aucun doute un des enjeux important de ces prochaines années, si l’on veut que <em>G’MIC</em> continue son avancée (et ce ne sont pas les idées qui nous manquent !). Dans le cas contraire, il pourrait arriver que le logiciel soit seulement maintenu à son état actuel (et fonctionnel).</p>
<p>C’est, bien sûr, dans une optique de progression, que nous avons récemment mis en place <a href="https://libreart.info/fr/projets/gmic">la page de dons</a>. Nous espérons aussi que d’autres opportunités se présenteront prochainement pour nous permettre de valoriser ce logiciel.</p>
<p>Nous en profitons, pour relancer un appel à candidature pour <a href="https://emploi.cnrs.fr/Offres/CDD/UMR6072-DAVTSC-003/Default.aspx">un poste d’ingénieur d’aide au développement de <em>G’MIC</em></a>, dont nous avons obtenu le financement pour l’année universitaire 2019-2020. Si vous souhaitez plonger avec nous dans cette belle aventure du traitement d’images libre, tout en profitant du climat tropical de notre rayonnante ville de Caen, cette offre est faite pour vous ! (et il faudrait se dépêcher de répondre, car l’annonce expire le 28 août ☺).</p>
<p>Voilà, cette dépêche est maintenant terminée, merci d’avoir tenu jusqu’au bout, vous pouvez reprendre une activité normale ! J’essayerai autant que possible de répondre aux questions éventuelles dans les commentaires.</p>
<hr>
<p><strong><em>Post‐scriptum</em></strong> — Notez que l’animation 3D affichée comme <em>teaser</em> en tête de dépêche a été effectivement générée par <em>G’MIC</em>, via la commande <code>gmic x_starfield3d</code>. L’occasion de rappeler que <em>G’MIC</em> possède aussi son propre moteur de rendu capable d’afficher des objets 3D simples, ce qui est bien pratique pour la visualisation scientifique ! Nous en reparlerons peut‐être dans une prochaine dépêche…</p>
</div><div><a href="https://linuxfr.org/news/g-mic-2-7-0-une-rentree-pleine-de-style-pour-le-traitement-d-images.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/117924/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/g-mic-2-7-0-une-rentree-pleine-de-style-pour-le-traitement-d-images#comments">ouvrir dans le navigateur</a>
</p>
David TschumperléDavy DefaudYsabeau 🧶 🧦Benoît SibaudYves Bourguignonpalm123https://linuxfr.org/nodes/117924/comments.atomtag:linuxfr.org,2005:Post/403832019-08-14T09:57:39+02:002019-08-14T09:57:39+02:00[emploi] Ingénieur de développement pour la plateforme libre de traitement d'images G'MIC (CNRS)<p>Bonjour à tous,</p>
<p>Nous recherchons un candidat (niveau BAC+5), pour nous aider au développement du cadriciel libre de traitement d'images <a href="https://gmic.eu">G'MIC</a>, développé au sein du laboratoire de recherche <a href="https://www.greyc.fr">GREYC</a> (<em>UMR CNRS 6072</em>), localisé à Caen.</p>
<p>C'est un CDD de 12 mois, d'ingénieur de développement. <br>
Les objectifs du poste sont adaptables au profil du candidat, l'idée est d'avoir une mission qui soit en adéquation à la fois avec les compétences et les envies du candidat, et avec les intérêts du développement de G'MIC.</p>
<p>Si vous souhaitez profiter de cette belle ville de Caen, et de son légendaire climat tropical, et goûter aux joies du développement pour la recherche, au sein d'un laboratoire CNRS, n'hésitez pas à nous contacter pour en discuter plus longuement.</p>
<p>La fiche de poste détaillée est disponible ici : <a href="https://emploi.cnrs.fr/Offres/CDD/UMR6072-DAVTSC-003/Default.aspx">https://emploi.cnrs.fr/Offres/CDD/UMR6072-DAVTSC-003/Default.aspx</a><br>
(cette fiche de poste sera visible jusqu'au 28/08/2019).</p>
<div><a href="https://linuxfr.org/forums/general-petites-annonces/posts/emploi-ingenieur-de-developpement-pour-la-plateforme-libre-de-traitement-d-images-g-mic-cnrs.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/117889/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/general-petites-annonces/posts/emploi-ingenieur-de-developpement-pour-la-plateforme-libre-de-traitement-d-images-g-mic-cnrs#comments">ouvrir dans le navigateur</a>
</p>
David Tschumperléhttps://linuxfr.org/nodes/117889/comments.atomtag:linuxfr.org,2005:News/389842018-12-30T11:32:26+01:002019-01-24T21:09:08+01:00Vision pour LILA et ZeMarmotLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Imaginez un studio de film, avec des artistes et techniciens qualifiés, qui travaillent sur des films ou des séries intéressantes… et qui les partagent sous une licence libre, pour être visibles par tous, partout (télé, cinéma, Web…), partageables et réutilisables.</p>
<p>Imaginez maintenant que ce studio utilise essentiellement du logiciel libre (et du matériel libre, si disponible), qu’ils le corrigent, voire le modifient et l’améliorent au besoin, aussi bien pour des logiciels finals (tels que GIMP, Blender, Inkscape…), de bureau (tel GNOME), voire jusqu’au système d’exploitation (GNU/Linux) et tout le reste !</p>
<p>Voici donc mon rêve pour l’association à but non lucratif <a href="https://libreart.info/">LILA</a> et pour le projet <a href="https://film.zemarmot.net/">ZeMarmot</a> (notre premier film, d’animation). C’est ce que je vise depuis le début, mais je me dis que ce n’était peut‐être pas suffisamment clair.</p>
<p>Si vous aimez ce rêve, je vous encourage à nous aider en donnant par <a href="https://www.patreon.com/zemarmot">Patreon</a>, <a href="https://www.tipeee.com/zemarmot">Tipeee</a>, <a href="https://liberapay.com/ZeMarmot/">Liberapay</a>, ou <a href="https://film.zemarmot.net/fr/donate">tout autre moyen (donation directe bancaire, PayPal, etc.)</a>. Car, comme toute association à but non lucratif, LILA et ZeMarmot vivent par et pour vous !</p>
<p>Si vous voulez lire plus, je rajoute des détails ci‐dessous !</p>
</div><ul><li>lien nᵒ 1 : <a title="https://libreart.info/" hreflang="fr" href="https://linuxfr.org/redirect/103334">Association LILA</a></li><li>lien nᵒ 2 : <a title="https://film.zemarmot.net/" hreflang="fr" href="https://linuxfr.org/redirect/103335">Projet ZeMarmot</a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/tags/gimp/public" hreflang="fr" href="https://linuxfr.org/redirect/103336">GIMP sur LinuxFr.org</a></li><li>lien nᵒ 4 : <a title="https://linuxfr.org/tags/gmic/public" hreflang="fr" href="https://linuxfr.org/redirect/103337">G’MIC sur LinuxFr.org</a></li><li>lien nᵒ 5 : <a title="https://film.zemarmot.net/fr/donate" hreflang="fr" href="https://linuxfr.org/redirect/103338">Donation pour ZeMarmot/LILA/GIMP</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#toc-mon-emploi-actuel">Mon emploi actuel</a></li>
<li><a href="#toc-et-zemarmot-dans-tout-%C3%A7a">Et ZeMarmot dans tout ça ?</a></li>
<li><a href="#toc-lila-en-deux-mots">LILA en deux mots</a></li>
<li><a href="#toc-et-le-logiciel-libre-alors">Et le logiciel libre alors ?</a></li>
<li><a href="#toc-2018-en-revue">2018 en revue</a></li>
<li><a href="#toc-le-futur">Le Futur</a></li>
<li><a href="#toc-les-r%C3%AAves-peuvent-se-r%C3%A9aliser-si-vous-aidez">Les rêves peuvent se réaliser si vous aidez !</a></li>
</ul>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f692e696d6775722e636f6d2f586e676b3141392e706e67/Xngk1A9.png" alt="Joyeuse année, par LILA" title="Source : https://i.imgur.com/Xngk1A9.png"></p>
<hr>
<p><em>Note : Il s’agit d’une copie du <a href="https://girinstud.io/news/2018/12/vision-pour-lila-et-zemarmot/">même article publié sur notre journal de production</a>.</em></p>
<h2 id="toc-mon-emploi-actuel">Mon emploi actuel</h2>
<p>Au niveau personnel, j’ai récemment été engagé pour un an par le <a href="https://fr.wikipedia.org/wiki/Centre_national_de_la_recherche_scientifique">CNRS</a> pour développer du code touchant à <a href="https://www.gimp.org/">GIMP</a> et <a href="http://gmic.eu/">G’MIC</a>. J’ai peu de salaire stable depuis quelques années, et je suis donc content que ce soit pour travailler sur GIMP (ce que j’ai fait bénévolement ou peu payé pendant six ans) !<br>
Pour ajouter un peu de contexte, l’équipe de G’MIC m’avait d’abord proposé de travailler sur un greffon pour Photoshop, ce que j’ai poliment refusé. Je n’ai rien contre Photoshop, mais ce n’est sûrement pas le boulot de mes rêves. Le projet fut alors retravaillé pour que je puisse continuer à travailler avec GIMP. Deux projets principaux ont été identifiés :</p>
<ul>
<li>la gestion d’extension dans GIMP, ce dont <a href="https://girinstud.io/news/2018/07/financement-collaboratif-de-la-gestion-des-extensions-dans-gimp-et-plus/">j’avais déjà parlé</a> (sans savoir à l’époque que je serais engagé pour cela), puisque cela aidera beaucoup G’MIC à être installé ; j’en profiterai aussi pour améliorer les extensions de manière générale (ce que je prévoyais d’ailleurs depuis le début) ;</li>
<li>l’implémentation de leur <a href="https://hal.archives-ouvertes.fr/hal-01891876">algorithme de colorisation intelligente</a> dans GIMP ; ce projet vint de ma propre initiative quand ils m’ont proposé de travailler ensemble, car cela rentrait très bien dans mes propres plans, et rendrait enfin leur super‐algo « utile » (l’interaction dans G’MIC est des plus douloureuses !) ; j’en reparlerai dans un article dédié, mais voici pour vous donner une idée :
<img src="//img.linuxfr.org/img/68747470733a2f2f692e696d6775722e636f6d2f384e32626533512e676966/8N2be3Q.gif" alt="Démo de la colorisation intelligente dans GIMP" title="Source : https://i.imgur.com/8N2be3Q.gif">
</li>
</ul>
<h2 id="toc-et-zemarmot-dans-tout-ça">Et ZeMarmot dans tout ça ?</h2>
<p><a href="https://film.zemarmot.net/"><em>ZeMarmot</em></a> est mon projet adoré (de même que celui d’Aryeom). Je le chéris et c’est là que je vois un futur (pas forcément <em>ZeMarmot</em> en soi, mais là où ça va mener). Ainsi, même si j’ai une autre source de revenu temporaire, je voudrais réitérer que si vous aimez ce que j’ai fait jusque‐là, alors c’est à <em>ZeMarmot</em> qu’il faut donner. Financer <em>ZeMarmot</em> est le seul moyen de me permettre de continuer à améliorer GIMP sur le long terme.</p>
<p>Je vois cette année avec le CNRS comme une opportunité de permettre à <em>ZeMarmot</em> de s’épanouir. Car, soyons clair, ce n’est pas encore le cas. Chaque année, nous répétons la routine de demander votre aide et, d’ailleurs, nous sommes très peu doués sur ce point (quand je vois notamment que les autres assos et fondations ont commencé leurs campagnes de dons depuis un mois !). Nous sommes essentiellement des techniciens (développeurs, animateurs, etc.) et nous sommes vraiment nuls en marketing. Donc, voici notre demande à la dernière seconde !</p>
<p>À ce jour, nous sommes financés à peine au dessus des 1000 € par mois, ce qui ne permet même pas de payer un salaire à temps plein au minimum légal en France. Ainsi, en 2018, LILA a été capable d’engager Aryeom (réalisation et animation) et moi‐même (développement) en moyenne six jours par mois. C’est peu ! Pourtant, c’est ce qui nous a fait vivre. On a estimé qu’il faut au moins 2 100 € par mois pour une personne et, qu’en vrai, nous avons besoin de 5 000 € par personne pour un salaire raisonnable et des conditions de travail acceptables (nous avons vu d’ailleurs que la fondation Blender fait aussi cette même estimation), même si cela reste sous les prix du marché. Notre financement actuel est donc quatre fois trop petit pour un minimum déraisonnable, et dix fois sous le minimum raisonnable. Sans même parler de la lointaine possibilité d’engager plus de gens. Triste, hein ?</p>
<h2 id="toc-lila-en-deux-mots">LILA en deux mots</h2>
<p>LILA est enregistrée officiellement en France comme une association à but non lucratif, selon les termes de la loi de 1901. Son numéro d’activité est celui d’une production de film, lui donnant un statut vraiment unique qui lui permet d’engager des gens pour la production de films libres, ce qui est fait depuis trois ans.</p>
<p>Le but de cette production n’est pas l’enrichissement d’actionnaires quelconques (il n’y en a pas). Nous voulons créer nos œuvres, les faire connaître et passer au projet suivant. Car nous aimons ce que nous faisons. C’est pour cela que <em>ZeMarmot</em> est sous licence <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons By-SA 4.0</a>, permettant à chacun de télécharger le film, le partager avec amis et famille, et même de le vendre ou de le modifier ! Sans blague ! Nous proposerons même chaque image source avec les calques !</p>
<p>En outre, LILA paye de vrais salaires pour chaque participant. En effet, nous ne considérons pas que « Art libre » signifie « œuvre au rabais » ou même « amateurisme ». C’est un projet sympa ? Oui. Mais c’est aussi professionnel.</p>
<p>Si LILA était soudainement financé au‐dessus de toutes nos espérances, cela ne se transformerait pas en des salaires indécents. Simplement, LILA pourrait embaucher plus de personnes pour réaliser des superbes films et logiciels plus rapidement et ainsi rendre le monde de l’Art plus agréable. C’est ça être une association à but non lucratif !</p>
<h2 id="toc-et-le-logiciel-libre-alors">Et le logiciel libre alors ?</h2>
<p>Là, c’est l’autre aspect du studio : nous utilisons uniquement des logiciels libres ! Non seulement cela, mais nous en développons aussi ! Je ne parle pas de libérer un script interne, mal codé et utilisé par trois personnes dans le monde tous les 36 du mois. Nous faisons notamment partie de l’équipe de développement de GIMP ! Ces dernières années, un quart des <em>commits</em> de GIMP sont les nôtres (ce qui peut être aisément <a href="https://www.openhub.net/p/gimp/contributors/summary">vérifié</a>, en particulier les <em>commits</em> à mon nom, « Jehan », de même que ceux d’Aryeom et Lionel N.) Je suis aussi à l’origine de la relaxe de notre politique de sortie pour que nous sortions davantage de versions de GIMP avec de nouvelles fonctionnalités (cela fait des années que je le demandais et ce fut finalement acté à partir de GIMP 2.10.0 !). Il me semble évident que LILA a eu une contribution positive et importante pour GIMP.</p>
<p>Bien sûr, GIMP est donc notre projet logiciel principal, ce qui n’a pas empêché <a href="https://www.openhub.net/accounts/Jehan/">divers correctifs</a> ici ou là dans d’autres logiciels, parfois majeurs ! Sans compter nos rapports de bogues très réguliers, quand nous n’avons pas le temps de corriger nous‐mêmes… Nous sommes aussi des utilisateurs importants de tablettes graphiques, nous avons des contacts avec des développeurs de Wacom et Red Hat (nous sommes d’ailleurs désolés, nous savons que nous pouvons être un peu chiants parfois avec nos bogues ! 😛). Et ainsi de suite. Ainsi, la seule chose nous empêchant d’en faire plus est le temps. Nous avons besoin de plus de mains, ce qui ne peut être amélioré que si notre financement nous permet enfin d’engager de nouveaux développeurs.</p>
<p>Aussi, soyons clairs : ce n’est pas un truc temporaire. Nous croyons tout simplement aux logiciels libres. Nous pensons que c’est la chose à faire, que chacun doit avoir accès aux meilleurs logiciels et que c’est ainsi que peuvent être faits les meilleurs logiciels. Je le disais d’ailleurs : je développe environ un quart du code de GIMP. Cela signifie que trois quarts ne sont pas réalisés par moi. Et c’est sans parler de GEGL (le moteur graphique de GIMP). En d’autres termes, je ne pourrais pas en faire autant seul. J’adore travailler avec certains autres développeurs les plus brillants que j’ai eu l’occasion de rencontrer. En plus, les autres développeurs de GIMP sont également sympas et agréables. Que demander d’autre ? C’est ça, le logiciel libre.<br>
C’est ainsi que l’utilisation et la contribution au logiciel libre est dans les statuts de notre studio, notre « contrat en tant que studio à but non lucratif », et cela ne disparaîtra donc pas.</p>
<h2 id="toc-2018-en-revue">2018 en revue</h2>
<p>Une revue rapide des choses que j’ai menées à bien en 2018 :</p>
<ul>
<li>633 <em>commits</em>, soit près de deux <em>commits</em> par jour en moyenne, dans la branche <em>master</em> de GIMP (sans compter ce qui est dans les branches de fonctionnalités, mon travail en cours), plus mes correctifs dans divers projets que nous utilisons (GEGL, glib, GTK+, libwebp, Appstream…) ;</li>
<li>aider le projet MyPaint à préparer une nouvelle sortie de libmypaint version 1 (espérons début 2019), et la création du paquet de données <code>mypaint-brushes</code> — maintenant un <a href="https://github.com/mypaint/mypaint-brushes">paquet officiel de MyPaint</a> ;</li>
<li>la création et la maintenance continue du Flatpak de GIMP sur Flathub (d’après ce qu’on nous a dit, le logiciel le plus téléchargé de Flathub !) ;</li>
<li>la sauvegarde automatique des images en cas de plantage de GIMP ;</li>
<li>outils de débogage (traces d’exécution, infos de plate‐forme…) ;</li>
<li>prise en charge basique des écrans à haute résolution (HiDPI) sur GIMP 2.10 (et plus à venir pour le futur GIMP 3) ;</li>
<li>travail en cours pour la <a href="https://girinstud.io/news/2018/07/financement-collaboratif-de-la-gestion-des-extensions-dans-gimp-et-plus/">gestion d’extension dans GIMP</a> ;</li>
<li>maintenance de diverses données (icônes, brosses, appdata, etc.) de GIMP ;</li>
<li>travail sur les tablettes et périphériques d’entrée ;</li>
<li>mentorat pour un stagiaire FSF (amélioration de la prise en charge de JPEG 2000) ;</li>
<li>correction de la plupart des cas d’enfer de DLL des greffons sous Windows (problème majeur il y a encore peu !) ;</li>
<li>revue et amélioration de nombreuses fonctionnalités (redressement d’image dans l’outil de mesure, libheif, libwebp, greffon de capture d’écran, texte vertical dans l’outil texte, et bien plus) ;</li>
<li>l’option de colorisation intelligente dans l’outil de remplissage.</li>
</ul>
<p>Et probablement plein de choses que j’oublie… J’aide aussi à la maintenance du site et à l’écriture d’article sur <em>gimp.org</em> (63 <em>commits</em> cette année). Et tout cela sans compter les correctifs sans rapport avec GIMP que je fais aussi (par exemple pour les <a href="https://girinstud.io/news/2018/02/ibus-hangul-and-compose-key-the-incredible-journey-of-a-simple-patch/">méthodes d’entrée en Coréen</a>) ou les nombreux rapports de bogues que nous écrivons ou aidons à corriger (notamment en étant les premiers à <a href="https://twitter.com/i/moments/933466069905367040">installer GNU/Linux sur une Wacom MobileStudio</a>, ou du moins les premiers à en parler, des bogues furent corrigés jusque dans le <a href="https://bugzilla.kernel.org/show_bug.cgi?id=197991">noyau</a> et <a href="https://bugs.freedesktop.org/show_bug.cgi?id=103086">Wayland</a>).</p>
<p>Quant à Aryeom, en 2018, elle a beaucoup travaillé sur <em>ZeMarmot</em>, bien sûr (l’animation requiert énormément de boulot ; un jour, on devra peut‐être donner plus d’information sur le sujet), nous rapprochant davantage de la sortie du pilote (à ce sujet, nous avons récemment créé un <a href="https://www.instagram.com/ZeMarmot/">compte Instagram</a> où Aryeom poste régulièrement des images et vidéos courtes de son travail en cours, pour qui est intéressé !). Elle a aussi participé à des projets tiers (nous rappelons que <em>ZeMarmot</em> ne peut financer que quelques jours par mois pour l’instant !), tels qu’un jeu de société interne pour l’association « Petits Frères des Pauvres », une <a href="https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3">vidéo marketing pour le logiciel libre Peertube</a>, des <a href="https://twitter.com/fsf/status/1076239242093871105">designs de <em>pin’s</em> pour la Free Software Foundation</a>. Elle a aussi donné quelques <a href="https://www.gimp.org/news/2018/11/08/gimp-2-10-8-released/#gimp-in-universite-de-cergy-pontoise">cours de peinture numérique et retouche avec GIMP à l’université</a>.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f692e696d6775722e636f6d2f474e3845665a412e706e67/GN8EfZA.png" alt="Travaux d’Aryeom en 2018, hors ZeMarmot" title="Source : https://i.imgur.com/GN8EfZA.png"></p>
<p>Bien sûr, elle préférerait passer tout son temps uniquement sur <em>ZeMarmot</em>. Mais encore une fois, on a besoin de vous pour permettre cela !</p>
<h2 id="toc-le-futur">Le Futur</h2>
<p>Comment je vois notre futur ? Dans quelques années, on pourra payer plusieurs artistes (réalisatrice, animateurs, artistes peintres, musiciens, etc.). LILA sera enfin un studio, certes petit, mais productif.</p>
<p>Et, bien sûr, cela signifie aussi plusieurs développeurs, donc plus de contrôle sur nos outils de production libres. J’ai tellement de rêves ! Enfin un éditeur vidéo stable et puissant sans être tordu (en contribuant au Blender VSE, à Kdenlive ou d’autres projets) ? Et quand aurons‐nous des outils de composition professionnels maintenus (2018 fut <a href="http://libregraphicsworld.org/blog/entry/the-demise-of-natron">un peu triste</a>) ? Sans parler de communication entre outils pour éditer des fichiers XCF dans GIMP, voir les changements en direct dans Blender, etc. ? Tant d’espoirs ! Tant de rêves à réaliser si l’on avait le financement !</p>
<h2 id="toc-les-rêves-peuvent-se-réaliser-si-vous-aidez">Les rêves peuvent se réaliser si vous aidez !</h2>
<p>Que pouvez‐vous y faire ? Vous pouvez aider ce studio à devenir viable. Me faire engager par le CNRS est cool pour moi, mais un peu triste pour le projet. Cela signifie notamment un manque d’indépendance. Sans compter que c’est une situation encore très précaire et temporaire. Ce n’est pas une situation stable, ni de long terme.</p>
<p>Si nous atteignions 5 000 € par mois en 2019, cela serait un premier pas énorme pour le projet et la preuve de viabilité du rêve de studio libre.</p>
<p>Nous aiderez‐vous à créer un studio d’animation libre ? Le graphisme professionnel 2D libre est à notre porte. Il lui faut juste un peu d’aide pour lui permettre de passer le pas de porte ! 🙂 Donc :</p>
<ul>
<li>
<a href="https://fr.tipeee.com/zemarmot">financez dans Tipeee (EUR €)</a> ;</li>
<li>
<a href="https://www.patreon.com/zemarmot">financez dans Patreon (USD $)</a> ;</li>
<li>
<a href="https://liberapay.com/ZeMarmot/">financez dans Liberapay</a> ;</li>
<li>ou <a href="https://film.zemarmot.net/fr/donate">d’autres méthodes de donation (notamment virement ou PayPal)</a>.</li>
</ul>
<p><strong>Passez de bonnes fêtes de fin d’année ! Et joyeuse nouvelle année !</strong></p>
<p>Et pour voir notre petite vidéo animée marrante de fin d’année, c’est <a href="https://youtu.be/uaZRcZf6lg0">par ici</a> !</p>
</div><div><a href="https://linuxfr.org/news/vision-pour-lila-et-zemarmot.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/116081/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/vision-pour-lila-et-zemarmot#comments">ouvrir dans le navigateur</a>
</p>
Jehanpalm123ZeroHeureXavier TeyssierDavy DefaudPierre JarillonBenoît Sibaudhttps://linuxfr.org/nodes/116081/comments.atomtag:linuxfr.org,2005:News/387462018-08-21T08:58:16+02:002018-10-07T17:33:41+02:00G’MIC 2.3.4 : traiter ses images, en se disant « déjà 10 ans ! »Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p><a href="https://www.greyc.fr/?page_id=445">L’équipe IMAGE</a> du <a href="https://www.greyc.fr">GREYC</a> est heureuse de pouvoir fêter avec vous les dix années d’existence du logiciel <a href="http://gmic.eu"><em>G’MIC</em></a>, son cadriciel libre (sous licence <a href="http://www.cecill.info/">CeCILL</a>), générique et extensible pour le <a href="https://fr.wikipedia.org/wiki/Traitement_d%27images">traitement des images</a>.<br>
Le GREYC est un laboratoire de recherche publique en sciences du Numérique, situé à Caen en Normandie, et chapeauté par trois tutelles : le <a href="http://www.cnrs.fr">CNRS</a> (UMR 6072), l’<a href="http://www.unicaen.fr/">Université de Caen</a> et l’<a href="http://www.ensicaen.fr/">ENSICAEN</a>.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_234.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f3233342e706e67/gmic_234.png" alt="G’MIC-Qt" title="Source : http://gmic.eu/gmic234/thumb/gmic_234.png"></a> <br>
<em>G’MIC-Qt, l’interface utilisateur principale du projet libre G’MIC.</em></p>
<p>Cet anniversaire décennal nous donne l’occasion rêvée, d’une part, d’annoncer la sortie d’une nouvelle version de ce logiciel libre (numérotée <a href="https://gmic.eu/download.shtml"><strong>2.3.4</strong></a>), et d’autre part, de partager avec vous (comme <a href="//linuxfr.org/tags/g'mic/public">à notre habitude</a>) un résumé des dernières fonctionnalités notables ajoutées depuis la <a href="//linuxfr.org/news/g-mic-2-2-v-la-les-filtres">dernière dépêche</a> sur G’MIC, publiée sur <em>LinuxFr.org</em> en février 2018.</p>
</div><ul><li>lien nᵒ 1 : <a title="https://gmic.eu" hreflang="en" href="https://linuxfr.org/redirect/102532">Le projet G’MIC</a></li><li>lien nᵒ 2 : <a title="https://twitter.com/gmic_ip" hreflang="en" href="https://linuxfr.org/redirect/102533">Fil Twitter</a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/news/gmic-un-nouvel-outil-libre-de-manipulation-dimages" hreflang="fr" href="https://linuxfr.org/redirect/102534">Annonce de la toute première version de G’MIC sur LinuxFr.org</a></li><li>lien nᵒ 4 : <a title="https://linuxfr.org/tags/gmic/public" hreflang="fr" href="https://linuxfr.org/redirect/102535">Série d’articles G’MIC sur LinuxFr.org</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#toc-1-retour-sur-dix-ann%C3%A9es-de-d%C3%A9veloppement">1. Retour sur dix années de développement</a></li>
<li><a href="#toc-2-illumination-automatique-de-dessins-coloris%C3%A9s-en-aplats">2. Illumination automatique de dessins colorisés en aplats</a></li>
<li><a href="#toc-3-projection-st%C3%A9r%C3%A9ographique">3. Projection stéréographique</a></li>
<li>
<a href="#toc-4-toujours-plus-de-possibilit%C3%A9s-pour-la-manipulation-des-couleurs">4. Toujours plus de possibilités pour la manipulation des couleurs</a><ul>
<li><a href="#toc-41-le-filtre-clut-from-afterbefore-layers">4.1. Le filtre « CLUT from after‐before layers »</a></li>
<li><a href="#toc-42-filtre-mixerpca">4.2. Filtre « Mixer [PCA] »</a></li>
</ul>
</li>
<li>
<a href="#toc-5--m%C3%A9lim%C3%A9lo-de-filtres">5. Méli‐mélo de filtres</a><ul>
<li><a href="#toc-51-le-filtre-localprocessing">5.1. Le filtre « Local processing »</a></li>
<li><a href="#toc-52-le-filtre-blendstandard">5.2. Le filtre « Blend [standard] »</a></li>
<li><a href="#toc-53-le-filtre-sketch">5.3. Le filtre « Sketch »</a></li>
<li><a href="#toc-54-le-filtre-mandelbrot---julia-sets">5.4. Le filtre « Mandelbrot - Julia sets »</a></li>
<li><a href="#toc-55-le-filtre-polygonizedelaunay">5.5. Le filtre « Polygonize [Delaunay] »</a></li>
</ul>
</li>
<li>
<a href="#toc-6-autres-faits-marquants-du-projet">6. Autres faits marquants du projet</a><ul>
<li><a href="#toc-61-am%C3%A9liorations-de-linterface-du-greffon">6.1. Améliorations de l’interface du greffon</a></li>
<li><a href="#toc-62-perfectionnement-du-c%C5%93ur-du-logiciel">6.2. Perfectionnement du cœur du logiciel</a></li>
<li><a href="#toc-63-supports-de-diffusion">6.3. Supports de diffusion</a></li>
</ul>
</li>
<li><a href="#toc-7-conclusions-et-perspectives">7. Conclusions et perspectives</a></li>
</ul>
<p><em>N. D. A. : Cliquez sur les images de la dépêche pour en visualiser des versions à meilleure résolution.</em></p>
<h2 id="toc-1-retour-sur-dix-années-de-développement">1. Retour sur dix années de développement</h2>
<p><em>G’MIC</em> est un logiciel multi‐plate‐forme (GNU/Linux, macOS, Windows…) fournissant différentes interfaces utilisateur pour la manipulation de données image <em>génériques</em>, à savoir des images ou des séquences d’images hyperspectrales 2D ou 3D à valeurs flottantes (incluant donc les images couleur « classiques »). Plus de <a href="http://gmic.eu/reference.shtml">mille opérateurs</a> différents de traitement d’images sont inclus, nombre extensible à l’envi puisque les utilisateurs peuvent ajouter leurs propres fonctionnalités via l’utilisation d’un langage de script intégré.</p>
<p>C’est fin juillet 2008, que les premières lignes de <em>G’MIC</em> sont rédigées (en <em>C++</em>).<br>
À l’époque, j’étais le principal développeur impliqué dans <a href="http://cimg.eu"><em>CImg</em></a>, une bibliothèque <em>C++</em> <em>open source</em> légère pour le traitement d’images, et je réalisais le constat suivant :</p>
<ul>
<li>l’objectif initial de <em>CImg</em>, qui était de proposer une bibliothèque « minimale » de fonctionnalités pour aider les développeurs <em>C++</em> à élaborer des algorithmes autour du traitement d’images, était globalement atteint :
<ul>
<li>la plupart des algorithmes que je considérais comme « essentiels » en traitement d’images y étaient intégrés,</li>
<li>
<em>CImg</em> était initialement conçue pour rester légère, et je ne souhaitais donc pas y inclure <em>ad vitam æternam</em> de nouveaux algorithmes, qui seraient trop lourds ou trop spécifiques et qui trahiraient le concept initial de la bibliothèque ;</li>
</ul>
</li>
<li>cette satisfaction faisait néanmoins place à une certaine déception ; quel dommage de n’avoir pu toucher qu’un public finalement assez restreint, possédant à la fois des connaissances en <em>C++</em> <strong>et</strong> en traitement d’images ! Une des évolutions naturelles du projet, consistant à créer des bibliothèques de liaison (<a href="https://fr.wikipedia.org/wiki/Binding"><em>bindings</em></a>) de <em>CImg</em> pour d’autres langages de programmation, ne m’ouvrait pas de perspectives très réjouissantes, du point de vue de l’intérêt que j’y trouvais en développement informatique ; sans compter que ces <em>bindings</em> potentiels ne concernerait, là encore, qu’un public ayant une expertise en développement.</li>
</ul>
<p>Mon envie prenait donc progressivement forme : il fallait proposer un moyen d’utiliser les fonctionnalités de traitement d’images de <em>CImg</em> pour les <strong>non‐programmeurs</strong>. Et pourquoi pas, dans un premier temps, en élaborant un outil utilisable en ligne de commande (à la façon du fameux <a href="https://www.imagemagick.org/script/convert.php"><em>convert</em></a> d’<a href="https://www.imagemagick.org"><em>ImageMagick</em></a>) ? Une première tentative, en juin 2008 (<em>inrcast</em>, qui avait été présentée dans <a href="//linuxfr.org/users/dtschump/journaux/inrcast-un-autre-outil-de-manipulation-dimages">un journal <em>LinuxFr</em></a>), se révéla infructueuse mais me permit de mieux cerner les spécificités que se devait de posséder ce genre d’outils, pour traiter confortablement des images en ligne de commande.<br>
Il m’apparut en particulier que la <strong>concision</strong> et la <strong>cohérence</strong> de la syntaxe commandant l’outil devaient être les deux piliers principaux sur lesquels il fallait se reposer. Ces aspects sont ceux qui m’ont demandé le plus d’efforts en recherche et développement (les fonctionnalités de traitement d’images proprement dites étant déjà implémentées dans <em>CImg</em>). En fin de compte, cela m’amènera bien plus loin que ce qui était prévu initialement, puisque <em>G’MIC</em> se dotera successivement d’un <a href="https://fr.wikipedia.org/wiki/Interpr%C3%A8te_(informatique)">interpréteur</a> de <a href="https://gmic.eu/tutorial/basics.shtml">son propre langage de script</a>, puis d’un compilateur à la volée (<a href="https://fr.wikipedia.org/wiki/Compilation_%C3%A0_la_vol%C3%A9e"><em>JIT</em></a>) pour l’évaluation d’expressions mathématiques et d’algorithmes de traitement d’images travaillant au niveau pixel.</p>
<p>Fin juillet 2008, je me mettais donc au travail avec les idées (presque) claires, et étais heureux d’annoncer ici même, quelques jours plus tard, la sortie d’<a href="//linuxfr.org/news/gmic-un-nouvel-outil-libre-de-manipulation-dimages">une première ébauche de <em>G’MIC</em></a>. Le projet était officiellement en marche !</p>
<p><a href="http://gmic.eu/gmic220/http://gmic.eu/gmic234/fullsize/logo_gmic.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f6c6f676f5f676d69632e706e67/logo_gmic.png" alt="Logo G’MIC" title="Source : http://gmic.eu/gmic220/thumbs/logo_gmic.png"></a> <em>Fig. 1.1 : Logo du projet G’MIC, cadriciel libre pour le traitement d’images, et sa mignonne petite mascotte « Gmicky » (illustrée par <a href="http://www.davidrevoy.com/">David Revoy</a>).</em></p>
<p>Quelques mois plus tard, en janvier 2009, enrichi par mon expérience précédente de développement du logiciel <a href="http://cimg.eu/greycstoration"><em>GREYCstoration</em></a> (outil libre pour le débruitage et l’interpolation non linéaire d’images, dont un greffon existait pour <a href="http://www.gimp.org"><em>GIMP</em></a>), et dans l’espoir de toucher un public encore plus large, je diffusais une version de <em>G’MIC</em> se déclinant sous forme <a href="//linuxfr.org/news/traitement-dimages-quand-gmic-130-sinvite-dans-gimp">d’un greffon <em>GTK</em> pour <em>GIMP</em></a>.<br>
Cette étape s’est avérée déterminante pour le projet <em>G’MIC</em>, le faisant passer de hautement confidentiel à doucement populaire :), comme l’illustre le saut significatif visible dans les statistiques de téléchargements mensuels de l’époque, présentées ci‐dessous (le projet était alors hébergé sur <a href="https://sourceforge.net/projects/gmic/"><em>Sourceforge</em></a>).</p>
<p><a href="http://gmic.eu/gmic234/fullsize/stats_plugin.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f73746174735f706c7567696e2e706e67/stats_plugin.png" alt="Statistiques téléchargements" title="Source : http://gmic.eu/gmic234/thumb/stats_plugin.png"></a> <em>Fig. 1.2 : Statistiques de téléchargement mensuels de G’MIC, entre juillet 2008 et mai 2009 (arrivée du greffon pour GIMP en janvier 2009).</em></p>
<p>Cet intérêt soudain pour le greffon de la part d’utilisateurs différents de GIMP (photographes, illustrateurs et autres artistes en tout genre…) fut en effet une vraie rampe de lancement pour le projet, avec l’apparition rapide de contributions et suggestions extérieures diverses et variées (pour le code, la gestion des forums, des pages Web, l’écriture de tutoriels, la réalisation de vidéos…). L’effet communautaire bénéfique du logiciel libre, souvent idéalisé, survenait finalement assez rapidement ! Avec aussi pour conséquence d’amener certains utilisateurs‐développeurs à s’intéresser plus en détails au fonctionnement de l’interface originelle en ligne de commande et à son langage de script associé (qui n’intéressait pas grand monde jusque‐là, il faut bien l’avouer !). De là, plusieurs d’entre eux <a href="https://github.com/dtschump/gmic-community">franchirent le pas</a> et commencèrent à élaborer et implémenter de nouveaux filtres de traitement d’images en langage <em>G’MIC</em>, intégrés progressivement au greffon pour GIMP (aujourd’hui, ces contributions représentent quasiment la moitié des filtres disponibles dans le greffon).</p>
<p>En parallèle, les apports importants et répétés de <a href="https://foureys.users.greyc.fr/Fr/index.php"><em>Sébastien Fourey</em></a>, collègue de l'équipe <em>IMAGE</em> du <em>GREYC</em> (et développeur <em>C++</em> chevronné s'il en est) ont permis d'améliorer significativement le confort d'utilisation de <em>G'MIC</em>. <em>Sébastien</em> est en effet à l'origine du développement des interfaces graphiques principales du projet, à savoir :</p>
<ul>
<li>le service Web <a href="https://gmicol.greyc.fr/"><em>G’MIC Online</em></a> (qui a plus tard été réorganisé par le service « développement » du <em>GREYC</em>) ;</li>
<li>Le logiciel libre <a href="https://github.com/c-koi/zart"><em>ZArt</em></a>, une interface graphique, basé sur la bibliothèque <a href="https://www.qt.io/"><em>Qt</em></a>, pour l’application de filtres <em>G’MIC</em> sur des séquences vidéos (provenant de fichiers ou de flux de caméras numériques) ;</li>
<li>et surtout, Sébastien s’est attaqué, fin 2016, à la réécriture complète du greffon <em>G’MIC</em> pour GIMP sous une forme plus <strong>générique</strong>, dénommée <a href="https://github.com/c-koi/gmic-qt"><em>G’MIC-Qt</em></a> ; ce composant, basé également sur la bibliothèque Qt (comme son nom l’indique), se présente sous la forme d’un greffon unique qui fonctionne de manière équivalente sous <a href="http://www.gimp.org">GIMP</a> et <a href="http://krita.org">Krita</a>, deux des logiciels libres de référence pour la retouche photographique et la peinture numérique. <em>G’MIC-Qt</em> a aujourd’hui complètement supplanté le greffon GTK d’origine grâce à ses nombreuses fonctionnalités : moteur de recherche de filtres intégré, meilleure prévisualisation, interactivité supérieure, etc. C’est aujourd’hui l’interface la plus aboutie et la plus utilisée du projet <em>G’MIC</em>, et nous espérons d’ailleurs pouvoir la décliner dans le futur pour d’autres logiciels hôtes (contactez‐nous si vous êtes intéressés par ce sujet !).</li>
</ul>
<p><a href="http://gmic.eu/gmic234/fullsize/gui_seb.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f6775695f7365622e706e67/gui_seb.png" alt="Interfaces graphiques de G’MIC" title="Source : http://gmic.eu/gmic234/thumb/gui_seb.png"></a> <em>Fig. 1.3 : Différentes interfaces graphiques du projet G’MIC, développées par Sébastien Fourey : G’MIC-Qt, G’MIC Online et ZArt.</em></p>
<p>L’idée de cette dépêche n’étant pas de rentrer trop en détails dans l’historique du projet, affirmons simplement que l’on n’a pas vraiment eu le temps de s’ennuyer ces dix dernières années !<br>
Aujourd’hui, Sébastien et moi‐même sommes les deux mainteneurs principaux du projet <em>G’MIC</em> (Sébastien, majoritairement pour ce qui concerne les aspects « interface », et moi‐même pour le développement et l’amélioration des filtres et du cœur de calcul), ceci, en complément de notre activité professionnelle principale (la recherche, l’enseignement et l’encadrement).</p>
<p>Avouons‐le, gérer un projet libre comme <em>G’MIC</em> prend un temps considérable, malgré sa taille modeste (≈ 120 000 lignes de code). Mais l’objectif de départ a été atteint : des milliers d’utilisateurs non‐programmeurs ont l’occasion d’utiliser librement et aisément nos algorithmes de traitement d’images, et ce, dans de nombreux domaines différents : <a href="https://fr.wikipedia.org/wiki/Retouche_d%27image">retouche photographique</a>, <a href="https://fr.wikipedia.org/wiki/Peinture_num%C3%A9rique">illustration et peinture numérique</a>, <a href="https://fr.wikipedia.org/wiki/Traitement_de_la_vid%C3%A9o">traitement vidéo</a>, illustration scientifique, <a href="https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9ration_proc%C3%A9durale">génération procédurale</a>, <a href="https://fr.wikipedia.org/wiki/Glitch_art"><em>glitch art</em></a>… La barre des 3,5 millions de téléchargements totaux a été dépassée l’an dernier, avec une moyenne actuelle d’environ 400 téléchargements journaliers effectués depuis le site officiel (chiffres en baisse constante depuis quelques années car <em>G’MIC</em> est de plus en plus téléchargé et installé via des sources alternatives extérieures).<br>
Il est parfois difficile de garder un rythme soutenu de développement et la motivation qui doit aller avec, mais on s’accroche, en repensant aux utilisateurs heureux qui partagent de temps à autre leur enthousiasme pour ce projet !</p>
<p>On ne peut évidemment pas nommer tous les particuliers, contributeurs à <em>G’MIC</em>, que l’on souhaiterait remercier, et avec qui on s’est régalé à échanger durant ces dix années, mais le cœur y est ! Remercions également le laboratoire GREYC et l’institut <a href="http://www.cnrs.fr/ins2i/">INS2I du CNRS</a> qui affichent un fort soutien à ce projet libre. Un grand merci également à l’équipe de <em>LinuxFr.org</em> qui n’a pas rechigné à relire et publier nos propositions régulières de <a href="//linuxfr.org/tags/gmic/public">dépêches sur <em>G’MIC</em></a> ;).</p>
<p>Mais cessons de ressasser de vieux souvenirs et passons maintenant aux choses sérieuses : les nouveautés apparues depuis la dernière version majeure 2.2 !</p>
<h2 id="toc-2-illumination-automatique-de-dessins-colorisés-en-aplats">2. Illumination automatique de dessins colorisés en aplats</h2>
<p><em>G’MIC</em> s’est récemment doté d’un filtre assez étonnant, nommé « <em>Illuminate 2D shape</em> », dont l’objectif est d’ajouter automatiquement des zones d’illumination et des ombres propres sur des dessins 2D colorisés <a href="https://fr.wikipedia.org/wiki/Aplat">en aplats</a>, pour leur donner un aspect 3D.</p>
<p>Dans un premier temps, l’utilisateur fournit un objet à illuminer, sous la forme d’une image sur fond transparent (typiquement un dessin de personnage, ou d’animal). En analysant la forme et le contenu de l’image, <em>G’MIC</em> tente alors d’en déduire une carte d’élévations 3D concordante (« <em>bumpmap</em> »). La carte d’élévations obtenue est évidemment non exacte, puisqu’un dessin 2D colorisé en aplats ne contient pas d’informations franchement explicites sur sa structure 3D associée ! À partir des élévations 3D estimées, il est aisé d’en déduire une carte de normales (« <em>normalmap</em> ») qui est utilisée dans un second temps pour générer un calque d’illumination associé au dessin (suivant un <a href="https://fr.wikipedia.org/wiki/Ombrage_de_Phong">modèle d’ombrage de Phong</a>).</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_illuminate2d.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f696c6c756d696e61746532642e706e67/gmic_illuminate2d.png" alt="Illuminate 2D shape" title="Source : http://gmic.eu/gmic234/thumb/gmic_illuminate2d.png"></a> <em>Fig. 2.1 : Le filtre « Illuminate 2D shape » de G’MIC en action, pour ombrer un dessin de scarabée (résultat d’ombrage à droite)</em>.</p>
<p>Ce nouveau filtre est très flexible et permet à l’utilisateur d’avoir un contrôle assez fin sur les paramètres d’éclairage (position et type de rendu de la source lumineuse), et d’estimation des élévations 3D. Par ailleurs, le filtre laisse à l’artiste le loisir de retravailler le calque d’illumination généré, ou même directement les cartes d’élévations et de normales 3D estimées. La figure ci‐dessous illustre le processus dans son ensemble : à partir de l’image de scarabée colorisé en aplats (<em>en haut à gauche</em>), le filtre estime de manière complètement automatique une carte de normales 3D associée (<em>en haut à droite</em>), ce qui lui permet de générer des rendus d’illumination du dessin (<em>ligne du bas</em>, avec deux styles de rendus différents : lisse et quantifié).</p>
<p><a href="http://gmic.eu/gmic234/fullsize/bug_all.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f6275675f616c6c2e706e67/bug_all.png" alt="Estimation d’une carte de normales" title="Source : http://gmic.eu/gmic234/thumb/bug_all.png"></a> <em>Fig. 2.2 : Le fonctionnement du filtre « Illuminate 2D shape » de G’MIC passe par l’estimation d’une carte de normales 3D pour générer l’illumination automatique d’un dessin</em>.</p>
<p>Malgré la difficulté inhérente au problème de conversion d’une image 2D en informations d’élévations 3D, l’algorithme utilisé s’avère étonnamment efficace dans pas mal de cas, l’estimation de la carte d’élévations 3D obtenue étant suffisamment cohérente pour générer automatiquement des illuminations de dessins 2D plausibles, comme illustré par les deux exemples ci-dessous, obtenus en quelques clics seulement !</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_snake.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f736e616b652e706e67/gmic_snake.png" alt="Exemple d’illumination 1" title="Source : http://gmic.eu/gmic234/thumb/gmic_snake.png"></a><br>
<a href="http://gmic.eu/gmic234/fullsize/gmic_tiger.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f74696765722e706e67/gmic_tiger.png" alt="Exemple d’illumination 2" title="Source : http://gmic.eu/gmic234/thumb/gmic_tiger.png"></a> <em>Fig. 2.3 : Deux exemples d’illuminations complètement automatiques de dessins 2D, générés par G’MIC.</em></p>
<p>Il arrive, bien sûr, que la carte d’élévations 3D estimée ne corresponde pas tout à fait à ce que l’on pourrait souhaiter. Qu’à cela ne tienne, le filtre permet à l’utilisateur de fournir des « guides », sous la forme d’un calque additionnel composé de traits colorés, donnant des informations plus précises à l’algorithme sur la structure du dessin à analyser. La figure ci‐dessous illustre l’utilité de ces guides pour un exemple d’illumination d’un dessin d’une main (<em>en haut à gauche</em>) : l’illumination obtenue de manière complètement automatique (<em>en haut à droite</em>) ne prend pas en compte les informations de lignes de la main. Inclure ces quelques lignes dans un calque additionnel de « guides » (en rouge, <em>en bas à gauche</em>) permet d’aider l’algorithme à illuminer le dessin de manière plus satisfaisante.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_hand4.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f68616e64342e706e67/gmic_hand4.png" alt="Utilisation de guides" title="Source : http://gmic.eu/gmic234/thumb/gmic_hand4.png"></a> <em>Fig. 2.4 : Utilisation d’un calque de « guides » pour améliorer le rendu d’illumination automatique généré par G’MIC.</em></p>
<p>Si l’on analyse plus précisément les différences obtenues entre les cartes d’élévations 3D estimées avec et sans « guides » (illustrées ci‐dessous sous forme d’objets 3D symétrisés), il n’y a pas photo : on passe d’une grosse moufle boudinée à une estimation 3D de main nettement plus détaillée !</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_hand3d_anim_all.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f68616e6433645f616e696d5f616c6c2e676966/gmic_hand3d_anim_all.gif" alt="Élévations avec et sans guides" title="Source : http://gmic.eu/gmic234/thumb/gmic_hand3d_anim_all.gif"></a> <em>Fig. 2.5 : Élévations 3D estimées pour le dessin précédent de la main, avec et sans utilisation de « guides ».</em></p>
<p>Notons pour finir que ce filtre dispose également d’un mode de prévisualisation <strong>interactif</strong>, permettant à l’utilisateur de faire bouger la source lumineuse (à la souris) et d’avoir un aperçu du dessin illuminé en temps réel. En modifiant les paramètres de position de la source lumineuse, il est ainsi possible d’obtenir le type d’animations ci‐dessous en très peu de temps, qui donne une idée assez précise de la structure 3D estimée par l’algorithme à partir du dessin d’origine.<br>
<a href="http://gmic.eu/gmic234/fullsize/gmic_hand.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f68616e642e676966/gmic_hand.gif" alt="Animation lumière" title="Source : http://gmic.eu/gmic234/thumb/gmic_hand.gif"></a> <em>Fig. 2.6 : Modification de la position de la source lumineuse et rendus d’illumination associés, calculés de manière automatique par G’MIC.</em></p>
<p>Une vidéo montrant les différentes possibilités d’édition de l’illumination permises par ce filtre est <a href="https://www.youtube.com/watch?v=G1wYSJTsVtI">visible sur YouTube</a>. Espérons que cette nouvelle fonctionnalité de <em>G’MIC</em> permette aux artistes d’accélérer l’étape d’illumination et d’ombrage de leurs futurs dessins !</p>
<h2 id="toc-3-projection-stéréographique">3. Projection stéréographique</h2>
<p>Dans un tout autre genre, nous avons également ajouté à <em>G’MIC</em> un filtre implémentant la <a href="https://fr.wikipedia.org/wiki/Projection_st%C3%A9r%C3%A9ographique">projection stéréographique</a>, très précisément nommé « <em>Stereographic projection</em> ». Ce type de projection cartographique permet de projeter des données images définies sur une sphère, sur un plan. Il faut savoir que c’est la projection usuelle utilisée pour générer des images de « mini‐planètes » à partir de panoramas équirectangulaires, comme celui illustré sur la figure ci‐dessous.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_stereographic0.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f73746572656f67726170686963302e706e67/gmic_stereographic0.png" alt="Panorama équirectangulaire" title="Source : http://gmic.eu/gmic234/thumb/gmic_stereographic0.png"></a> <em>Fig. 3.1 : Exemple de panorama équirectangulaire (réalisé par <a href="https://www.flickr.com/photos/gadl">Alexandre Duret‐Lutz</a>).</em></p>
<p>Si, sur ce panorama, on lance le greffon <em>G’MIC</em> et que l’on sélectionne le filtre « <em>Stereographic projection</em> », on obtient :<br>
<a href="http://gmic.eu/gmic234/fullsize/gmic_stereographic.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f73746572656f677261706869632e706e67/gmic_stereographic.png" alt="Filtre « Stereographic projection »" title="Source : http://gmic.eu/gmic234/thumb/gmic_stereographic.png"></a> <em>Fig. 3.2 : Le filtre « Stereographic projection » de G’MIC en action dans le greffon pour GIMP ou Krita.</em></p>
<p>Le filtre permet des réglages précis du centre de projection, de l’angle de rotation et du rayon de la sphère considérée, tout ça de manière interactive directement sur la fenêtre de prévisualisation (nous y reviendrons par la suite). En quelques clics, et après application du filtre, nous obtenons la « mini‐planète » désirée :</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_stereographic3.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f73746572656f67726170686963332e706e67/gmic_stereographic3.png" alt="Mini‐planète" title="Source : http://gmic.eu/gmic234/thumb/gmic_stereographic3.png"></a> <em>Fig. 3.3 : « Mini‐planète » obtenue après projection stéréographique.</em></p>
<p>Il est d’ailleurs cocasse de constater qu’en inversant simplement l’axe vertical des images, on transforme une « mini‐planète » en un « maxi‐tunnel » !</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_tunnel.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f74756e6e656c2e706e67/gmic_tunnel.png" alt="Maxi‐tunnel" title="Source : http://gmic.eu/gmic234/thumb/gmic_tunnel.png"></a> <em>Fig. 3.4 : « Maxi‐tunnel » obtenu par inversion de l’axe vertical puis projection stéréographique.</em></p>
<p>Là encore, nous avons réalisé <a href="https://www.youtube.com/watch?v=5BYV1lwuF3w">cette petite vidéo</a> qui montre ce filtre en conditions réelles d’utilisation. À noter que <em>G’MIC</em> possédait déjà un filtre similaire (dénommé « <em>Sphere</em> »), qui pouvait être utilisé pour la création de « mini‐planètes », mais avec un type de projection moins bien adapté que la projection stéréographique, qu’il est maintenant possible d’utiliser.</p>
<h2 id="toc-4-toujours-plus-de-possibilités-pour-la-manipulation-des-couleurs">4. Toujours plus de possibilités pour la manipulation des couleurs</h2>
<p>Triturer les couleurs des images est une occupation récurrente chez les photographes et les illustrateurs, et <em>G’MIC</em> possèdait déjà plusieurs dizaines de filtres destinés à cette unique activité, regroupés dans une catégorie dédiée (à savoir « <em>Colors/</em> », pour faire original !). Cette catégorie s’étoffe encore, avec deux nouveaux filtres fraîchement apparus.</p>
<h3 id="toc-41-le-filtre-clut-from-afterbefore-layers">4.1. Le filtre « CLUT from after‐before layers »</h3>
<p>Le filtre « **CLUT from after‐before layers_ » cherche à modéliser la transformation colorimétrique qui a été effectuée entre deux images (que l’on possède). Supposons par exemple que nous ayons la paire d’images suivante :<br>
<a href="http://gmic.eu/gmic234/fullsize/wc_trophy01.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f77635f74726f70687930312e706e67/wc_trophy01.png" alt="Paire d’images" title="Source : http://gmic.eu/gmic234/thumb/wc_trophy01.png"></a> <em>Fig. 4.1 : Paire d’images où une transformation colorimétrique inconnue a été appliquée sur l’image du haut, pour obtenir celle du bas.</em></p>
<p><strong>Problème</strong> : On ne se rappelle plus du tout comment on a fait pour passer de l’image originale à l’image modifiée, mais on voudrait absolument ré‐appliquer le même processus sur une autre image. Eh bien, plus de soucis, appelons <em>G’MIC</em> à la rescousse ! Le filtre en question va chercher à modéliser au mieux la modification des couleurs sous la forme d’une <a href="http://www.quelsolaar.com/technology/clut.html"><em>HaldCLUT</em></a>, qui se trouve être une façon classique de représenter une transformation colorimétrique quelconque.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_clut_from_ab.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f636c75745f66726f6d5f61622e706e67/gmic_clut_from_ab.png" alt="Filtre « CLUT from after‐before layers »" title="Source : http://gmic.eu/gmic234/thumb/gmic_clut_from_ab.png"></a> <em>Fig. 4.2 : Le filtre modélise la transformation colorimétrique entre deux images sous forme d’une HaldCLUT.</em></p>
<p>La <em>HaldCLUT</em> générée par le filtre va pouvoir être sauvée et ré‐appliquée sur d’autres images, avec la propriété désirée que l’application de cette <em>HaldCLUT</em> sur l’image originale redonne bien l’image modèle cible dont on s’est servi pour que le filtre apprenne la transformation couleur produite.<br>
À partir de là, nous sommes capables d’appliquer une modification de couleurs équivalente, sur n’importe quelle autre image :<br>
<a href="http://gmic.eu/gmic234/fullsize/pink_car_all.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f70696e6b5f6361725f616c6c2e706e67/pink_car_all.png" alt="HaldCLUT ré‐appliquée sur une autre image" title="Source : http://gmic.eu/gmic234/thumb/pink_car_all.png"></a> <em>Fig. 4.3 : La transformation colorimétrique estimée sous forme de HaldCLUT est ré‐appliquée sur une autre image.</em></p>
<p>Ce filtre permet donc <em>in fine</em> de créer des <em>HaldCLUT</em> « par l’exemple », et pourrait donc intéresser de nombreux photographes (notamment ceux qui diffusent des compilations de fichiers <em>HaldCLUT</em>, <a href="https://rawpedia.rawtherapee.com/Film_Simulation">librement</a> ou non !).</p>
<h3 id="toc-42-filtre-mixerpca">4.2. Filtre « Mixer [PCA] »</h3>
<p>Un deuxième filtre de manipulation de couleurs, nommé « <em>Mixer [PCA]</em> » a été aussi récemment intégré à <em>G’MIC</em>. Il agit comme un classique <a href="https://docs.gimp.org/fr/plug-in-colors-channel-mixer.html">mixeur de canaux couleurs</a>, mais plutôt que de travailler dans un espace couleur prédéfini (comme sRGB, HSV, Lab…), il agit sur l’espace couleur « naturel » de l’image d’entrée, obtenue par <a href="https://fr.wikipedia.org/wiki/Analyse_en_composantes_principales">analyse en composante principale</a> (<em>ACP</em>) de ses couleurs RVB. Ainsi à chaque image sera associé un espace couleur différent.<br>
Par exemple, si nous prenons l’image « lion » ci‐dessous, et que l’on regarde la distribution de ses couleurs dans le cube RVB (image de droite), on s’aperçoit que l’axe principal de variation des couleurs est défini par une droite allant du orange foncé au beige clair (axe symbolisé par la flèche rouge sur la figure).</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_mix_pca2.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f6d69785f706361322e706e67/gmic_mix_pca2.png" alt="gmic_mix_pca2" title="Source : http://gmic.eu/gmic234/thumb/gmic_mix_pca2.png"></a> <em>Fig. 4.4 : Distribution des couleurs de l’image « lion » dans le cube RVB, et axes principaux associés (colorisés en rouge, vert et bleu).</em></p>
<p>L’axe de variation secondaire quant à lui (flèche verte) va du bleu jusqu’à l’orange, et l’axe tertiaire (flèche bleue) du vert au rose. Ce sont ces axes de variations (plutôt que les axes RVB) qui vont donc définir la base de couleurs utilisée dans ce filtre de mixage de canaux.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_mix_pca.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f6d69785f7063612e706e67/gmic_mix_pca.png" alt="Filtre « Mixer [PCA] »" title="Source : http://gmic.eu/gmic234/thumb/gmic_mix_pca.png"></a> <em>Fig. 4.5 : Le filtre « Mixer [PCA] » est un mixeur de canaux agissant sur les axes de variations de couleurs « naturels » de l’image.</em></p>
<p>Il serait malhonnête d’affirmer qu’il soit toujours meilleur de considérer la base couleur obtenue par ACP pour le mixage des canaux, et ce nouveau filtre n’a évidemment pas vocation à être le mixeur « ultime » qui remplacerait tous les autres. Il a simplement le mérite d’exister et de proposer une alternative aux outils usuels de mixage de canaux couleur, alternative dont les résultats se sont avérés effectivement intéressants sur plusieurs images de tests utilisées lors du développement de ce filtre. Cela ne coûte rien d’essayer en tout cas…</p>
<h2 id="toc-5--mélimélo-de-filtres">5. Méli‐mélo de filtres</h2>
<p>Cette section présente pêle‐mêle quelques autres nouveaux filtres et améliorations diverses qui ont été intégrés récemment à <em>G’MIC</em> et qui méritent qu’on les mentionne, sans s’y attarder outre mesure.</p>
<h3 id="toc-51-le-filtre-localprocessing">5.1. Le filtre « Local processing »</h3>
<p>Ce filtre permet d’appliquer un processus de normalisation ou d’égalisation de couleurs sur des voisinages locaux d’image (avec éventuellement du recouvrement entre voisinages). C’est un filtre supplémentaire permettant de faire ressortir des détails dans des photographies initialement surexposées ou sous‐exposées, mais qui peut parfois créer des « halos » disgracieux.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_local_processing.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f6c6f63616c5f70726f63657373696e672e706e67/gmic_local_processing.png" alt="Filtre « Local processing »" title="Source : http://gmic.eu/gmic234/thumb/gmic_local_processing.png"></a> <em>Fig. 5.1 : Le filtre « Local processing » permet de rehausser les détails dans des photographies sur ou sous‐exposées.</em></p>
<h3 id="toc-52-le-filtre-blendstandard">5.2. Le filtre « Blend [standard] »</h3>
<p>Vous trouvez que vous n’avez pas assez de modes de fusion de calques à votre disposition dans GIMP ou Krita ? Vous rêvez de pouvoir définir votre propre formule de fusion ? Alors le filtre « <em>Blend [standard]</em> » est fait pour vous ! Ce filtre, déjà existant auparavant, s’enrichit de la fonctionnalité « <em>Custom formula</em> » qui permet à l’utilisateur de spécifier sa propre <a href="http://www.pegtop.net/delphi/articles/blendmodes/">formule mathématique</a> de fusion de calques. Toutes les fantaisies deviennent possibles !</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_blend_custom.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f626c656e645f637573746f6d2e706e67/gmic_blend_custom.png" alt="Filtre « Blend (standard) »" title="Source : http://gmic.eu/gmic234/thumb/gmic_blend_custom.png"></a> <em>Fig. 5.2 : Le filtre « Blend [standard] » permet maintenant de définir ses propres formules mathématiques de fusion de calques.</em></p>
<h3 id="toc-53-le-filtre-sketch">5.3. Le filtre « Sketch »</h3>
<p>Signalons aussi la ré‐implémentation complète du sympathique filtre « <em>Sketch</em> », qui existait depuis plusieurs années, mais qui pouvait s’avérer un peu lent sur de grosses images. La nouvelle implémentation est beaucoup plus rapide, tirant notamment parti du calcul multicœur quand c’est possible.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_sketch.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f736b657463682e706e67/gmic_sketch.png" alt="Filtre » Sketch »" title="Source : http://gmic.eu/gmic234/thumb/gmic_sketch.png"></a> <em>Fig. 5.3 : Le filtre « Sketch » a été réimplémenté et exploite maintenant tous les cœurs de calcul disponibles.</em></p>
<h3 id="toc-54-le-filtre-mandelbrot---julia-sets">5.4. Le filtre « Mandelbrot - Julia sets »</h3>
<p>Un gros travail de ré‐implémentation a été également réalisé sur le filtre « <em>Mandelbrot - Julia sets</em> », puisque l’interface de navigation a été entièrement repensée, rendant l’exploration de l’<a href="https://fr.wikipedia.org/wiki/Ensemble_de_Mandelbrot">ensemble de Mandelbrot</a> bien plus confortable (comme l’illustre cette<a href="https://youtu.be/wZv3BQF00gA">vidéo</a>). De nouvelle options pour le choix des couleurs sont également apparues.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_mandelbrot.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f6d616e64656c62726f742e706e67/gmic_mandelbrot.png" alt="Filtre « Mandelbrot - Julia sets »" title="Source : http://gmic.eu/gmic234/thumb/gmic_mandelbrot.png"></a> <em>Fig. 5.4 : Le filtre « Mandelbrot - Julia sets » et sa nouvelle interface de navigation dans l’espace complexe.</em></p>
<h3 id="toc-55-le-filtre-polygonizedelaunay">5.5. Le filtre « Polygonize [Delaunay] »</h3>
<p>Le filtre « <em>Polygonize [Delaunay]</em> » qui génère des rendus polygonisées d’images couleurs se dote d’un nouveau mode de rendu, utilisant des couleurs interpolées linéairement dans les <a href="https://fr.wikipedia.org/wiki/Triangulation_de_Delaunay">triangles de Delaunay</a> produits.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/delaunay_all.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f64656c61756e61795f616c6c2e706e67/delaunay_all.png" alt="Filtre « Polygonize (Delaunay) »" title="Source : http://gmic.eu/gmic234/thumb/delaunay_all.png"></a> <em>Fig. 5.5 : Les différents modes de rendu du filtre « Polygonize [Delaunay] ».</em></p>
<h2 id="toc-6-autres-faits-marquants-du-projet">6. Autres faits marquants du projet</h2>
<h3 id="toc-61-améliorations-de-linterface-du-greffon">6.1. Améliorations de l’interface du greffon</h3>
<p>Bien sûr, les nouveautés dans <em>G’MIC</em> ne concernent pas seulement les filtres de traitement d’images proprement dits ! Un travail considérable a été par exemple réalisé sur l’interface graphique du greffon <em>G’MIC-Qt</em>.</p>
<p>Les filtres du greffon ont désormais la possibilité de spécifier un nouveau type de paramètre <code>point()</code>, qui se matérialise sous la forme d’un petit disque coloré que l’on peut manipuler directement à la souris au‐dessus de la fenêtre de prévisualisation. En pratique, cela permet de rendre cette fenêtre de prévisualisation interactive, et ce n’est pas rien ! De nombreux filtres utilisent maintenant cette capacité, ce qui les rend beaucoup plus agréables et intuitifs à utiliser (voir <a href="https://www.youtube.com/watch?v=iQ0ZEmsDErY">cette vidéo</a> pour quelques exemples). L’animation ci‐dessous montre par exemple comment ces points interactifs sont utilisés dans le nouveau filtre « <em>Stereographic projection</em> », que nous avons décrit précédemment.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_point_anim.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f706f696e745f616e696d2e676966/gmic_point_anim.gif" alt="Fenêtre de prévisualisation interactive" title="Source : http://gmic.eu/gmic234/thumb/gmic_point_anim.gif"></a> <em>Fig. 6.1 : La fenêtre de prévisualisation du greffon G’MIC-Qt s’enrichit de nouvelles possibilités d’interactions pour l’utilisateur.</em></p>
<p>L’introduction de cette fonctionnalité a de ce fait permis d’améliorer les modes de division de prévisualisation (« <em>split preview</em> »), utilisés par un grand nombre de filtres pour afficher côte à côte les images « avant / après » lors de la prévisualisation d’un filtre dans le greffon. Il est maintenant possible de déplacer la zone frontière des images « avant / après », comme illustré par l’animation ci‐dessous. Deux nouveaux modes de division, en damier, ont d’ailleurs été ajoutés à cette occasion.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/gmic_preview_anim.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f707265766965775f616e696d2e676966/gmic_preview_anim.gif" alt="Division de prévisualisation interactive" title="Source : http://gmic.eu/gmic234/thumb/gmic_preview_anim.gif"></a> <em>Fig. 6.2 : Les modes de division de la prévisualisation possèdent maintenant une frontière « avant / après » déplaçable.</em></p>
<p>Plein d’autres petites améliorations ont été faites dans le code du greffon : une prise en charge du dernier GIMP 2.10, de la version Qt 5.11, une meilleure gestion des messages d’erreurs s’affichant dans la fenêtre de prévisualisation, un <em>design</em> général plus épuré, et tout un tas de petites choses par forcément visibles mais participant néanmoins au confort de l’utilisateur (un système de cache d’images pour la fenêtre de prévisualisation par exemple). Bref, que du bon !</p>
<h3 id="toc-62-perfectionnement-du-cœur-du-logiciel">6.2. Perfectionnement du cœur du logiciel</h3>
<p>De nouvelles améliorations ont également été apportées dans les couches internes de <em>G’MIC</em>.</p>
<p>La « bibliothèque standard » du langage de script <em>G’MIC</em> évolue, avec l’apparition de nouvelles commandes pour le calcul des fonctions hyperboliques inverses (<code>acosh</code>, <code>asinh</code> et <code>atanh</code>), ainsi que de la commande <code>tsp</code> (<em><strong>t</strong>ravelling <strong>s</strong>alesman <strong>p</strong>roblem</em>) qui estime une solution « acceptable » au problème bien connu du <a href="https://fr.wikipedia.org/wiki/Probl%C3%A8me_du_voyageur_de_commerce">voyageur de commerce</a>, et ceci pour un nuage de points de dimension et de taille quelconque.</p>
<p><a href="http://gmic.eu/gmic234/fullsize/tsp_lena.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f7473705f6c656e612e706e67/tsp_lena.png" alt="Voyageur de commerce en 2D" title="Source : http://gmic.eu/gmic234/thumb/tsp_lena.png"></a> <em>Fig. 6.3 : Estimation du circuit le plus court entre plusieurs centaines de points 2D, par la commande <code>tsp</code> de G’MIC.</em></p>
<p><a href="http://gmic.eu/gmic234/fullsize/tsp3d.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f74737033642e676966/tsp3d.gif" alt="Voyageur de commerce en 3D" title="Source : http://gmic.eu/gmic234/thumb/tsp3d.gif"></a> <em>Fig. 6.4 : Estimation du circuit le plus court entre plusieurs couleurs du cube RVB (en 3D donc), grâce à la commande <code>tsp</code> de G’MIC.</em></p>
<p>L’interface de démonstration, qui se lance lorsque l’on invoque <code>gmic</code> sans arguments à partir de la ligne de commande, a également été refaite en repartant de zéro.<br>
<a href="http://gmic.eu/gmic234/fullsize/gmic_demo.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f64656d6f2e676966/gmic_demo.gif" alt="Interface de démonstration" title="Source : http://gmic.eu/gmic234/thumb/gmic_demo.gif"></a> <em>Fig. 6.5 : La nouvelle interface de démonstration de <code>gmic</code>, l’outil en ligne de commande de G’MIC.</em></p>
<p>Le compilateur <em>JIT</em> d’expressions mathématiques intégré n’est pas non plus en reste et s’enrichit de nouvelles fonctions permettant de tracer des polygones (fonction <code>polygon()</code>) ou des ellipses (fonction <code>ellipse()</code>) dans des images. Ces expressions mathématiques peuvent en réalité définir de véritables petits programmes (possédant des variables locales, des fonctions utilisateur et des structures de contrôle). On peut ainsi générer des images synthétiques facilement, avec de simples lignes de commande, comme le montrent les deux exemples ci‐dessous.</p>
<pre><code class="sh">$ gmic <span class="m">400</span>,400,1,3 <span class="nb">eval</span> <span class="s2">"for (k = 0, k<300, ++k, polygon(3,u([vector10(0),[w,h,w,h,w,h,0.5,255,255,255])))"</span></code></pre>
<p><strong>Résultat</strong> :<br>
<a href="http://gmic.eu/gmic234/fullsize/gmic_polygon.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f706f6c79676f6e2e706e67/gmic_polygon.png" alt="Fonction « polygon() »" title="Source : http://gmic.eu/gmic234/thumb/gmic_polygon.png"></a> <em>Fig. 6.6 : Utilisation de la nouvelle fonction <code>polygon()</code> du compilateur à la volée de G’MIC, pour générer une image synthétique aléatoire.</em></p>
<pre><code class="sh">$ gmic <span class="m">400</span>,400,1,3 <span class="nb">eval</span> <span class="s2">"for (k=0, k<20, ++k, ellipse(w/2,h/2,w/2,w/8,k*360/20,0.1,255))"</span></code></pre>
<p><strong>Résultat :</strong><br>
<a href="http://gmic.eu/gmic234/fullsize/gmic_ellipse.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f656c6c697073652e706e67/gmic_ellipse.png" alt="Fonction « ellipse() »" title="Source : http://gmic.eu/gmic234/thumb/gmic_ellipse.png"></a> <em>Fig. 6.7 : Utilisation de la nouvelle fonction <code>ellipse()</code> du compilateur à la volée de G’MIC, pour générer une image synthétique florale.</em></p>
<p>Notons également une meilleure gestion des valeurs <a href="https://fr.wikipedia.org/wiki/NaN"><code>NaN</code></a> lors des calculs réalisés par le cœur du logiciel, ce qui permet à <em>G’MIC</em> d’avoir un comportement cohérent même lorsqu’on le compile avec l’optimisation <code>-ffast-math</code>. Ainsi, <em>G’MIC</em> est maintenant compilable sans soucis avec le niveau d’optimisation maximal <code>-Ofast</code> du compilateur <em>g++</em>, alors que nous étions restreints dans le passé à utiliser « seulement » <code>-O3</code>. L’amélioration en vitesse de calcul se fait clairement ressentir pour certains filtres !</p>
<h3 id="toc-63-supports-de-diffusion">6.3. Supports de diffusion</h3>
<p>Pas mal de changements ont aussi eu lieu sur les supports de diffusion utilisés par le projet.</p>
<p>Tout d’abord, les pages Web du projet (qui en passant utilisent maintenant des connexions sécurisées HTTPS par défaut) s’enrichissent d’une nouvelle <a href="http://gmic.eu/gallery/">galerie d’images</a>. Cette galerie montre à la fois des résultats d’application de différents opérateurs de traitement d’images disponibles dans <em>G’MIC</em>, mais aussi la façon de les reproduire (à partir de la ligne de commande). Notons d’ailleurs que ces pages de galerie sont générées automatiquement par un script <em>G’MIC</em> dédié à cette tâche, ce qui nous assure que la syntaxe donnée pour chaque exemple est exacte.</p>
<p><a href="https://gmic.eu/gallery"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633233342f7468756d622f676d69635f67616c6c6572792e706e67/gmic_gallery.png" alt="Galerie d’images" title="Source : http://gmic.eu/gmic234/thumb/gmic_gallery.png"></a> <em>Fig. 6.8 : La nouvelle page de galerie d’images du site Web de G‘MIC.</em></p>
<p>Cette galerie est découpée en plusieurs sections, suivant le type de traitements effectué (<em>Artistique, Noir & blanc, Déformation, Filtrage, etc.</em>). La dernière section « <a href="https://gmic.eu/gallery/codesamples.shtml"><em>Code sample</em> </a> » est personnellement celle que je trouve la plus amusante, puisqu’elle présente de petites séquences d’images (sous forme de GIF animés qui bouclent) entièrement générées par des scripts courts en langage <em>G’MIC</em>. Une façon un tout petit peu exotique d’utiliser <em>G’MIC</em>, mais qui montre son potentiel pour l’<a href="https://fr.wikipedia.org/wiki/Art_g%C3%A9n%C3%A9ratif">art génératif</a>.</p>
<table>
<thead>
<tr>
<th><a href="https://gmic.eu/gallery/codesamples_full_3.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f67616c6c6572792f636f646573616d706c65735f7468756d625f332e676966/codesamples_thumb_3.gif" alt="Code sample1" title="Source : https://gmic.eu/gallery/codesamples_thumb_3.gif"></a></th>
<th> </th>
<th><a href="https://gmic.eu/gallery/codesamples_full_4.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f676d69632e65752f67616c6c6572792f636f646573616d706c65735f7468756d625f342e676966/codesamples_thumb_4.gif" alt="Code sample2" title="Source : https://gmic.eu/gallery/codesamples_thumb_4.gif"></a></th>
</tr>
</thead>
<tbody>
<tr>
<td>Exemple 1 </td>
<td></td>
<td>Exemple 2</td>
</tr>
</tbody>
</table>
<p><em>Fig. 6.9 : Deux exemples d’animations GIF générées par des scripts en langage G’MIC, visibles dans la galerie d’images.</em></p>
<p>Et puis, nous avons déménagé le dépôt source <em>git</em> principal du projet vers <a href="https://framagit.org/dtschump/gmic">Framagit</a>, en gardant néanmoins un miroir synchronisé sur GitHub au même emplacement qu’auparavant (pour profiter en particulier du fait que de nombreux développeurs sont présents sur GitHub et peuvent plus facilement créer un dépôt divergent (<em>fork</em>) et nous faire des rapports de bogues sur cette plate‐forme).</p>
<h2 id="toc-7-conclusions-et-perspectives">7. Conclusions et perspectives</h2>
<p>Voilà ! Notre tour des nouveautés (des six derniers mois d’activité) du projet <em>G’MIC</em> s’achève enfin.</p>
<p>Nous sommes heureux d’avoir pu vivre dix belles années d’émotions informatiques avec la naissance et l’évolution de ce projet libre, et de pouvoir partager à notre manière, avec tous les utilisateurs, des techniques de traitements d’images avancées. On espère surtout repartir de plus belle pour de nombreuses années ! Les soutiens se font de plus en plus présents autour de nous, donc on se dit que ça doit pouvoir se faire (à ce propos, si vous voulez contribuer au projet de quelque manière que ce soit, vous êtes les bienvenus !).<br>
Notons que l’année prochaine, on fêtera également les vingt ans d’existence de <a href="http://cimg.eu"><em>CImg</em></a>, la bibliothèque <em>C++</em> de traitement d’images qui est directement à l’origine du projet <em>G’MIC</em> (et qui, elle, est née en novembre 1999, ça ne nous rajeunit pas ma bonne dame…). Preuve s’il en est que l’intérêt du logiciel libre, c’est qu’il s’inscrit dans la durée !</p>
<p>Et en attendant la prochaine dépêche sur <em>G’MIC</em>, n’hésitez pas à tester ce logiciel, à jouer et triturer vos images de la manière la plus libre et créative possible !</p>
</div><div><a href="https://linuxfr.org/news/g-mic-2-3-4-traiter-ses-images-en-se-disant-deja-10-ans.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/115090/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/g-mic-2-3-4-traiter-ses-images-en-se-disant-deja-10-ans#comments">ouvrir dans le navigateur</a>
</p>
David TschumperléDavy DefaudBenoît SibaudXavier Teyssierhttps://linuxfr.org/nodes/115090/comments.atomtag:linuxfr.org,2005:Bookmark/272018-03-26T18:59:06+02:002018-03-26T18:59:06+02:00G'MIC : Appliquer des tas de filtres en ligne de commande ! (Galerie)<a href="http://gmic.eu/gallery">http://gmic.eu/gallery</a> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/114075/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/dtschump/liens/g-mic-appliquer-des-tas-de-filtres-en-ligne-de-commande-galerie#comments">ouvrir dans le navigateur</a>
</p>
David Tschumperléhttps://linuxfr.org/nodes/114075/comments.atomtag:linuxfr.org,2005:News/384322018-02-16T20:41:37+01:002018-02-18T02:56:37+01:00G’MIC : 2.2, v’là les filtres !Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p><a href="https://www.greyc.fr/?page_id=443&lang=en">L’équipe IMAGE</a> du laboratoire <a href="https://www.greyc.fr">GREYC</a> (UMR <a href="http://www.cnrs.fr">CNRS</a> 6072), situé à Caen, est ravie de vous annoncer la sortie d’une nouvelle version (numérotée <strong>2.2</strong>) de <a href="http://gmic.eu"><em>G’MIC</em></a>, son cadriciel libre, générique et extensible pour le <a href="https://fr.wikipedia.org/wiki/Traitement_d%27images">traitement des images</a>.<br>
Comme <a href="//linuxfr.org/redirect/101391">à notre habitude</a>, nous profitons de cette occasion pour faire un point sur les dernières fonctionnalités notables ajoutées depuis la version majeure précédente (<strong>2.0</strong>), sortie qui avait fait l’objet d’une <a href="//linuxfr.org/news/g-mic-2-0-un-second-souffle-pour-le-traitement-d-images-libre">dépêche</a> sur <em>LinuxFr.org</em>, en juin 2017.</p></div><ul><li>lien nᵒ 1 : <a title="http://gmic.eu" hreflang="en" href="https://linuxfr.org/redirect/101388">Le projet G’MIC</a></li><li>lien nᵒ 2 : <a title="https://twitter.com/gmic_ip" hreflang="en" href="https://linuxfr.org/redirect/101389">Fil Twitter</a></li><li>lien nᵒ 3 : <a title="https://gmicol.greyc.fr" hreflang="fr" href="https://linuxfr.org/redirect/101390">Le Web service G’MIC Online</a></li><li>lien nᵒ 4 : <a title="http://linuxfr.org/tags/gmic/public" hreflang="fr" href="https://linuxfr.org/redirect/101391">Série d’articles G’MIC sur LinuxFr.org</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#1-contexte-et-%C3%A9volutions-r%C3%A9centes-du-projet">1. Contexte et évolutions récentes du projet</a><ul>
<li>
<a href="#11-portage-du-greffon-gmic-qt-vers-krita">1.1. Portage du greffon G’MIC-Qt vers </a><a href="http://www.krita.org">Krita</a>
</li>
<li><a href="#12-une-licence-cecill-c-plus-permissive">1.2. Une licence CeCILL-C, plus permissive</a></li>
</ul>
</li>
<li>
<a href="#2-collaboration-f%C3%A9conde-avec-david-revoy">2. Collaboration féconde avec David Revoy</a><ul>
<li><a href="#21-perfectionnement-du-filtre-de-colorisation-de-dessins-au-trait">2.1. Perfectionnement du filtre de colorisation de dessins au trait</a></li>
<li><a href="#22-%C3%89galiseur-dans-les-espaces-colorim%C3%A9triques-hsi-hsl-et-hsv">2.2. Égaliseur dans les espaces colorimétriques HSI, HSL et HSV</a></li>
<li><a href="#23-d%C3%A9formations-anguleuses">2.3. Déformations anguleuses</a></li>
</ul>
</li>
<li>
<a href="#3-toujours-plus-de-filtres">3. Toujours plus de filtres…</a><ul>
<li><a href="#31-faire-ressortir-les-d%C3%A9tails-sans-cr%C3%A9er-de-halos">3.1. Faire ressortir les détails sans créer de « halos »</a></li>
<li><a href="#32-des-d%C3%A9formations-en-tout-genre">3.2. Des déformations en tout genre</a></li>
<li><a href="#33-abstractions-artistiques">3.3. Abstractions artistiques</a></li>
<li><a href="#34-y-en-a-un-peu-plus-je-vous-le-mets-quand-m%C3%AAme">3.4. « Y en a un peu plus, je vous le mets quand même ? »</a></li>
</ul>
</li>
<li>
<a href="#4-autres-am%C3%A9liorations-notables">4. Autres améliorations notables</a><ul>
<li><a href="#41-am%C3%A9lioration-de-linterface-du-greffon-gmic-qt">4.1. Amélioration de l’interface du greffon G’MIC-Qt</a></li>
<li><a href="#42-am%C3%A9liorations-apport%C3%A9es-au-c%C5%93ur-de-calcul">4.2. Améliorations apportées au cœur de calcul</a></li>
<li><a href="#43-nouveau-design-pour-gmiconline">4.3. Nouveau design pour <em>G’MIC Online</em></a></li>
</ul>
</li>
<li><a href="#5-conclusion-et-perspectives">5. Conclusion et perspectives</a></li>
</ul><p><em>N. D. A. : Cliquez sur les images de la dépêche pour en visualiser des versions à meilleure résolution.</em></p>
<h2 id="1-contexte-et-évolutions-récentes-du-projet">1. Contexte et évolutions récentes du projet</h2>
<p><em>G’MIC</em> est un projet libre développé depuis août 2008 (distribué sous licence <a href="http://www.cecill.info/">CeCILL</a>), dans l’équipe <a href="https://www.greyc.fr/image">IMAGE</a> du laboratoire <a href="https://www.greyc.fr/">GREYC</a>, laboratoire de recherche public français localisé à Caen et chapeauté par trois tutelles : le <a href="http://www.cnrs.fr">CNRS</a>, l’<a href="http://www.unicaen.fr/">Université de Caen</a>, et l’<a href="http://www.ensicaen.fr/">ENSICAEN</a>. Cette équipe est composée de chercheurs et d’enseignants‐chercheurs spécialisés dans les domaines de l’algorithmique et des mathématiques du traitement d’images.<br><a href="http://gmic.eu/gmic220/fullsize/logo_gmic.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f6c6f676f5f676d69632e706e67/logo_gmic.png" alt="G’MIC logo" title="Source : http://gmic.eu/gmic220/thumbs/logo_gmic.png"></a> <em>Fig. 1.1 : Logo du projet G’MIC, cadriciel libre pour le traitement d’images, et sa mignonne petite mascotte « Gmicky » (élaborée par <a href="http://www.davidrevoy.com/">David Revoy</a>).</em></p>
<p><em>G’MIC</em> est multi‐plate‐forme (GNU/Linux, macOS, Windows…) et fournit un ensemble d’interfaces utilisateur variées pour la manipulation de données images <em>génériques</em>, à savoir des images ou des séquences d’images hyperspectrales 2D ou 3D à valeurs flottantes (ce qui inclut de fait les images couleur « classiques »). Plus de <a href="http://gmic.eu/reference.shtml">950 fonctions</a> différentes de traitement d’images sont déjà disponibles dans ce cadriciel, nombre extensible à l’infini puisque les utilisateurs ont la possibilité de développer et d’ajouter leurs propres fonctionnalités via l’utilisation du langage de script intégré, spécifiquement dédié à la réalisation de <em>pipelines</em> de traitement d’images.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_220.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f3232302e706e67/gmic_220.png" alt="Greffon G’MIC pour GIMP" title="Source : http://gmic.eu/gmic220/thumbs/gmic_220.png"></a> <em>Fig.1.2 : Le greffon</em> G’MIC-Qt <em>pour GIMP, aujourd’hui l’interface utilisateur de G’MIC la plus populaire.</em></p>
<p>Deux événements d’importance dans la vie du projet ont eu lieu, depuis la sortie de la dernière version majeure :</p>
<h3 id="11-portage-du-greffon-gmic-qt-vers-krita">1.1. Portage du greffon G’MIC-Qt vers <a href="http://www.krita.org">Krita</a>
</h3>
<p>Lors de la sortie de la version 2.0, nous étions heureux d’annoncer une refonte complète (en <a href="https://fr.wikipedia.org/wiki/Qt"><em>Qt</em></a>) du code du greffon <em>G’MIC</em> pour <a href="http://www.gimp.org">GIMP</a>, de façon à disposer d’un greffon <em>G’MIC-Qt</em> théoriquement « universel », c’est‐à‐dire déclinable pour fonctionner sur d’autres logiciels hôtes que GIMP. Eh bien, une étape supplémentaire a été franchie, puisque ce greffon a été effectivement étendu pour s’intégrer dans le logiciel libre de peinture numérique <a href="http://www.krita.org">Krita</a>.<br>
Ceci a été rendu possible grâce au travail de développement de <a href="https://twitter.com/boudewijnrempt">Boudewijn Rempt</a> (mainteneur principal de Krita) et de <a href="https://foureys.users.greyc.fr/">Sébastien Fourey</a> (développeur du greffon). Le greffon <em>G’MIC-Qt</em> est aujourd’hui disponible pour les versions 3.3+ de Krita et, même s’il n’implémente pas encore toutes les fonctionnalités d’entrées‐sorties de son équivalent pour GIMP, les retours d’utilisation que nous avons eu sont plutôt positifs.<br>
Ce nouveau portage remplace <em>de facto</em> l’ancien greffon <em>G’MIC</em> pour Krita qui n’était plus maintenu depuis quelque temps. La bonne nouvelle pour les utilisateurs et les développeurs de Krita, c’est qu’ils disposent maintenant d’un greffon dont le code est commun avec celui fonctionnant sous GIMP, et dont nous allons pouvoir assurer la plus grosse partie de maintenance et de mise à jour.<br>
À noter que ce portage a nécessité principalement l’écriture d’un fichier source <a href="https://github.com/c-koi/gmic-qt/blob/master/src/Host/Krita/host_krita.cpp"><code>host_krita.cpp</code></a> (en <em>C++</em>) permettant la communication entre le logiciel hôte et le greffon, et on peut raisonnablement penser qu’un effort similaire permettrait à d’autres logiciels de disposer eux aussi de leur propre version du greffon <em>G’MIC</em>, et des quelques 500 filtres de traitement d’images livrés avec ! Avis aux développeurs…<br><a href="http://gmic.eu/gmic220/fullsize/gmic_krita.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f6b726974612e706e67/gmic_krita.png" alt="G’MIC pour Krita" title="Source : http://gmic.eu/gmic220/thumbs/gmic_krita.png"></a> <em>Fig. 1.3 : Aperçu du greffon G’MIC-Qt tournant sous Krita.</em></p>
<h3 id="12-une-licence-cecill-c-plus-permissive">1.2. Une licence CeCILL-C, plus permissive</h3>
<p>Seconde nouvelle importante, la licence d’utilisation <a href="http://www.cecill.info/licences/Licence_CeCILL-C_V1-fr.html"><em>CeCILL-C</em></a> (licence dans l’esprit de la <a href="https://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_limit%C3%A9e_GNU"><em>LGPL</em></a>) est maintenant proposée pour certains composants du cadriciel <em>G’MIC</em>. Cette licence est plus permissive que la licence <a href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-fr.html"><em>CeCILL</em></a> (qui, elle, est compatible <a href="https://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU"><em>GPL</em></a>) qui s’appliquait jusque ici, et plus adaptée à la distribution de bibliothèques logicielles. Cette extension de licence (double licence) concerne justement le cœur de calcul de <em>G’MIC</em> via sa bibliothèque <em>C++</em> <em>libgmic</em>. Cette nouvelle licence autorise l’intégration des fonctionnalités de la <em>libgmic</em> (donc, de tous ses algorithmes de traitement d’images) dans des logiciels non licenciés en GPL/CeCILL (incluant les logiciels à sources fermées).<br>
Le code source du greffon <em>G’MIC-Qt</em>, quant à lui, reste distribué sous licence unique CeCILL.</p>
<h2 id="2-collaboration-féconde-avec-david-revoy">2. Collaboration féconde avec David Revoy</h2>
<p>Si vous avez suivi nos <a href="//linuxfr.org/tags/gmic/public">épisodes précédents</a>, vous avez peut‐être remarqué que nous citons très souvent l’artiste illustrateur <a href="http://www.davidrevoy.com">David Revoy</a> pour ses contributions multiples à <em>G’MIC</em> : dessin de la mascotte, idées de filtres, tutoriels écrits ou vidéo, tests en tout genre, etc. Plus généralement, David est un contributeur important au monde de l’art numérique libre, autant avec la bande dessinée <a href="https://www.peppercarrot.com/"><em>Pepper & Carrot</em></a>, qu’il élabore (distribuée sous licence libre <em>CC-BY</em>), qu’avec ses suggestions et rapports de bogues continuels pour les logiciels libres qu’il utilise.<br>
Il paraît donc tout naturel de lui consacrer une section spéciale dans cette dépêche, relatant les différentes idées, contributions et expérimentations qu’il a apportées à <em>G’MIC</em> tout récemment. Un grand merci à lui pour sa disponibilité, le partage de ses idées, et tant qu’on y est, l’ensemble de son œuvre.</p>
<h3 id="21-perfectionnement-du-filtre-de-colorisation-de-dessins-au-trait">2.1. Perfectionnement du filtre de colorisation de dessins au trait</h3>
<p>Évoquons tout d’abord les progrès apportés au filtre <a href="//linuxfr.org/news/g-mic-2-0-un-second-souffle-pour-le-traitement-d-images-libre#3-faciliter-la-vie-des-dessinateurs"><em>Black & White / Colorize lineart [smart-coloring]</em></a>, filtre qui était apparu lors de la sortie de la version 2.0 de <em>G’MIC</em>. C’est un filtre d’aide à la colorisation en aplats de dessins au trait (également dénommés <em>line art</em>), qui avait été élaboré en collaboration avec David. Le principe de ce filtre était de générer automatiquement un calque de colorisation aléatoire pour un dessin donné, à partir de l’analyse fine des contours présents dans le calque d’entrée contenant le dessin au trait.<br>
En suivant les suggestions de David, nous avons pu ajouter un nouveau mode de colorisation : le mode <em>Autoclean</em>. Ce dernier permet de « nettoyer » automatiquement un calque de coloriage (réalisé grossièrement) fourni par l’utilisateur en plus du <em>line art</em>, en utilisant la même analyse géométrique des contours que pour les modes de colorisation précédents. L’utilisation de ce nouveau mode est illustré ci‐dessous, où un dessin donné (à gauche) a été colorisé de manière approximative par l’utilisateur. À partir des deux calques <em>line art</em> + <em>colorisation grossière</em>, le mode <em>Autoclean</em> du filtre de colorisation va générer l’image (de droite), où les couleurs ne débordent plus des contours (même des contours « virtuels » non fermés !). Le résultat n’est pas toujours parfait, mais permet néanmoins de réduire le temps passé au processus fastidieux de colorisation.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_autoclean.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f6175746f636c65616e2e706e67/gmic_autoclean.png" alt="gmic_autoclean|690x302" title="Source : http://gmic.eu/gmic220/thumbs/gmic_autoclean.png"></a> <em>Fig. 2.1 : Le nouveau mode</em> Autoclean <em>du filtre de colorisation de dessin au trait permet de nettoyer automatiquement un calque d’aplats de couleurs peint approximativement.</em></p>
<p>À noter que ce même filtre se dote également d’un nouveau module de détection de hachures, qui permet de ne pas générer trop de petites régions en utilisant l’ancien mode de colorisation aléatoire, lorsque le dessin au trait comporte un nombre important de hachures (résultat de droite sur la figure ci‐dessous). Assurément du temps gagné pour l’assignation des couleurs finales par l’artiste !<br><a href="http://gmic.eu/gmic220/fullsize/gmic_hatch_detection2.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f68617463685f646574656374696f6e322e706e67/gmic_hatch_detection2.png" alt="gmic_hatch_detect|690x187" title="Source : http://gmic.eu/gmic220/thumbs/gmic_hatch_detection2.png"></a> <em>Fig. 2.2 : Le nouveau module de détection de hachures limite le nombre de petites zones de couleurs inutiles générées par le mode de colorisation aléatoire automatique.</em></p>
<h3 id="22-Égaliseur-dans-les-espaces-colorimétriques-hsi-hsl-et-hsv">2.2. Égaliseur dans les espaces colorimétriques HSI, HSL et HSV</h3>
<p>Plus récemment, David nous a suggéré l’idée d’un filtre permettant de faire varier séparément les teintes et les saturations des couleurs possédant certains niveaux de luminosité. L’idée sous‐jacente est de donner à l’artiste la possibilité de dessiner ou peindre numériquement en utilisant seulement des niveaux de gris, puis de coloriser après coup son chef d’œuvre simplement en assignant des couleurs particulières aux différentes valeurs de gris de l’image. La version couleur obtenue possède une palette certes limitée, mais dont l’ambiance colorimétrique globale est déjà en place. L’artiste n’a plus qu’à retoucher localement les couleurs plutôt que d’avoir à coloriser l’ensemble du dessin à la main.<br>
La figure ci‐dessous illustre l’utilisation de ce nouveau filtre égaliseur <em>Colors / Equalize HSI/HSL/HSV</em> via le greffon <em>G’MIC</em> : chaque catégorie de valeurs peut être ajustée finement, avec pour résultats des colorisations préliminaires de dessins en noir et blanc assez bluffants ! On reconnaît dans tous ces exemples la patte artistique de David, qui a lui‐même effectué les tests de ce filtre.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_equalize_hsi.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f657175616c697a655f6873692e706e67/gmic_equalize_hsi.png" alt="Equalize HSI1" title="Source : http://gmic.eu/gmic220/thumbs/gmic_equalize_hsi.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_equalize_hsi5.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f657175616c697a655f687369352e706e67/gmic_equalize_hsi5.png" alt="Equalize HSI2" title="Source : http://gmic.eu/gmic220/thumbs/gmic_equalize_hsi5.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_equalize_hsi2.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f657175616c697a655f687369322e706e67/gmic_equalize_hsi2.png" alt="Equalize HSI3" title="Source : http://gmic.eu/gmic220/thumbs/gmic_equalize_hsi2.png"></a> <em>Fig. 2.3 : Le filtre</em> Equalize HSI/HSL/HSV <em>permet d’assigner des teintes quelconques à des pixels de différentes valeurs de gris.</em></p>
<p>Notons que dans le cas d’une image d’entrée en niveaux de gris, l’effet est équivalent à appliquer un gradient de couleurs aux différentes valeurs de l’image, ce qui pouvait déjà se faire assez facilement dans GIMP. Mais l’intérêt ici est de s’assurer que la luminosité des pixels reste inchangée lors de la transformation couleur appliquée, ce qui n’est pas une propriété évidente à préserver lorsqu’on effectue ce type de traitement manuellement via la définition d’un gradient couleurs.</p>
<p>Et ce qui est sympa avec ce filtre, c’est qu’il peut aussi s’appliquer aux photographies déjà en couleurs. On peut ainsi modifier la teinte et la saturation de couleurs possédant une certaine luminosité, avec un effet pouvant être parfois surprenant, comme celui obtenu sur la photographie de paysage ci‐dessous.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_eqhsi_tree_all.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f65716873695f747265655f616c6c2e706e67/gmic_eqhsi_tree_all.png" alt="Equalize HSI4" title="Source : http://gmic.eu/gmic220/thumbs/gmic_eqhsi_tree_all.png"></a> <em>Fig. 2.4 : Le filtre</em> Equalize HSI/HSL/HSV <em>appliqué sur une photographie couleur permet de changer son ambiance colorimétrique, ici de manière assez extrême.</em></p>
<h3 id="23-déformations-anguleuses">2.3. Déformations anguleuses</h3>
<p>Une autre demande de David a concerné l’élaboration d’un filtre de déformation locale aléatoire d’image, ayant la particularité de générer des déformations anguleuses. D’un point de vue algorithmique, ça semblait relativement simple à réaliser.<br>
Notons qu’une fois l’implémentation effectuée (en style concis : <a href="https://pastebin.com/VurLncvs">12 lignes !</a>) et intégrée dans les mises à jour officielles, David a juste eu à appuyer sur le bouton <em>Mettre les filtres à jour</em> de son greffon <em>G’MIC</em> pour Krita et le nouvel effet <em>Deformations / Crease</em> est apparu dans sa liste de filtres, avec la possibilité pour lui de le tester immédiatement. C’est aussi ça le côté pratique de <em>G’MIC</em> !<br><a href="http://gmic.eu/gmic220/fullsize/gmic_crease.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f6372656173652e706e67/gmic_crease.png" alt="G’MIC Crease" title="Source : http://gmic.eu/gmic220/thumbs/gmic_crease.png"></a> <em>Fig. 2.5 : Nouvel effet</em> Crease <em>pour des déformations locales anguleuses.</em></p>
<p>En revanche, on ne savait pas franchement à quoi ce truc pouvait bien servir en pratique. Mais ce qui est bien quand on coopère avec David, c’est que, lui, il sait très bien ce qu’il va en faire ! Et sur ses expérimentations à lui, ça a tout de suite plus d’allure. En témoigne les deux utilisations qu’il en a fait ci‐dessous, d’une part pour donner un aspect crénelé aux bords de certaines de ses cases de BD, et d’autre part pour améliorer le rendu d’un « rayon <em>alien</em> de la mort ».<br><a href="http://gmic.eu/gmic220/fullsize/gmic_crease2.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f637265617365322e706e67/gmic_crease2.png" alt="G’MIC Crease 2" title="Source : http://gmic.eu/gmic220/thumbs/gmic_crease2.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_crease3.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f637265617365332e706e67/gmic_crease3.png" alt="G’MIC Crease 3" title="Source : http://gmic.eu/gmic220/thumbs/gmic_crease3.png"></a> <em>Fig. 2.6 : Utilisation du filtre</em> Crease <em>pour deux cas concrets de création artistique.</em></p>
<h2 id="3-toujours-plus-de-filtres">3. Toujours plus de filtres…</h2>
<p>David Revoy n’est <em>a priori</em> pas le seul utilisateur de <em>G’MIC</em>, nous observons en effet entre 600 et 900 téléchargements quotidiens depuis le site principal du projet. Et il arrive, bien sûr, que d’autres utilisateurs emballés inspirent de nouveaux effets à ajouter, en particulier lors des discussions qui ont lieu sur notre <a href="https://discuss.pixls.us/c/software/gmic">forum</a> principal, aimablement mis à disposition par la communauté <a href="https://pixls.us/"><em>PIXLS.US</em></a>.</p>
<h3 id="31-faire-ressortir-les-détails-sans-créer-de-halos">3.1. Faire ressortir les détails sans créer de « halos »</h3>
<p>Beaucoup de photographes vous le diront : il n’est pas toujours évident de rehausser les détails dans des photographies numériques sans créer par ailleurs de vilains <a href="https://fr.wikipedia.org/wiki/Art%C3%A9fact">artéfacts</a> qu’il faut souvent remasquer « à la main » après coup.<br>
Il faut savoir que les algorithmes de rehaussement de contraste classiques se basent le plus souvent sur l’augmentation de la variance locale des intensités lumineuses des pixels, voire sur l’égalisation de leurs histogrammes locaux. Malheureusement, ces opérations se font généralement en considérant des voisinages à taille et géométrie fixées, où chaque pixel d’un voisinage est toujours considéré avec le même poids dans les calculs statistiques liés à ces algorithmes.<br>
C’est plus simple et plus rapide, mais d’un point de vue qualitatif ce n’est pas une excellente idée : on se retrouve couramment avec des effets de « halos » autour des contours qui étaient déjà très contrastés dans l’image. Ce phénomène classique est illustré par le cas d’école ci‐dessous avec l’application du filtre <em>Unsharp mask</em> (présent par défaut dans GIMP) sur une partie d’image de paysage montagneux, et qui génère un « halo » indésirable à la frontière entre montagne et ciel (particulièrement visible sur les images en pleine résolution).<br><a href="http://gmic.eu/gmic220/fullsize/gmic_highland01.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f686967686c616e6430312e706e67/gmic_highland01.png" alt="G’MIC details filters" title="Source : http://gmic.eu/gmic220/thumbs/gmic_highland01.png"></a> <em>Fig. 3.1 : Des effets de « halos » indésirables apparaissent souvent avec les filtres usuels de rehaussement de contraste.</em></p>
<p>Tout l’enjeu des algorithmes de rehaussement de détails est donc d’être capable d’analyser la géométrie locale des structures dans les images de manière plus fine, pour prendre en compte des « poids » locaux plus adaptés pour chaque pixel des voisinages considérés. Pour simplifier, on veut rendre <a href="https://fr.wikipedia.org/wiki/Anisotropie">anisotropes</a> ces méthodes de rehaussement, en les orientant par les contours présents dans les images.<br>
C’est en suivant cette voie que deux nouveaux filtres <em>G’MIC</em> ont fait leur apparition récemment, à savoir <em>Details / Magic details</em> et <em>Details / Equalize local histograms</em>, qui essayent de mieux prendre en compte le contenu géométrique de l’image pour ce travail de rehaussement local, grâce à l’utilisation du <a href="https://en.wikipedia.org/wiki/Bilateral_filter">filtre bilatéral</a>.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_magic_details.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f6d616769635f64657461696c732e706e67/gmic_magic_details.png" alt="G’MIC magic details" title="Source : http://gmic.eu/gmic220/thumbs/gmic_magic_details.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_eqdetails1.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f657164657461696c73312e706e67/gmic_eqdetails1.png" alt="G’MIC equalize local histograms" title="Source : http://gmic.eu/gmic220/thumbs/gmic_eqdetails1.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_eqdetails.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f657164657461696c732e676966/gmic_eqdetails.gif" alt="G’MIC equalize local histograms" title="Source : http://gmic.eu/gmic220/thumbs/gmic_eqdetails.gif"></a> <em>Fig. 3.2 : Les nouveaux filtres de rehaussement de détails de G’MIC.</em></p>
<p>Ainsi, l’application du nouveau filtre d’égalisation locale d’histogrammes de <em>G’MIC</em> sur l’image de paysage montagneux donne un résultat plus contrasté en détails géométriques et en couleurs, et ne fait plus apparaître de halos.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_highland01.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f686967686c616e6430312e706e67/gmic_highland01.png" alt="G’MIC details filters" title="Source : http://gmic.eu/gmic220/thumbs/gmic_highland01.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_highland02.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f686967686c616e6430322e706e67/gmic_highland02.png" alt="G’MIC magic details" title="Source : http://gmic.eu/gmic220/thumbs/gmic_highland02.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_highland.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f686967686c616e642e676966/gmic_highland.gif" alt="G’MIC magic details" title="Source : http://gmic.eu/gmic220/thumbs/gmic_highland.gif"></a> <em>Fig. 3.3 : Différences de résultats entre le filtre</em> Unsharp Mask <em>classique et l’égalisation locale d’histogrammes de G’MIC, pour le rehaussement de détails.</em></p>
<h3 id="32-des-déformations-en-tout-genre">3.2. Des déformations en tout genre</h3>
<p>Régulièrement, de nouveaux filtres permettant de réaliser des déformations géométriques sur les images sont ajoutés à <em>G’MIC</em>, et cette nouvelle version majeure 2.2 ne déroge pas à cette règle.<br>
Commençons donc par le filtre <em>Deformations / Spherize</em>, qui permet de déformer localement l’image pour donner l’impression que celle‐ci est projetée sur une sphère ou un ellipsoïde 3D. C’est le filtre idéal pour transformer votre odieux collègue de bureau en <a href="https://fr.wikipedia.org/wiki/M._Patate_(jouet)">Monsieur Patate</a> !<br><a href="http://gmic.eu/gmic220/fullsize/gmic_spherize.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f7370686572697a652e706e67/gmic_spherize.png" alt="G’MIC spherize" title="Source : http://gmic.eu/gmic220/thumbs/gmic_spherize.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_spherize.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f7370686572697a652e676966/gmic_spherize.gif" alt="G’MIC spherize" title="Source : http://gmic.eu/gmic220/thumbs/gmic_spherize.gif"></a> <em>Fig .3.4 : Deux exemples de déformations sphériques 3D réalisées avec le filtre</em> Spherize <em>de G’MIC.</em></p>
<p>Le filtre <em>Deformations / Square to circle</em>, quant à lui, implémente des transformations directes et inverses d’un domaine carré (ou d’un rectangle) vers un disque (ainsi que décrit mathématiquement sur <a href="http://squircular.blogspot.fr/2015/09/mapping-circle-to-square.html"><em>cette page</em></a>), ce qui permet de générer ce type de déformations.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_sqtoci.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f7371746f63692e676966/gmic_sqtoci.gif" alt="G’MIC square to circle" title="Source : http://gmic.eu/gmic220/thumbs/gmic_sqtoci.gif"></a> <em>Fig. 3.5 : Transformations directes et inverses d’un carré vers un disque.</em></p>
<p>L’effet <em>Degradations / Streak</em> remplace une zone d’image masquée par l’utilisateur (remplie par une couleur uniforme) par une ou plusieurs copies d’une zone voisine. Il fonctionne principalement comme l’outil de clonage de GIMP mais évite à l’utilisateur de réaliser le remplissage de tout le masque à la main.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_streak.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f73747265616b2e676966/gmic_streak.gif" alt="G’MIC streak" title="Source : http://gmic.eu/gmic220/thumbs/gmic_streak.gif"></a> <em>Fig. 3.6 : Le filtre</em> Streak <em>recopie une partie de l’image dans une zone masquée définie par l’utilisateur.</em></p>
<h3 id="33-abstractions-artistiques">3.3. Abstractions artistiques</h3>
<p>Vous allez me dire que les déformations c’est sympathique, mais qu’on désire parfois transformer une image de façon plus radicale. Tournons‐nous donc maintenant vers les nouveaux effets qui transforment une image en une version plus abstraite (simplifiée ou redessinée). Ces filtres ont en commun une analyse de la géométrie des structures de l’image, suivie d’une étape de re‐synthèse — avec plus ou moins de bonheur.<br>
Par exemple, le filtre <em>Contours / Super‐pixels</em> tente de regrouper localement les pixels de même couleur pour former une image partitionnée, façon puzzle, par des formes géométriques qui collent aux contours. Cette partition est obtenue via la méthode <a href="https://ivrl.epfl.ch/research/superpixels">SLIC</a> (<em>Simple Linear Iterative Clustering</em>), un algorithme classique de partitionnement d’images, qui a l’avantage d’être relativement rapide en temps de calcul.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_slic.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f736c69632e706e67/gmic_slic.png" alt="G’MIC super pixels 1" title="Source : http://gmic.eu/gmic220/thumbs/gmic_slic.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_slic2.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f736c6963322e706e67/gmic_slic2.png" alt="G’MIC super pixels 2" title="Source : http://gmic.eu/gmic220/thumbs/gmic_slic2.png"></a> <em>Fig. 3.7 : Décomposition d’une image en super‐pixels, par l’algorithme SLIC (Simple Linear Iterative Clustering).</em></p>
<p>Le filtre <em>Artistic / Linify</em> tente quant à lui de redessiner une image d’entrée en superposant des droites colorées semi‐transparentes sur un canevas initialement blanc, comme le montre la figure ci‐dessous. Cet effet est la ré‐implémentation d’un algorithme ingénieux initialement proposé sur le site <a href="http://linify.me">http://linify.me/</a> (implémenté en JavaScript).<br><a href="http://gmic.eu/gmic220/fullsize/gmic_linify.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f6c696e6966792e706e67/gmic_linify.png" alt="G’MIC linify 1" title="Source : http://gmic.eu/gmic220/thumbs/gmic_linify.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_linify.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f6c696e6966792e676966/gmic_linify.gif" alt="G’MIC linify 2" title="Source : http://gmic.eu/gmic220/thumbs/gmic_linify.gif"></a> <em>Fig. 3.8 : L’effet « Linify » cherche à redessiner une image en superposant uniquement des droites colorées semi‐transparentes sur un canevas blanc.</em></p>
<p>L’effet <em>Artistic / Quadtree variations</em> va pour sa part décomposer une image dans un premier temps en <a href="https://fr.wikipedia.org/wiki/Quadtree"><em>quadtree</em></a> (arbre quaternaire), puis la re‐synthésiser en dessinant des ellipses orientées sur un canevas initialement vide, pour chaque feuille du <em>quadtree</em> ainsi obtenu, ce qui donne un petit effet « peinture » assez intéressant. Il est probable qu’avec des formes plus complexes que des ellipses pleines, on puisse synthétiser des rendus encore plus attrayants. Sûrement une idée à garder dans un coin du cerveau pour une prochaine mise à jour des filtres.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_quadtree.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f71756164747265652e706e67/gmic_quadtree.png" alt="G’MIC quadtree 1" title="Source : http://gmic.eu/gmic220/thumbs/gmic_quadtree.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_qdellipse.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f7164656c6c697073652e676966/gmic_qdellipse.gif" alt="G’MIC quadtree 2" title="Source : http://gmic.eu/gmic220/thumbs/gmic_qdellipse.gif"></a> <em>Fig. 3.9 : La décomposition d’image en quadtree permet par la suite de la re‐synthétiser en superposant uniquement des ellipses orientées et colorées.</em></p>
<h3 id="34-y-en-a-un-peu-plus-je-vous-le-mets-quand-même">3.4. « Y en a un peu plus, je vous le mets quand même ? »</h3>
<p>Et maintenant que vous avez traité pleins de belles images, pourquoi ne pas les exposer sous la forme d’un superbe montage photo ? C’est précisément le rôle du filtre <em>Arrays & tiles / Drawn montage</em>, qui permet de créer très rapidement une juxtaposition de photographies en épousant des formes quelconques. L’idée est de fournir au filtre un patron (<em>template</em>) coloré en plus de l’ensemble des photographies (<em>fig. 3.10a</em>), puis d’associer chaque photographie à chaque couleur différente du patron (<em>fig. 3.10b</em>). L’incrustation se fait alors automatiquement par <em>G’MIC</em>, qui redimensionne les images de telle sorte qu’elles apparaissent le mieux cadré possible à l’intérieur des formes définies par le patron (<em>fig. 3.10c</em>).<br>
Nous avons réalisé <a href="https://www.youtube.com/watch?v=CxopG_DqQj4">une vidéo tutorielle</a> montrant l’utilisation de ce filtre particulier.</p>
<p><a href="http://gmic.eu/gmic220/fullsize/gmic_drawn_montage0.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f647261776e5f6d6f6e74616765302e706e67/gmic_drawn_montage0.png" alt="G’MIC drawn montage" title="Source : http://gmic.eu/gmic220/thumbs/gmic_drawn_montage0.png"></a> <em>Fig. 3.10a : Étape 1 : l’utilisateur dessine l’organisation désirée du montage avec des formes de différentes couleurs.</em></p>
<p><a href="http://gmic.eu/gmic220/fullsize/gmic_drawn_montage.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f647261776e5f6d6f6e746167652e706e67/gmic_drawn_montage.png" alt="G’MIC drawn montage" title="Source : http://gmic.eu/gmic220/thumbs/gmic_drawn_montage.png"></a> <em>Fig. 3.10b : Étape 2 : le filtre</em> Drawn montage <em>de G’MIC permet ensuite d’associer une photographie à chaque couleur.</em></p>
<p><a href="http://gmic.eu/gmic220/fullsize/gmic_drawn_montage2.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f647261776e5f6d6f6e74616765322e706e67/gmic_drawn_montage2.png" alt="G’MIC drawn montage" title="Source : http://gmic.eu/gmic220/thumbs/gmic_drawn_montage2.png"></a> <em>Fig. 3.10c : Étape 3 : le montage est finalement créé de manière automatique par le filtre, qui insère les photographies dans chaque forme de couleur en adaptant la résolution de chaque photographie.</em></p>
<p>Mais revenons en à des questions plus essentielles : avez vous déjà eu besoin de dessiner des rouages ? Non ?! C’est normal, ce n’est pas quelque chose que l’on fait tous les jours ! Mais, au cas où, le filtre <em>Rendering / Gear</em> se propose de le faire pour vous, avec différents réglages pour régler taille, couleurs et nombre de dents. Parfaitement inutile, donc totalement indispensable !<br><a href="http://gmic.eu/gmic220/fullsize/gmic_gears.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f67656172732e706e67/gmic_gears.png" alt="G’MIC drawn montage" title="Source : http://gmic.eu/gmic220/thumbs/gmic_gears.png"></a> <em>Fig. 3.11 : Le filtre</em> Gear <em>tournant à plein régime.</em></p>
<p>Besoin rapide d’une texture de satin ? Non plus ?! Dommage, car le filtre <em>Patterns / Satin</em> aurait pu vous être d’un grand secours !<br><a href="http://gmic.eu/gmic220/fullsize/gmic_satin.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f736174696e2e706e67/gmic_satin.png" alt="G’MIC satin" title="Source : http://gmic.eu/gmic220/thumbs/gmic_satin.png"></a> <em>Fig. 3.12 : Le filtre</em> Satin <em>de G’MIC vous rend la vie plus soyeuse.</em></p>
<p>Et pour finir la série de ces « effets qui ne servent à rien sauf le jour où on en a besoin », notons la venue du filtre <em>Degradations / JPEG artefacts</em> qui simule l’apparition d’artefacts de compression JPEG due à la quantification des coefficients <a href="https://fr.wikipedia.org/wiki/Transform%C3%A9e_en_cosinus_discr%C3%A8te" title="Transformée en cosinus discrète">DCT</a> encodant les blocs 8 × 8 composant l’image (oui, vous obtiendrez quasiment la même chose en sauvant votre image sous forme d’un fichier JPEG de la qualité désirée).<br><a href="http://gmic.eu/gmic220/fullsize/gmic_dct.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f6463742e706e67/gmic_dct.png" alt="Simulate JPEG artefacts" title="Source : http://gmic.eu/gmic220/thumbs/gmic_dct.png"></a><br><a href="http://gmic.eu/gmic220/fullsize/gmic_dct.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f6463742e676966/gmic_dct.gif" alt="Simulate JPEG artefacts" title="Source : http://gmic.eu/gmic220/thumbs/gmic_dct.gif"></a> <em>Fig. 3.13 : L’effet</em> JPEG artefacts <em>simule une dégradation d’image due à la compression DCT par bloc 8 × 8.</em></p>
<h2 id="4-autres-améliorations-notables">4. Autres améliorations notables</h2>
<p>Cette revue des nouveaux filtres disponibles ne doit pas faire oublier les diverses améliorations qui ont également été apportées « sous le capot » et qui sont toutes aussi importantes, même si elles sont moins visibles en pratique.</p>
<h3 id="41-amélioration-de-linterface-du-greffon-gmic-qt">4.1. Amélioration de l’interface du greffon G’MIC-Qt</h3>
<p>Un gros effort de nettoyage et de restructuration du code du greffon <em>G’MIC-Qt</em> a été réalisé, avec pour conséquence pas mal de petits soucis réglés dans l’utilisation de l’interface graphique (<a href="https://fr.wikipedia.org/wiki/Interface_graphique"><em>GUI</em></a>). Citons également en vrac quelques nouvelles fonctionnalités ayant fait leur apparition dans ce greffon : la possibilité de régler un délai d’expiration (<a href="https://en.wikipedia.org/wiki/Timeout_(computing)"><em>timeout</em></a>) lors de la prévisualisation du résultat de filtres un peu longs à calculer, une meilleure prise en compte des paramètres d’entrées‐sorties pour chaque filtre (persistance, meilleure localisation, bouton de réinitialisation), des facilités pour maximiser la taille de la fenêtre de prévisualisation, pour éditer à la main son coefficient d’agrandissement (<em>zoom</em>), ou encore pour choisir la langue de l’interface (indépendamment de la langue du système), etc. Au final, plein de petites choses qui, additionnées, améliorent progressivement l’expérience utilisateur.<br><a href="http://gmic.eu/gmic220/fullsize/gmic_prefs.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f70726566732e706e67/gmic_prefs.png" alt="Préférences de G’MIC" title="Source : http://gmic.eu/gmic220/thumbs/gmic_prefs.png"></a> <em>Fig. 4.1 : Aperçu de l’interface du greffon G’MIC-Qt dans sa dernière mouture 2.2.</em></p>
<h3 id="42-améliorations-apportées-au-cœur-de-calcul">4.2. Améliorations apportées au cœur de calcul</h3>
<p>Encore moins visible, mais tout aussi important, beaucoup d’améliorations sont apparues dans le code du cœur de calcul de <em>G’MIC</em> et son interpréteur de langage de script associé. Il faut savoir que tous les filtres proposés dans le greffon sont écrits sous forme de scripts en langage <em>G’MIC</em>, et chaque petite amélioration apportée à l’interpréteur a donc une conséquence bénéfique pour l’ensemble des filtres proposés. Sans rentrer dans les détails techniques de ces améliorations internes, on peut citer pêle‐mêle :</p>
<ul>
<li>des améliorations notables en ce qui concerne la syntaxe même du langage, allant de pair avec une meilleure performance d’analyse de cette syntaxe et, <em>in fine</em>, un temps d’exécution amélioré des scripts, pour une utilisation mémoire qui, elle, devient plus réduite ;</li>
<li>l’évaluateur d’expressions mathématiques intégré à <em>G’MIC</em> connaît lui aussi quelques améliorations et nouvelles fonctionnalités, pour envisager encore plus de possibilités de codage d’algorithmes réalisant des opérations non triviales au niveau pixel ;</li>
<li>une meilleure prise en charge des entrées‐sorties de séquences vidéo brutes en format <code>.yuv</code> avec la prise en charge des formats <code>4:2:2</code> et <code>4:4:4</code>, en plus du format <code>4:2:0</code> qui était le seul géré auparavant ;</li>
<li>enfin, deux nouvelles animations ont été ajoutées au menu des démonstrations de <em>G’MIC</em> (qui s’affiche par exemple lorsque l’on lance l’interface CLI — <code>gmic</code> sans arguments, depuis la ligne de commande) :
<ul>
<li>tout d’abord, un effet de champ d’étoiles en 3D :
<a href="http://gmic.eu/gmic220/fullsize/gmic_starfield.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f737461726669656c642e676966/gmic_starfield.gif" alt="Starfield demo" title="Source : http://gmic.eu/gmic220/thumbs/gmic_starfield.gif"></a> <em>Fig. 4.2 : Nouvelle animation</em> 3D Starfield <em>ajoutée au menu de démonstration.</em>
</li>
<li>mais aussi une version 3D jouable des <a href="https://fr.wikipedia.org/wiki/Tours_de_Hano%C3%AF"><em>Tours de Hanoï</em></a> :
<a href="http://gmic.eu/gmic220/fullsize/gmic_hanoi.gif"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f68616e6f692e676966/gmic_hanoi.gif" alt="Démo Hanoi" title="Source : http://gmic.eu/gmic220/thumbs/gmic_hanoi.gif"></a> <em>Fig. 4.3 : La version 3D jouable des « Tours de Hanoï », disponible dans G’MIC.</em>
</li>
</ul>
</li>
<li>pour finir, signalons l’apparition de la commande <code>tensors3d</code> dédiée à la représentation 3D d’un <a href="https://fr.wikipedia.org/wiki/Champ_tensoriel">champ tensoriel</a> d’ordre 2. Et, en pratique, ça ne sert pas qu’à donner envie de manger des <em>Smarties®</em> ! On peut par exemple l’utiliser pour visualiser certaines régions de volumes <a href="https://fr.wikipedia.org/wiki/IRM_de_diffusion#Imagerie_du_tenseur_de_diffusion">IRM de tenseurs de diffusion</a> :
<a href="http://gmic.eu/gmic220/fullsize/gmic_tensors3d.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69635f74656e736f727333642e706e67/gmic_tensors3d.png" alt="tensors3d" title="Source : http://gmic.eu/gmic220/thumbs/gmic_tensors3d.png"></a> <em>Fig. 4.4 : La commande</em> tensors3d <em>permet la visualisation 3D de champs tensoriels d’ordre 2.</em>
</li>
</ul><h3 id="43-nouveau-design-pour-gmiconline">4.3. Nouveau design pour <em>G’MIC Online</em>
</h3>
<p>Pour en finir avec le rayon des nouveautés, mentionnons également la refonte complète du service en ligne <a href="https://gmicol.greyc.fr/"><em>G’MIC Online</em></a> durant l’année 2017, réalisée par Christophe Couronne et Véronique Robert du service développement du laboratoire GREYC.<br><em>G’MIC Online</em> est un service Web, qui propose d’appliquer un sous‐ensemble des filtres de <em>G’MIC</em> sur vos images, via un navigateur Web. Ces pages ont maintenant un <a href="https://fr.wikipedia.org/wiki/Site_web_adaptatif">design adaptatif</a>, ce qui les rend utilisables de manière plus agréable qu’auparavant sur les appareils mobiles (<em>smartphones</em> et tablettes), comme illustré ci‐dessous avec une copie d’écran du service lancé depuis un navigateur Chrome tournant sous Android, le tout sur une tablette de 10 pouces de diagonale.<br><a href="http://gmic.eu/gmic220/fullsize/gmicol.png"><img src="//img.linuxfr.org/img/687474703a2f2f676d69632e65752f676d69633232302f7468756d62732f676d69636f6c2e706e67/gmicol.png" alt="G’MICol" title="Source : http://gmic.eu/gmic220/thumbs/gmicol.png"></a> <em>Fig. 4.5 : Nouvelle version adaptative du service Web</em> G’MIC Online, <em>tournant ici sur une tablette 10”.</em></p>
<h2 id="5-conclusion-et-perspectives">5. Conclusion et perspectives</h2>
<p>Voilà, le tour d’horizon de cette nouvelle version 2.2 de <em>G’MIC</em> est terminé. Une conclusion pourrait être : « Il y a plein de perspectives ! ». <em>G’MIC</em> est un projet libre que l’on peut qualifier de mature : les premières lignes de code ont été composées il y a presque dix ans, et l’on a aujourd’hui une bonne idée des possibilités (et des limites) de la bête. Nous espérons rencontrer toujours plus d’intérêt de la part des utilisateurs et développeurs libres, par exemple pour l’intégration du greffon générique <em>G’MIC-Qt</em> dans des logiciels divers et variés de traitement d’images ou de vidéos.<br>
La possibilité d’utiliser le cœur de <em>G’MIC</em> sous une licence <em>CeCILL-C</em> — plus permissive — peut également être source de collaborations intéressantes dans le futur (certaines entreprises nous ont déjà approché à ce sujet).</p>
<p>Tout en étant à l’affût de collaborations potentielles, nous allons continuer à développer <em>G’MIC</em> dans la mesure de nos moyens et l’alimenter avec de nouveaux filtres et effets, au gré des suggestions de nos utilisateurs enthousiastes. Merci à eux pour leur aide et leurs encouragements constants (la motivation pour écrire du code ou des articles, passé 23 h, ne serait pas la même).</p>
<p>Et en attendant une prochaine dépêche sur <em>G’MIC</em>… « Vive le traitement d'images et la création artistique libre ! »</p></div><div><a href="https://linuxfr.org/news/g-mic-2-2-v-la-les-filtres.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/113684/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/g-mic-2-2-v-la-les-filtres#comments">ouvrir dans le navigateur</a>
</p>
David TschumperléDavy DefaudteoBBAudZeroHeurePierre Jarillonhttps://linuxfr.org/nodes/113684/comments.atomtag:linuxfr.org,2005:News/380262017-06-02T10:38:57+02:002017-06-07T14:17:44+02:00G’MIC 2.0 : un second souffle pour le traitement d’images libreLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p><a href="https://www.greyc.fr/image">L’équipe <em>IMAGE</em></a> du laboratoire <a href="https://www.greyc.fr"><em>GREYC</em></a> de Caen (<em>UMR CNRS 6072</em>) est heureuse de vous annoncer la sortie d’une nouvelle version majeure (numérotée 2.0) de son projet <a href="http://gmic.eu"><em>G’MIC</em></a>, un cadriciel <em>libre</em>, générique et extensible pour le <a href="https://fr.wikipedia.org/wiki/Traitement_d%27images">traitement des images</a>.<br>
Nous exposons ici les avancées principales réalisées sur cet ensemble d’interfaces logicielles, depuis notre <a href="//linuxfr.org/news/g-mic-1-7-1-quand-les-fleurs-bourgeonnent-les-filtres-d-images-foisonnent">dernière dépêche</a>. Les nouveautés présentées ici englobent le travail réalisé ces douze derniers mois (versions 2.0.0 et 1.7.<em>x</em>, pour <em>x</em> variant de 2 à 9).</p></div><ul><li>lien nᵒ 1 : <a title="http://gmic.eu" hreflang="en" href="https://linuxfr.org/redirect/99960">Page principale du projet G’MIC</a></li><li>lien nᵒ 2 : <a title="https://twitter.com/gmic_ip" hreflang="en" href="https://linuxfr.org/redirect/99961">Fil Twitter</a></li><li>lien nᵒ 3 : <a title="http://gmic.eu/gimp.shtml" hreflang="en" href="https://linuxfr.org/redirect/99962">Le greffon pour GIMP</a></li><li>lien nᵒ 4 : <a title="https://gmicol.greyc.fr" hreflang="en" href="https://linuxfr.org/redirect/99963">Le Web service G’MIC Online</a></li><li>lien nᵒ 5 : <a title="https://discuss.pixls.us/t/release-of-gmic-2-0-0" hreflang="en" href="https://linuxfr.org/redirect/99964">Le journal des modifications de la version 2.0.0</a></li><li>lien nᵒ 6 : <a title="http://linuxfr.org/tags/gmic/public" hreflang="fr" href="https://linuxfr.org/redirect/99965">Série d’articles G’MIC sur LinuxFr.org</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#1-contexte-et-vue-densemble">1. Contexte et vue d’ensemble</a></li>
<li><a href="#2-une-nouvelle-interface-polyvalente-bas%C3%A9e-sur-qt">2. Une nouvelle interface polyvalente, basée sur Qt</a></li>
<li><a href="#3-faciliter-la-vie-des-dessinateurs">3. Faciliter la vie des dessinateurs…</a></li>
<li>
<a href="#4-sans-oublier-les-photographes">4. …Sans oublier les photographes !</a><ul>
<li><a href="#41-clut-et-transformations-colorim%C3%A9triques">4.1. CLUT et transformations colorimétriques</a></li>
<li><a href="#42-faire-ressortir-les-d%C3%A9tails">4.2. Faire ressortir les détails</a></li>
<li><a href="#43-masquage-par-s%C3%A9lection-de-couleurs">4.3. Masquage par sélection de couleurs</a></li>
</ul>
</li>
<li>
<a href="#5-et-pour-les-autres">5. Et pour les autres…</a><ul>
<li><a href="#51-moyenne-et-m%C3%A9diane-dune-s%C3%A9rie-dimages">5.1. Moyenne et médiane d’une série d’images</a></li>
<li><a href="#52-d%C3%A9formations-et-glitchart">5.2. Déformations et « Glitch Art »</a></li>
<li><a href="#53-simplification-dimage">5.3. Simplification d’image</a></li>
<li><a href="#54-et-en-vrac">5.4. Et en vrac…</a></li>
</ul>
</li>
<li><a href="#6-autres-informations-g%C3%A9n%C3%A9rales">6. Autres informations générales</a></li>
<li><a href="#7-la-suite">7. La suite ?</a></li>
</ul><p><em>N. D. A. : Cliquez sur les images de la dépêche pour en visualiser des versions à meilleure résolution.</em></p>
<h2 id="1-contexte-et-vue-densemble">1. Contexte et vue d’ensemble</h2>
<p><em>G’MIC</em> est un projet libre ayant vu le jour en août 2008, dans l’équipe <a href="https://www.greyc.fr/image">IMAGE</a> du <a href="https://www.greyc.fr/">GREYC</a>.<br>
Cette équipe française, composée de chercheurs et d’enseignants‐chercheurs, est spécialisée dans les domaines de l’algorithmique et des mathématiques du traitement d’images. <em>G’MIC</em> est distribué sous licence <a href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-fr.txt">CeCILL</a> (compatible GPL) pour différentes plates‐formes (GNU/Linux, macOS et Windows). Il fournit un ensemble d’interfaces utilisateur variées pour la manipulation de données images <em>génériques</em>, à savoir des images ou des séquences d’images hyperspectrales 2D ou 3D à valeurs flottantes (ce qui inclut de fait les images couleurs « classiques »).<br><a href="http://tschumperle.users.greyc.fr/lfr4/logo_gmic.jpg"><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f6c6f676f5f676d69632e6a7067/s_logo_gmic.jpg" alt="logo G’MIC" title="Source : http://tschumperle.users.greyc.fr/lfr4/s_logo_gmic.jpg"></a> <em>Fig. 1.1 : Logo du projet G’MIC, cadriciel libre pour le traitement d’image, et sa mascotte Gmicky.</em></p>
<p>La popularité de G’MIC vient en majeure partie du <a href="http://gmic.eu/gimp.shtml">greffon</a> qu’il propose pour le logiciel <a href="http://www.gimp.org">GIMP</a>, depuis 2009. À ce jour, celui‐ci dispose de plus de 480 filtres et effets différents à appliquer sur vos images, et permet donc d’enrichir considérablement les filtres de traitement livrés par défaut avec GIMP.</p>
<p>G’MIC fournit également une interface en <a href="http://gmic.eu/reference.shtml">ligne de commande</a>, relativement puissante, qui peut s’utiliser de manière autonome, et qui est complémentaire aux outils en ligne de commande proposés par <a href="http://www.imagemagick.org/">ImageMagick</a> ou <a href="http://www.graphicsmagick.org">GraphicsMagick</a>. Il existe aussi un service Web <a href="https://gmicol.greyc.fr/"><em>G’MIC Online</em></a>, permettant d’appliquer des effets sur vos images directement à partir d’un navigateur. D’autres interfaces plus confidentielles basées sur G’MIC existent : l’interface de diffusion vidéo <a href="https://www.youtube.com/watch?v=k1l3RdvwHeM"><em>ZArt</em></a>, un greffon pour <a href="http://www.krita.org">Krita</a>, un sous‐ensemble de filtres pour <a href="http://photoflowblog.blogspot.com/2014/10/two-new-photoflow-features-integration.html">Photoflow</a>, <a href="https://github.com/Starfall-Robles/Blender-2-G-MIC">Blender</a> ou encore <a href="https://github.com/NatronVFX/openfx-gmic/releases">Natron</a>… Toutes ces interfaces se basent sur les bibliothèques <em>C++</em> <a href="http://cimg.eu"><em>CImg</em></a> et <a href="http://gmic.eu/libgmic.shtml"><em>libgmic</em></a> qui sont portables, compatibles multi‐fil d’exécution (<em>thread‐safe</em> et <em>multi‐thread</em>), via l’utilisation d’<a href="http://openmp.org/">OpenMP</a>.</p>
<p>À l’heure actuelle, G’MIC possède plus de <a href="http://gmic.eu/reference.shtml">950 fonctions</a> différentes de traitement, toutes paramétrables, pour une bibliothèque de seulement 6,5 Mio, représentant un peu plus de 180 000 lignes de code source. Les fonctionnalités proposées couvrent un large spectre du traitement d’images, en proposant des algorithmes pour la manipulation géométrique, les changements colorimétriques, le filtrage d’image (débruitage, rehaussement de détails par méthodes spectrales, variationnelles, non locales…), l’estimation de mouvement et le recalage, l’affichage de primitives (2D et objets 3D maillés), la détection de contours et la segmentation, le rendu artistique, etc. C’est donc un outil très générique aux usages variés et très utile, d’une part pour convertir, visualiser et explorer des données images, et d’autre part, pour construire des <em>pipelines</em> élaborés et des algorithmes personnalisés de traitements d’images (voir <a href="http://gmic.eu/img/gmic_slides.pdf">les diapositives</a> de présentation du projet pour davantage de détails).</p>
<h2 id="2-une-nouvelle-interface-polyvalente-basée-sur-qt">2. Une nouvelle interface polyvalente, basée sur Qt</h2>
<p>La nouveauté essentielle de cette version 2.0 concerne le code du greffon, qui a été complètement repensé et réimplémenté à partir de zéro. Ce module, <a href="https://github.com/c-koi/gmic-qt"><em>G’MIC-Qt</em></a>, développé par <a href="https://www.greyc.fr/users/seb">Sébastien</a> (enseignant‐chercheur — expérimenté — de l’équipe), propose ainsi une refonte complète en Qt de l’interface du greffon, en étant le plus indépendant possible de l’interface logicielle et des <em>widgets</em> de GIMP.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_200.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f3230302e6a7067/s_gmic_200.jpg" alt="Aperçu de la version 2.0 du greffon G’MIC-Qt pour GIMP" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_200.jpg"></a> <em>Fig. 2.1 : Aperçu de la version 2.0 du greffon G’MIC-Qt pour GIMP.</em></p>
<p>Cela a plusieurs conséquences intéressantes :</p>
<ul>
<li>Le greffon utilise ses propres <em>widgets</em> (en Qt) et permet d’avoir une interface plus flexible et personnalisable qu’avec les <em>widgets</em> GTK proposés par défaut pour les greffons dans l’API de GIMP : la fenêtre de prévisualisation des filtres est par exemple redimensionnable à volonté, gère le zoom à la molette de la souris, et peut être localisée à gauche ou à droite de l’interface. Un moteur de recherche de filtres par mots‐clés a été ajouté, ainsi que la possibilité de choisir entre un thème clair ou sombre. La gestion des filtres favoris a été améliorée et l’interface propose même un mode d’édition de visibilité des filtres pour une personnalisation maximale.</li>
<li>Le greffon définit aussi sa propre <em>API</em>, pour faciliter son intégration dans des logiciels tiers autres que <em>GIMP</em>. Pour le développeur, il s’agit en pratique d’écrire un unique fichier <code>host_software.cpp</code> implémentant les fonctions de l’API pour faire le lien entre le greffon et l’application hôte. Actuellement, le fichier <a href="https://github.com/c-koi/gmic-qt/blob/master/src/host_gimp.cpp"><code>host_gimp.cpp</code></a> réalise ce travail pour le logiciel hôte GIMP. Mais il existe désormais aussi une version <em>stand‐alone</em> (fichier <a href="https://github.com/c-koi/gmic-qt/blob/master/src/host_none.cpp"><code>host_none.cpp</code></a>) qui propose de lancer l’interface graphique Qt du greffon en mode solo, depuis la ligne de commande (commande <code>gmic_qt</code>).</li>
<li>
<a href="https://krita.org/en/item/author/boudewijn_rempt/">Boudewijn Rempt</a>, gestionnaire et développeur du projet <a href="http://www.krita.org">Krita</a> a également débuté l’écriture du fichier <a href="https://github.com/c-koi/gmic-qt/blob/master/src/host_krita.cpp"><code>host_krita.cpp</code></a> pour la communication de ce greffon « nouvelle génération » avec le logiciel de peinture numérique Krita. Il s’agit à terme de remplacer le greffon G’MIC actuellement distribué avec <em>Krita</em>, qui se fait vieillissant et qui pose des problèmes de maintenance pour les développeurs.</li>
</ul><p>Minimiser l’effort d’intégration pour les développeurs, partager au maximum le code du greffon G’MIC_ entre différentes applications, et proposer une interface d’utilisation la plus confortable possible ont été les objectifs principaux de cette refonte complète. Comme vous vous en doutez, cette réécriture a demandé un travail long et soutenu, et nous ne pouvons qu’espérer que cela suscitera de l’intérêt chez d’autres développeurs de logiciels, où disposer d’une base conséquente de filtres de traitement d’images peut être utile (à quand un <code>host_blender.cpp</code> ? On peut rêver !). L’animation ci‐dessous illustre quelques‐unes des fonctionnalités offertes par cette nouvelle interface basée sur Qt.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_qt.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f71742e676966/s_gmic_qt.gif" alt="Interface de G’MIC-Qt" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_qt.gif"></a> <em>Fig. 2.2 : La nouvelle interface G’MIC-Qt en action.</em></p>
<p>À noter que le code de l’ancien greffon utilisant <a href="https://www.gtk.org/">GTK</a> a quand même été mis à jour pour fonctionner avec la version 2.0 de G’MIC, mais possède moins de fonctionnalités et n’évoluera sans doute plus dans le futur, contrairement à la version Qt.</p>
<h2 id="3-faciliter-la-vie-des-dessinateurs">3. Faciliter la vie des dessinateurs…</h2>
<p>Mais une des raisons d’être de G’MIC, c’est aussi de proposer toujours plus de filtres et de fonctions pour traiter les images. Et ça tombe bien, car dans ce domaine, nous n’avons pas non plus relâché nos efforts, malgré le nombre de filtres conséquent déjà disponible dans les versions précédentes !</p>
<p>Une des grandes nouveautés de cette version concerne l’apparition et l’amélioration de filtres pour l’aide à la colorisation de dessins au trait (<em>line‐arts</em>). Nous avons en effet eu la chance de recevoir au laboratoire pendant quelques jours l’artiste <a href="https://www.davidrevoy.com/">David Revoy</a>, bien connu des amateurs d’art et de logiciels libres de par ses contributions multiples dans ces domaines (en particulier, son <em>webcomic</em> <a href="https://www.peppercarrot.com/"><em>Pepper & Carrot</em></a>, à lire absolument !). En collaboration avec David, nous avons travaillé sur la conception d’un filtre original de colorisation automatique de dessins au trait, nommé <a href="http://www.davidrevoy.com/article324/smart-coloring-preview-of-a-new-gmic-filter"><em>Smart Coloring</em></a>.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_smart_coloring.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f736d6172745f636f6c6f72696e672e6a7067/s_gmic_smart_coloring.jpg" alt="filtre « Colorize lineart [smart coloring] »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_smart_coloring.jpg"></a> <em>Fig. 3.1 : Utilisation du filtre « Colorize lineart [smart coloring] » de G’MIC.</em></p>
<p>Dans le domaine de la bande dessinée, la colorisation d’un dessin au trait se réalise en effet en deux étapes successives : Le dessin d’origine en niveaux de gris (<em>fig. 3.2.[1]</em>) est d’abord pré‐colorisé en aplats, c.‐à‐d. en attribuant une couleur unique à chaque région ou objet distinct du dessin (<em>fig. 3.2.[3]</em>). Dans un second temps, le coloriste retravaille ce pré‐coloriage, ajoutant ombres, lumières et modifiant l’ambiance colorimétrique, pour obtenir le résultat de colorisation final (<em>fig. 3.2.[4]</em>). Pratiquement, la colorisation en aplats aboutit à la création d’un nouveau calque qui ne contient que des zones de couleurs constantes par morceaux, formant ainsi une partition colorisée du plan. Ce calque est fusionné avec le <em>line‐art</em> d’origine pour obtenir le rendu colorisé du dessin en aplats (fusion des calques en mode <em>multiplication</em>, typiquement).<br><a href="https://tschumperle.users.greyc.fr/lfr4/teaser.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f7465617365722e6a7067/s_teaser.jpg" alt="Étapes d’un processus de colorisation d’un dessin au trait" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_teaser.jpg"></a> <em>Fig. 3.2 : Étapes d’un processus de colorisation d’un dessin au trait (source : David Revoy).</em></p>
<p>Les artistes l’avouent eux‐mêmes : la colorisation en aplats est un processus long et fastidieux, nécessitant patience et précision. Les outils « classiques » présents dans les logiciels de peinture numérique ou de retouche d’images ne rendent en effet pas cette tâche aisée. Par exemple, les outils de remplissage par croissance de région (<em>bucket fill</em>), même les plus évolués, gèrent mal les discontinuités dans les traits de dessin (<em>fig. 3.3.a</em>), et encore plus mal les traits lissés (<em>anti‐crénelés</em>). Il est alors courant que l’artiste effectue ses aplats en peignant manuellement ses couleurs avec une brosse sur un calque séparé (<em>fig. 3.3.b</em>), avec tous les problèmes de précision (notamment aux abords des traits) que cela suppose (<em>fig. 3.3.c</em>, et <a href="http://www.davidrevoy.com/article240/gmic-line-art-colorization"><em>ce lien</em></a> pour plus de détails).<br><a href="https://tschumperle.users.greyc.fr/lfr4/problemes2.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f70726f626c656d6573322e6a7067/s_problemes2.jpg" alt="Problèmes classiques rencontrés lors de la colorisation en aplats" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_problemes2.jpg"></a> <em>Fig. 3.3 : Problèmes classiques rencontrés lors de la colorisation en aplats (source : David Revoy).</em></p>
<p>Il peut même arriver que l’artiste décide de contraindre explicitement son style de dessin, en utilisant par exemple des lignes crénelées en résolution supérieure (plutôt que des lignes anti‐crénelées), et/ou en se forçant à ne tracer que des traits sans « trous », pour faciliter le travail de colorisation du préparateur d’aplats.</p>
<p>Le filtre <em>Smart Coloring</em> que nous avons développé dans la version 2.0 de G’MIC permet de pré‐coloriser un dessin au trait donné en entrée, d’une part à partir d’une analyse de la géométrie locale des traits de crayon (normales et courbures) et, d’autre part, par leur complétion automatique par des courbes <a href="https://fr.wikipedia.org/wiki/Spline"><em>splines</em></a>. Cela autorise une fermeture (virtuelle) et un remplissage d’objets pouvant contenir des discontinuités dans les tracés de leurs contours. Ce filtre a de plus l’avantage d’être rapide en temps de calcul et donne des résultats de colorisation de qualité similaire à des techniques d’optimisation plus coûteuses, utilisées dans certains logiciels propriétaires. L’algorithme que nous avons élaboré gère sans problème les traits anti‐crénelés, et propose deux modes de colorisation en aplats : par couleurs aléatoires (<em>fig. 3.2.[2]</em> et <em>fig. 3.4</em>) ou guidée par des marqueurs de couleur placés au préalable par l’utilisateur (<em>fig. 3.5</em>).<br><a href="https://tschumperle.users.greyc.fr/lfr4/rain.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f7261696e2e676966/rain.gif" alt="filtre « Smart Coloring » en mode couleurs aléatoires" title="Source : https://tschumperle.users.greyc.fr/lfr4/rain.gif"></a> <em>Fig. 3.4 : Utilisation du filtre « Smart Coloring » en mode couleurs aléatoires, pour la colorisation d’un dessin au trait (source : David Revoy).</em></p>
<p>En mode <em>couleurs aléatoires</em>, le filtre génère un calque d’aplats qu’il est très facile de recoloriser par la suite avec de « bonnes » couleurs. Ce calque contient en effet uniquement des régions de couleurs constantes, et l’outil de remplissage classique (<em>bucket fill</em>) est ici efficace pour réassigner rapidement une couleur cohérente à chaque région existante colorisée aléatoirement par l’algorithme.<br>
En mode <em>marqueurs de couleurs</em>, les couleurs placées par l’utilisateur sont extrapolées de façon à respecter au mieux la géométrie du dessin, notamment avec la prise en compte des discontinuités dans les traits de crayon, comme on peut le voir très clairement sur l’exemple ci‐dessous :<br><a href="https://tschumperle.users.greyc.fr/lfr4/girl_colorization.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f6769726c5f636f6c6f72697a6174696f6e2e676966/girl_colorization.gif" alt="Utilisation du filtre « Smart Coloring » en mode guidage par marqueurs de couleurs" title="Source : https://tschumperle.users.greyc.fr/lfr4/girl_colorization.gif"></a> <em>Fig. 3.5 : Utilisation du filtre « Smart Coloring » en mode guidage par marqueurs de couleurs, pour la colorisation d’un dessin au trait (source : David Revoy).</em></p>
<p>Cet algorithme innovant de colorisation en aplats a fait l'objet d’une pré‐publication sur <em>HAL</em> : <a href="https://hal.archives-ouvertes.fr/hal-01490269"><em>Un algorithme semi‐guidé performant de colorisation en aplats pour le dessin au trait</em></a>. Les plus curieux y trouveront tous les détails techniques de la méthode utilisée.<br>
Les discussions récurrentes que nous avons eues avec David Revoy sur l’élaboration de ce filtre nous ont permis d’améliorer l’algorithme petit à petit, jusqu’à ce qu’il devienne réellement utilisable en production. Cette méthode a pu être ainsi utilisée avec succès, et donc validée, pour la pré‐colorisation de tout <a href="https://www.peppercarrot.com/en/article412/episode-22-the-voting-system">l’épisode 22</a> du <em>webcomic</em> <em>Pepper & Carrot</em>.</p>
<p>Les plus avisés pourraient nous dire que G’MIC possédait déjà un <a href="http://www.davidrevoy.com/article240/gmic-line-art-colorization">filtre de colorisation de dessins</a> ! C’est vrai, mais celui‐ci ne gérait malheureusement pas très bien les dessins avec des traits discontinus (tels que celui présenté en <em>fig. 3.5</em>), et pouvait alors nécessiter de la part de l’utilisateur le placement d’un grand nombre de marqueurs couleur pour guider correctement l’algorithme. La performance de ce nouvel algorithme est en pratique bien supérieure.</p>
<p>Et puisque ce nouveau filtre d’aide à la colorisation ne voit pas d’objection aux traits anti‐crénelés, pourquoi s’en priver ? Justement, un autre filtre <em>Repair / Smooth [antialias]</em> a également fait son apparition pour ajouter de l’anti‐crénelage à des traits de dessin qui seraient à l’origine trop crénelés.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_antialiasing.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f616e7469616c696173696e672e6a7067/s_gmic_antialiasing.jpg" alt="Le filtre « Smooth [antialias] »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_antialiasing.jpg"></a> <em>Fig. 3.6 : Le filtre « Smooth [antialias] » peut supprimer le crénelage éventuel de traits de dessins (source : David Revoy).</em></p>
<h2 id="4-sans-oublier-les-photographes">4. …Sans oublier les photographes !</h2>
<p>« <em>Coloriser des dessins, c’est bien gentil, mais mes photos à moi sont déjà en couleurs !</em> », nous fait gentiment remarquer le photographe impatient. Pas de souci ! De nombreux filtres relatifs à la transformation et l’amélioration de photos ont également fait leur apparition dans G’MIC 2.0. Faisons un petit tour du propriétaire.</p>
<h3 id="41-clut-et-transformations-colorimétriques">4.1. CLUT et transformations colorimétriques</h3>
<p>Les <a href="http://www.quelsolaar.com/technology/clut.html">CLUT</a> (<em>Color Lookup Tables</em>) sont des fonctions de transformations colorimétriques définies dans le cube RVB (rouge, vert et bleu) : pour chaque couleur source d’une image <em>Imgs</em> définie par un triplet <em>(Rs, Vs, Bs)</em>, une CLUT lui associe une nouvelle couleur <em>(Rd, Vd, Bd)</em> que l’on reporte dans une image destination <em>Imgd</em> aux mêmes positions. Ces fonctions de transformation pouvant être vraiment quelconques, on peut obtenir des effets très différents suivant les CLUT utilisées, et les photographes en sont donc généralement friands (d’autant que ces CLUT sont un bon moyen de simuler le rendu couleur de certains vieux films argentiques).</p>
<p>En pratique, on stocke une CLUT comme une image volumique couleur (éventuellement « déroulée » suivant l’axe <em>z = B</em> pour en obtenir <a href="http://gmic.eu/film_emulation/various/clut/golden.png">une version 2D</a>), ce qui peut vite devenir encombrant lorsque l’on doit gérer plusieurs centaines de CLUT. Heureusement, G’MIC possède un algorithme de compression spécifique de CLUT assez efficace (déjà mentionné dans <a href="//linuxfr.org/news/g-mic-1-7-1-quand-les-fleurs-bourgeonnent-les-filtres-d-images-foisonnent#22-reconstruction-de-donn%C3%A9es-manquantes-%C3%A0-partir-d%C3%A9chantillons-%C3%A9pars">une précédente dépêche <em>LinuxFr.org</em></a>), qui a été amélioré au fil des versions. Et c’est donc en toute décontraction que nous avons pu ajouter plus de <strong>60</strong> nouvelles transformations colorimétriques basées CLUT dans G’MIC, pour un total de <strong>359</strong> CLUT utilisables, toutes stockées dans un fichier de données qui pèse à peine 1,2 Mio ! Remercions en passant <a href="http://www.digicrea.be/haldclut-set-style-a-la-nik-software">Marc Roovers</a> et <a href="http://blog.sowerby.me/fuji-film-simulation-profiles/">Stuart Sowerby</a> pour leurs contributions à ces nouvelles transformations.<br><a href="https://tschumperle.users.greyc.fr/lfr4/a891743705fd011bebe68b1f88e2f0b90fddbdb1.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f613839313734333730356664303131626562653638623166383865326630623930666464626462312e6a7067/s_a891743705fd011bebe68b1f88e2f0b90fddbdb1.jpg" alt="Nouvelles transformations colorimétriques de G’MIC" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_a891743705fd011bebe68b1f88e2f0b90fddbdb1.jpg"></a><em> Fig. 4.1.1 : Quelques‐unes des nouvelles transformations colorimétriques disponibles dans G’MIC (source : Pat David).</em></p>
<p>Mais que faire si nous disposons déjà de nos propres fichiers CLUT et que nous voulons les utiliser dans GIMP ? Aucun problème ! Le filtre tout frais <em>Film emulation / User‐defined</em> vous permet d’appliquer de telles transformations, avec même une prise en charge des fichiers à extension <code>.cube</code> (<a href="http://wwwimages.adobe.com/content/dam/Adobe/en/products/speedgrade/cc/pdfs/cube-lut-specification-1.0.pdf">format de fichiers CLUT</a> proposé par Adobe et encodé en ASCII <code>o_O</code> !).</p>
<p>Et les plus exigeants, qui ne trouveraient pas leur bonheur dans les CLUT déjà présentes, peuvent dorénavant construire leur propre CLUT personnalisée, grâce au filtre <em>Colors / Customize CLUT</em> disponible dans le greffon. Ce filtre, très polyvalent, permet de placer des points clefs colorés dans le cube RVB, points qui seront interpolés en 3D par la suite (suivant une <a href="https://fr.wikipedia.org/wiki/Triangulation_de_Delaunay">triangulation de Delaunay</a>), pour reconstruire une CLUT complète, c.‐à‐d. une fonction dense dans <em>RGB</em>. Toutes les fantaisies sont alors permises, comme dans l’exemple ci‐dessous, où le filtre est utilisé pour changer l’ambiance colorimétrique d’un paysage, en modifiant principalement la couleur du ciel. La CLUT ainsi synthétisée peut être, bien sûr, sauvegardée sous forme de fichier et réutilisée plus tard pour d’autres photographies, ou même dans d’autres logiciels prenant en charge ce type de transformations colorimétriques (<a href="http://rawpedia.rawtherapee.com/Film_Simulation">RawTherapee</a> ou <a href="http://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/">Darktable</a>, par exemple).<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_custom_clut.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f637573746f6d5f636c75742e6a7067/s_gmic_custom_clut.jpg" alt="Le filtre « Customize CLUT »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_custom_clut.jpg"></a> <em>Fig. 4.1.2 : Création d’une transformation colorimétrique personnalisée avec le filtre « Customize CLUT ».</em></p>
<p><a href="https://tschumperle.users.greyc.fr/lfr4/coast.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f636f6173742e676966/coast.gif" alt="Résultat de la transformation colorimétrique personnalisée appliquée sur un paysage" title="Source : https://tschumperle.users.greyc.fr/lfr4/coast.gif"></a> <em>Fig. 4.1.3 : Résultat de la transformation colorimétrique personnalisée appliquée sur un paysage.</em></p>
<p>Toujours pour rester dans des modifications relatives aux couleurs, notons aussi l’apparition du filtre <em>Colors / Retro fade</em> qui créé un rendu « rétro » d’une image avec du grain généré par moyennages successifs de quantifications aléatoires d’une image d’entrée.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_retrofade.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f726574726f666164652e6a7067/s_gmic_retrofade.jpg" alt="Le filtre « Retro fade »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_retrofade.jpg"></a> <em>Fig. 4.1.4 : Le filtre « Retro fade » du greffon G’MIC.</em></p>
<h3 id="42-faire-ressortir-les-détails">4.2. Faire ressortir les détails</h3>
<p>De nombreux photographes cherchent des moyens de traiter leurs photographies numériques de façon à faire ressortir les moindres détails de leurs images, parfois même jusqu’à l’exagération. On en croise notamment sur <a href="https://pixls.us/"><em>Pixls.us</em></a>, site récent spécialisé dans les techniques de photographie utilisant uniquement des projets libres. Et c’est en collaboration avec ceux‐ci, que plusieurs nouveaux filtres de rehaussement de détails et de contraste ont été ajoutés dans G’MIC. On peut citer notamment les filtres <em>Artistic / Illustration look</em> et <em>Artistic / Highlight bloom</em>, ré‐implémentations directes des tutoriels et des scripts rédigés par <a href="https://discuss.pixls.us/t/highlight-bloom-and-photoillustration-look">Sébastien Guyader</a>, ainsi que le filtre <em>Light & Shadows / Pop shadows</em> suggéré par <a href="https://discuss.pixls.us/t/easy-tone-mapping-in-gimp-with-reduced-fat-cheese">Morgan Hardwood</a>. Être immergé dans une telle communauté de photographes donne sans cesse des opportunités de création de nouveaux effets !<br><a href="https://tschumperle.users.greyc.fr/lfr4/girl_hbloom.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f6769726c5f68626c6f6f6d2e676966/girl_hbloom.gif" alt="Filtres « Illustration look » et « Highlight bloom »" title="Source : https://tschumperle.users.greyc.fr/lfr4/girl_hbloom.gif"></a> <em>Fig. 4.2.1 : Filtres « Illustration look » et « Highlight bloom » appliquées sur une image de portrait.</em></p>
<p>Dans la même veine, G’MIC se dote de sa propre implémentation de l’algorithme de <a href="http://www.ipol.im/pub/art/2014/107">Retinex multi‐échelle</a>, dont une version était <a href="https://docs.gimp.org/fr/plug-in-retinex.html">déjà présente</a> dans GIMP, mais qui se trouve ici enrichie avec des possibilités de contrôle supplémentaires, pour améliorer la cohérence de la luminosité dans les images.<br><a href="https://tschumperle.users.greyc.fr/lfr4/501f32dbfcfefd9a761162a50fead5ca33e47bdb.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f353031663332646266636665666439613736313136326135306665616435636133336534376264622e6a7067/s_501f32dbfcfefd9a761162a50fead5ca33e47bdb.jpg" alt="Filtre « Retinex »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_501f32dbfcfefd9a761162a50fead5ca33e47bdb.jpg"></a> <em>Fig. 4.2.2 : Filtre « Retinex » pour uniformiser la luminosité dans une image.</em></p>
<p>Notre ami et grand contributeur de G’MIC, <a href="http://www.irisa.fr/vista/Equipe/People/Jerome.Boulanger.english.html">Jérome Boulanger</a>, a également implémenté et ajouté un algorithme d’atténuation de l’effet de brouillard dans les images (<em>Dehazing</em>), basé sur la méthode du <a href="http://mmlab.ie.cuhk.edu.hk/archive/2011/Haze.pdf"><em>Dark Channel Prior</em></a>. Le réglage des paramètres de ce filtre n’est pas toujours aisé, mais il donne parfois des résultats très intéressants.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_dehaze.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f646568617a652e6a7067/s_gmic_dehaze.jpg" alt="Filtre « DCP Dehaze »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_dehaze.jpg"></a><br><a href="https://tschumperle.users.greyc.fr/lfr4/dehaze.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f646568617a652e676966/dehaze.gif" alt="Filtre « DCP Dehaze »" title="Source : https://tschumperle.users.greyc.fr/lfr4/dehaze.gif"></a> <em>Fig. 4.2.3 : Filtre « DCP Dehaze » pour l’atténuation de l’effet de brouillard dans une image.</em></p>
<p>Pour terminer cette sous‐section, notons également l’implémentation dans G’MIC de l’algorithme de <a href="http://www.cse.cuhk.edu.hk/leojia/projects/rollguidance/"><em>Rolling Guidance</em></a>, qui permet de simplifier des images et qui est devenu une brique de base utilisée dans de nombreux filtres récemment ajoutés. C’est le cas notamment pour cette méthode épatante de rehaussement de contours (<a href="https://en.wikipedia.org/wiki/Image_editing#Sharpening_and_softening_images"><em>Sharpening</em></a>), que vous pourrez trouver dans <em>Details / Sharpen [texture]</em>, et qui se réalise en deux étapes successives. D’abord l’image est séparée en une composante <em>texture</em> + une composante <em>couleur</em>, puis on rehausse les détails de la composante <em>texture</em> uniquement, avant de recomposer l’image. Cette façon de procéder permet de bien faire ressortir tous les petits détails de l’image, tout en minimisant la création de halos disgracieux près des contours, problème récurent rencontré avec la plupart des méthodes de rehaussement de détails plus classiques (tel que le bien connu <a href="https://fr.wikipedia.org/wiki/Masque_flou"><em>Unsharp Mask</em></a>).<br><a href="https://tschumperle.users.greyc.fr/lfr4/lion_sharpen.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f6c696f6e5f7368617270656e2e676966/lion_sharpen.gif" alt="Le filtre « Sharpen [texture] »" title="Source : https://tschumperle.users.greyc.fr/lfr4/lion_sharpen.gif"></a> <em>Fig. 4.2.4 : Le filtre « Sharpen [texture] » illustré pour deux amplitudes différentes de rehaussement de détails.</em></p>
<h3 id="43-masquage-par-sélection-de-couleurs">4.3. Masquage par sélection de couleurs</h3>
<p>Il existe une multitude de techniques de retouche numérique de photographies se basant sur la création au préalable d’un ou plusieurs « masques », c.‐à‐d. des zones spécifiques de l’image qui vont recevoir des traitements différenciés. Par exemple, la technique très courante des <a href="http://retoquephotographique.blogspot.com/2009/03/le-masque-de-luminosite.html">masques de luminosité</a> permet de traiter différemment les zones d’ombre et de lumière dans une photographie. G’MIC 2.0 se dote d’un nouveau filtre <em>Colors / Color mask [interactive]</em>, implémentant un algorithme relativement rusé (quoique coûteux en temps de calcul) d’aide à la création de masques. Ce filtre demande à l’utilisateur de passer sa souris au‐dessus de quelques points représentatifs des régions qu’il souhaite isoler. L’algorithme apprend en temps réel les couleurs ou les luminosités correspondantes et en déduit l’ensemble des pixels qu’il doit conserver dans l’image entière (par <a href="https://fr.wikipedia.org/wiki/Analyse_en_composantes_principales">analyse en composante principale</a> sur les échantillons RVB), pour la construction rapide d’un masque global.</p>
<p>Une fois le masque généré par ce filtre, l’utilisateur peut modifier les pixels correspondants avec tout type de traitement. L’exemple ci‐dessous illustre l’utilisation de ce filtre pour modifier radicalement la couleur d’une voiture (l’opération se réalise en moins d’une minute trente ! Voir <a href="https://www.youtube.com/watch?v=fmvGRAnKJgs">la vidéo</a> correspondante). Une <a href="https://www.youtube.com/watch?v=K2nkbkqYquc">autre vidéo</a> expose une technique identique pour modifier la couleur du ciel dans un paysage.<br><a href="https://tschumperle.users.greyc.fr/lfr4/car_hue2.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f6361725f687565322e676966/car_hue2.gif" alt="filtre « Color mask [interactive] »" title="Source : https://tschumperle.users.greyc.fr/lfr4/car_hue2.gif"></a> <em>Fig. 4.3.1 : Modification de la couleur d’une voiture à l’aide du filtre « Color mask [interactive] ».</em></p>
<h2 id="5-et-pour-les-autres">5. Et pour les autres…</h2>
<p>Les dessinateurs et les photographes étant maintenant rassurés, passons à d’autres types de traitements, récemment ajoutés à G’MIC, à usage plus exotique, mais qui restent néanmoins intéressants !</p>
<h3 id="51-moyenne-et-médiane-dune-série-dimages">5.1. Moyenne et médiane d’une série d’images</h3>
<p>Vous êtes vous déjà demandé comment calculer facilement l’image moyenne ou médiane d’une série d’images d’entrée ? Le photographe <a href="https://patdavid.net/">Pat David</a>, <em>aficionado</em> du Libre (il est le créateur du site <a href="https://pixls.us/"><em>Pixls.us</em></a>), s’est, quant à lui, souvent posé la question. Tout d’abord pour tenter de débruiter ses images, <a href="https://patdavid.net/2013/05/noise-removal-in-photos-with-median_6.html">en combinant plusieurs clichés d’une même scène</a>. Puis, <a href="https://patdavid.net/2013/09/faking-nd-filter-for-long-exposure.html">pour simuler un temps d’exposition plus long</a> par moyennage de photographies prises à des instants successifs. Et enfin, en calculant des moyennes d’images diverses et variées à des fins artistiques (par exemple, des trames de <a href="https://patdavid.net/2013/12/mean-averaged-music-videos-g.html">clips vidéo musicaux</a>, l’ensemble des <a href="https://patdavid.net/2012/08/imagemagick-average-blending-files.html">couvertures de <em>Playboy</em></a>, ou encore des <a href="https://patdavid.net/2012/08/more-averaging-photos-martin-schoeller.html">portraits de célébrités</a>).</p>
<p>C’est donc avec sa bénédiction que nous avons ajouté les commandes <code>-median_files</code>, <code>-median_videos</code>, <code>-average_files</code> et <code>-average_videos</code> pour réaliser toutes ces choses très simplement, à partir de l’interface en ligne de commande <code>gmic</code> de G’MIC. L’exemple ci‐dessous illustre le résultat de ces commandes appliquées sur une portion de la vidéo de <a href="https://peach.blender.org/"><em>Big Buck Bunny</em></a>. Nous avons tout simplement invoqué les commandes suivantes depuis Bash :</p>
<pre><code>$ gmic -average_video bigbuckbunny.mp4 -normalize 0,255 -o average.jpg
$ gmic -median_video bigbuckbunny.mp4 -normalize 0,255 -o median.jpg
</code></pre>
<p><a href="https://tschumperle.users.greyc.fr/lfr4/bbb.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f6262622e676966/s_bbb.gif" alt="Big Buck Bunny" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_bbb.gif"></a><em> Fig. 5.1.1 : Portion de la vidéo de</em> Big Buck Bunny, <em>réalisée par la fondation Blender.</em></p>
<p><a href="https://tschumperle.users.greyc.fr/lfr4/bbb_avg.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f6262625f6176672e6a7067/s_bbb_avg.jpg" alt="Big Buck Bunny" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_bbb_avg.jpg"></a> <em>Fig. 5.1.2 : Résultat : Image moyenne de la séquence de</em> Big Buck Bunny <em>ci‐dessus.</em></p>
<p><a href="https://tschumperle.users.greyc.fr/lfr4/bbb_median.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f6262625f6d656469616e2e6a7067/s_bbb_median.jpg" alt="Big Buck Bunny" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_bbb_median.jpg"></a> <em>Fig. 5.1.3 : Résultat : Image médiane de la séquence de</em> Big Buck Bunny <em>ci‐dessus.</em></p>
<p>En restant dans le domaine du traitement vidéo, remarquons également l’apparition des commandes <code>-morph_files</code> et <code>-morph_video</code> permettant de calculer des interpolations temporelles de séquences vidéo prenant en compte le mouvement des objets dans les séquences, grâce à un algorithme variationnel et multi‐échelle ’estimation de mouvement intra‐trames. La <a href="https://www.youtube.com/watch?v=rjfo5gi5XOs">vidéo visible sur YouTube</a> illustre la différence de rendu pour le recalage d’une séquence, entre une interpolation temporelle utilisant ou non l’estimation du mouvement.</p>
<h3 id="52-déformations-et-glitchart">5.2. Déformations et « Glitch Art »</h3>
<p>Ceux qui aiment maltraiter leurs images encore plus agressivement seront ravis d’apprendre qu’un tas de nouveaux effets de déformations et de dégradations d’image sont apparus dans G’MIC.</p>
<p>Tout d’abord, le filtre <em>Deformations / Conformal maps</em>, qui permet de déformer vos images par des <a href="https://fr.wikipedia.org/wiki/Transformation_conforme">transformations conformes</a>. Ces déformations ont la propriété de préserver localement les angles, et sont le plus souvent exprimées par des fonctions utilisant des nombres complexes. En plus de jouer avec des déformations prédéfinies, ce filtre permet aux matheux en herbe d’expérimenter en spécifiant leurs propres formules complexes, si besoin est.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_conformalmaps.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f636f6e666f726d616c6d6170732e6a7067/s_gmic_conformalmaps.jpg" alt="Filtre « Conformal maps » sur la Joconde" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_conformalmaps.jpg"></a> <em>Fig. 5.2.1 : Filtre « Conformal maps » appliquant une transformation conforme à l’image de la Joconde.</em></p>
<p>Les amateurs de <a href="https://fr.wikipedia.org/wiki/Glitch_art"><em>Glitch Art</em></a> pourront être également concernés par plusieurs nouveaux traitements dont le rendu fait furieusement penser à des artefacts ou des bogues d’encodage ou de compression d’images. Tout d’abord, l’effet <em>Degradations / Pixel sort</em> qui se permet de trier les pixels d’une image par ligne ou par colonne suivant différents critères et sur des régions éventuellement masquées, tel que cela a été proposé et décrit sur <a href="http://satyarth.me/articles/pixel-sorting/"><em>cette page</em></a>.<br><a href="https://tschumperle.users.greyc.fr/lfr4/girl_sorted.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f6769726c5f736f727465642e6a7067/girl_sorted.jpg" alt="Filtre « Pixel sort »" title="Source : https://tschumperle.users.greyc.fr/lfr4/girl_sorted.jpg"></a> <em>Fig. 5.2.2 : Filtre « Pixel sort » pour un rendu de type « Glitch Art » du plus bel effet !</em></p>
<p>Mais aussi avec ses deux petits frères, les filtres <em>Degradations / Flip & rotate blocs</em> et <em>Degradations / Warp by intensity</em>. Le premier permet de diviser une image en blocs et de tourner ou inverser ces blocs (façon « mirroir ») en ne le faisant potentiellement que pour certaines caractéristiques couleur de l’image (teinte ou saturation par exemple).<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_flip.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f666c69702e6a7067/s_gmic_flip.jpg" alt="Filtre « Flip & rotate blocs »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_flip.jpg"></a> <em>Fig. 5.2.3 : Filtre « Flip & rotate blocs » appliqué uniquement sur la teinte afin d’obtenir des artefacts de couleurs façon « Glitch Art ».</em></p>
<p>Le deuxième s’amuse à déformer localement une image plus ou moins fortement en fonction des informations données par sa géométrie locale et, là aussi, permet de générer des images étranges, mais pouvant être appréciées des amateurs de <em>Glitch Art</em>.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_warp.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f776172702e6a7067/s_gmic_warp.jpg" alt="Filtre « Warp by intensity »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_warp.jpg"></a> <em>Fig .5.2.4 : Filtre « Warp by intensity » appliqué sur l’image de la Joconde (pauvre Joconde !).</em></p>
<p>Il faut préciser que ces filtres‐là ont été très largement inspirés par le greffon <a href="http://forums.getpaint.net/index.php?/topic/30276-glitch-effect-plugin-polyglitch-v14b/"><em>Polyglitch</em></a> disponible pour <a href="https://www.getpaint.net/"><em>Paint.NET</em></a>, et réalisés après une suggestion d’un sympathique utilisateur (oui, oui, on essaye d’écouter nos utilisateurs les plus sympathiques !).</p>
<h3 id="53-simplification-dimage">5.3. Simplification d’image</h3>
<p>Qu’avons‐nous d’autre en réserve ? Ah oui ! Un nouveau filtre d’abstraction d’image, baptisé <em>Artistic / Sharp abstract</em> et basé sur l’algorithme du <em>Rolling Guidance</em> déjà évoqué précédemment. Ce filtre applique un lissage à préservation de contours sur une image, et a pour effet principal de supprimer sa texture. La figure ci‐dessous illustre son utilisation pour générer plusieurs niveaux d’abstraction d’une même image, à différentes échelles de lissage.<br><a href="https://tschumperle.users.greyc.fr/lfr4/lion_abstract.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f6c696f6e5f61627374726163742e676966/lion_abstract.gif" alt="Abstraction d’images via le filtre « Sharp abstract »" title="Source : https://tschumperle.users.greyc.fr/lfr4/lion_abstract.gif"></a> <em>Fig. 5.3.1 : Abstraction d’images via le filtre « Sharp abstract ».</em></p>
<p>Dans le même genre, G’MIC_ voit également débarquer <em>Artistic / Posterize</em>, un effet de <a href="https://fr.wikipedia.org/wiki/Posterisation">postérisation</a> d’image. Contrairement au filtre de postérisation livré par défaut dans GIMP, qui essaye principalement de réduire le nombre de couleurs (et qui s’apparente donc plus à un processus de <a href="https://fr.wikipedia.org/wiki/Quantification_(signal)">quantification</a>, notre version ajoute des traitements de simplification des informations spatiales de l’image pour s’approcher un peu plus d’un rendu de type « vieux poster ».<br><a href="https://tschumperle.users.greyc.fr/lfr4/tiger_posterize.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f74696765725f706f73746572697a652e676966/tiger_posterize.gif" alt="Comparaison des filtres « Posterize » de G’MIC et de GIMP" title="Source : https://tschumperle.users.greyc.fr/lfr4/tiger_posterize.gif"></a> <em>Fig. 5.3.2 : Filtre « Posterize » de G’MIC et comparaison avec le filtre du même nom disponible par défaut dans GIMP.</em></p>
<h3 id="54-et-en-vrac">5.4. Et en vrac…</h3>
<p>Si vous n’êtes toujours pas rassasiés (et dans ce cas, on peut dire que vous êtes sacrément gourmands !), nous finissons cette section en extirpant en vrac de nos cartons quelques autres effets nouvellement implémentés.</p>
<p>À commencer par ce filtre <em>Artistic / Diffusion tensors</em>, qui affiche un champ de tenseurs de diffusion, calculés à partir des tenseurs de structure d’une image (les tenseurs de structure étant des matrices symétriques et définies positives, classiquement utilisés pour l’estimation de la géométrie locale des structures). Pour être tout à fait honnête, cette fonctionnalité n’avait pas été développée originellement dans un but artistique, mais des utilisateurs du greffon sont tombés dessus un peu par hasard et nous ont demandé d’en faire un filtre pour GIMP, dont acte. Et ma foi, c’est vrai que c’est plutôt joli, non ?<br><a href="https://tschumperle.users.greyc.fr/lfr4/26ec897bf8cee6af17b4af60c1ec8a22309d797e.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f323665633839376266386365653661663137623461663630633165633861323233303964373937652e6a7067/s_26ec897bf8cee6af17b4af60c1ec8a22309d797e.jpg" alt="Filtre « Diffusion tensors »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_26ec897bf8cee6af17b4af60c1ec8a22309d797e.jpg"></a> <em>Fig. 5.4.1 : Le filtre « Diffusion tensors » et sa multitude d’ellipses multicolores.</em></p>
<p>D’un point de vue technique, ce filtre a été en réalité l’occasion d’introduire de nouvelles fonctionnalités de dessin de primitives à l’intérieur de l’évaluateur d’expressions mathématiques de G’MIC, et il est devenu maintenant assez facile de développer ses commandes de visualisation personnalisées pour des données image diverses et variées. C’est ce qui a été fait par exemple avec la commande <code>-display_quiver</code>, réimplémentée de zéro, et qui permet de générer ce type de rendu :<br><a href="https://tschumperle.users.greyc.fr/lfr4/b99e02c28583b00e3f8bd12e6b99b09b9dfe1a41.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f623939653032633238353833623030653366386264313265366239396230396239646665316134312e6a7067/s_b99e02c28583b00e3f8bd12e6b99b09b9dfe1a41.jpg" alt="Rendu de champs de vecteurs par la commande « -display_quiver »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_b99e02c28583b00e3f8bd12e6b99b09b9dfe1a41.jpg"></a> <em>Fig. 5.4.2 : Rendu de champs de vecteurs par la commande <code>-display_quiver</code>.</em></p>
<p>Pour les amateurs de textures, nous pouvons mentionner l’arrivée de deux nouveaux effets amusants : D’abord, le filtre <em>Patterns / Camouflage</em> qui, comme son nom le suggère, produit une texture de type « camouflage » militaire.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_camouflage.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f63616d6f75666c6167652e6a7067/s_gmic_camouflage.jpg" alt="Le filtre « Camouflage »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_camouflage.jpg"></a> <em>Fig. 5.4.3 : Le filtre « Camouflage », à imprimer sur vos T‐shirts pour passer inaperçu en soirée !</em></p>
<p>Et dans le même genre, le filtre <em>Patterns / Crystal background</em> superpose plusieurs polygones colorés aléatoires pour synthétiser une texture faisant vaguement penser à du cristal vu à la loupe. Plutôt sympa quand on veut obtenir rapidement des fonds d’images pas trop ternes.<br><a href="https://tschumperle.users.greyc.fr/lfr4/gmic_crystal.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f676d69635f6372797374616c2e6a7067/s_gmic_crystal.jpg" alt="Le filtre « Crystal background »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_gmic_crystal.jpg"></a> <em>Fig. 5.4.4 : Le filtre « Crystal background » en action.</em></p>
<p>Et nous finirons ce tour d’horizon des nouveaux traitements apparus depuis l’an dernier avec l’effet <em>Rendering / Barnsley fern</em>, qui trace un rendu de la fractale <a href="https://en.wikipedia.org/wiki/Barnsley_fern">Barnsley fern</a>. Pour les curieux, notons que l’algorithme de génération de cette figure fractale notoire est disponible sur <a href="https://rosettacode.org/wiki/Barnsley_fern#G.27MIC"><em>Rosetta Code</em></a>, avec même une version du code écrite en langage de script G’MIC, à savoir :</p>
<pre><code class="c++"><span class="cp"># Put this into a new file 'fern.gmic' and invoke it from the command line, like this:</span>
<span class="cp"># $ gmic fern.gmic -barnsley_fern</span>
<span class="nl">barnsley_fern</span> <span class="p">:</span>
<span class="mi">1024</span><span class="p">,</span><span class="mi">2048</span>
<span class="o">-</span><span class="n">skip</span> <span class="p">{</span><span class="s">"</span>
<span class="n">f1</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mf">0.16</span> <span class="p">];</span> <span class="n">g1</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span> <span class="p">];</span>
<span class="n">f2</span> <span class="o">=</span> <span class="p">[</span> <span class="mf">0.2</span><span class="p">,</span><span class="o">-</span><span class="mf">0.26</span><span class="p">,</span><span class="mf">0.23</span><span class="p">,</span><span class="mf">0.22</span> <span class="p">];</span> <span class="n">g2</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mf">1.6</span> <span class="p">];</span>
<span class="n">f3</span> <span class="o">=</span> <span class="p">[</span> <span class="o">-</span><span class="mf">0.15</span><span class="p">,</span><span class="mf">0.28</span><span class="p">,</span><span class="mf">0.26</span><span class="p">,</span><span class="mf">0.24</span> <span class="p">];</span> <span class="n">g3</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mf">0.44</span> <span class="p">];</span>
<span class="n">f4</span> <span class="o">=</span> <span class="p">[</span> <span class="mf">0.85</span><span class="p">,</span><span class="mf">0.04</span><span class="p">,</span><span class="o">-</span><span class="mf">0.04</span><span class="p">,</span><span class="mf">0.85</span> <span class="p">];</span> <span class="n">g4</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mf">1.6</span> <span class="p">];</span>
<span class="n">xy</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span> <span class="p">];</span>
<span class="k">for</span> <span class="p">(</span><span class="n">n</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">n</span><span class="o"><</span><span class="mf">2e6</span><span class="p">,</span> <span class="o">++</span><span class="n">n</span><span class="p">,</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">u</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
<span class="n">xy</span> <span class="o">=</span> <span class="n">r</span><span class="o"><=</span><span class="mi">1</span><span class="o">?</span><span class="p">((</span><span class="n">f1</span><span class="o">**</span><span class="n">xy</span><span class="p">)</span><span class="o">+=</span><span class="n">g1</span><span class="p">)</span><span class="o">:</span>
<span class="n">r</span><span class="o"><=</span><span class="mi">8</span><span class="o">?</span><span class="p">((</span><span class="n">f2</span><span class="o">**</span><span class="n">xy</span><span class="p">)</span><span class="o">+=</span><span class="n">g2</span><span class="p">)</span><span class="o">:</span>
<span class="n">r</span><span class="o"><=</span><span class="mi">15</span><span class="o">?</span><span class="p">((</span><span class="n">f3</span><span class="o">**</span><span class="n">xy</span><span class="p">)</span><span class="o">+=</span><span class="n">g3</span><span class="p">)</span><span class="o">:</span>
<span class="p">((</span><span class="n">f4</span><span class="o">**</span><span class="n">xy</span><span class="p">)</span><span class="o">+=</span><span class="n">g4</span><span class="p">);</span>
<span class="n">uv</span> <span class="o">=</span> <span class="n">xy</span><span class="o">*</span><span class="mi">200</span> <span class="o">+</span> <span class="p">[</span> <span class="mi">480</span><span class="p">,</span><span class="mi">0</span> <span class="p">];</span>
<span class="n">uv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">h</span> <span class="o">-</span> <span class="n">uv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
<span class="n">I</span><span class="p">(</span><span class="n">uv</span><span class="p">)</span> <span class="o">=</span> <span class="mf">0.7</span><span class="o">*</span><span class="n">I</span><span class="p">(</span><span class="n">uv</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.3</span><span class="o">*</span><span class="mi">255</span><span class="p">;</span>
<span class="p">)</span><span class="s">"}</span>
<span class="o">-</span><span class="n">r</span> <span class="mi">40</span><span class="o">%</span><span class="p">,</span><span class="mi">40</span><span class="o">%</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span></code></pre>
<p>Et voici le rendu que cette fonction génère :<br><a href="https://tschumperle.users.greyc.fr/lfr4/3750f17a2859f582ce40c21475d886bb9295d19f.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f333735306631376132383539663538326365343063323134373564383836626239323935643139662e6a7067/s_3750f17a2859f582ce40c21475d886bb9295d19f.jpg" alt="fractale « Barnsley fern » calculé par G’MIC" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_3750f17a2859f582ce40c21475d886bb9295d19f.jpg"></a> <em>Fig. 5.4.5 : Rendu de la fractale « Barnsley fern » calculé par G’MIC.</em></p>
<h2 id="6-autres-informations-générales">6. Autres informations générales</h2>
<p>Bien évidemment, les filtres qui ont été présentés tout au long de cette dépêche ne constituent que la partie émergée de l’iceberg G’MIC. Ils sont en réalité le résultat de nombreux développements et améliorations effectués « sous le capot », c.‐à‐d. directement sur le code de l’interpréteur du <a href="http://gmic.eu/reference.shtml">langage de script</a> que G’MIC définit, et qui sert <em>in fine</em> de base à l’écriture de tous les filtres et commandes disponibles pour les utilisateurs. Durant cette année écoulée, un gros travail a donc été réalisé pour améliorer les performances et les possibilités de cet interpréteur :</p>
<ul>
<li>l’évaluateur d’expressions mathématiques a été considérablement enrichi et optimisé, avec toujours plus de fonctions disponibles (particulièrement pour le calcul matriciel), la gestion des chaînes de caractères, l’introduction de variables <code>const</code> pour une plus grande rapidité d’évaluation, la possibilité d’écrire des macros <a href="https://fr.wiktionary.org/wiki/variadique">variadiques</a>, ou encore d’allouer des vecteurs de manière dynamique, etc. ;</li>
<li>de nouvelles optimisations ont également été introduites dans la bibliothèque <a href="http://cimg.eu">CImg</a>, avec notamment la parallélisation de nouvelles fonctions (via l’utilisation d’<a href="https://fr.wikipedia.org/wiki/OpenMP">OpenMP</a>). Cette bibliothèque <em>C++</em> fournit les implémentations des traitements d’images « critiques » et son optimisation a donc des répercussions directes sur les performances de G’MIC (à ce propos, notons que CImg passe également en version majeure 2.0) ;</li>
<li>la compilation de G’MIC sous Windows utilise maintenant une version de <code>g++</code> récente (la 6.2 plutôt que la 4.5), ce qui se traduit par un impact énorme sur les performances des exécutables compilés ; certains filtres s’exécutent jusqu’à 60 fois plus rapidement qu’avec les binaires générés précédemment (c’est le cas, par exemple, pour le filtre <em>Deformations / Conformal Maps</em>, évoqué en section 5.2) ;</li>
<li>la prise en compte des images <code>.tiff</code> de grande dimension (format <a href="http://www.awaresystems.be/imaging/tiff/bigtiff.html">BigTIFF</a>, avec des fichiers dont la taille peut dépasser les 4 Gio) est maintenant opérationnelle en lecture et écriture, tout comme celle des images TIFF à valeurs flottantes sur 64 bits ;</li>
<li>le moteur de rendu d’objets 3D maillés intégré à G’MIC a également été amélioré, avec la prise en charge du <a href="https://fr.wikipedia.org/wiki/Placage_de_relief"><em>bump mapping</em></a> ; aucun filtre n’utilise actuellement cette fonctionnalité, mais sait‐on jamais, on se prépare pour la suite !</li>
</ul><p><a href="https://tschumperle.users.greyc.fr/lfr4/d135157095b38133d1b25bea7ef97a56099a2fad.jpg"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f735f643133353135373039356233383133336431623235626561376566393761353630393961326661642e6a7067/s_d135157095b38133d1b25bea7ef97a56099a2fad.jpg" alt="Comparaison du rendu avec et sans « Bump mapping »" title="Source : https://tschumperle.users.greyc.fr/lfr4/s_d135157095b38133d1b25bea7ef97a56099a2fad.jpg"></a> <em>Fig. 6.1 : Comparaison du rendu texturé avec (à droite) et sans « Bump mapping » (à gauche).</em></p>
<ul>
<li>et comme il est toujours bon de se détendre après une dure journée de travail, nous avons ajouté le jeu du <a href="https://fr.wikipedia.org/wiki/Puissance_4">Puissance 4</a> à G’MIC ! Il est accessible via la commande shell <code>gmic -x_connect4</code> ou en passant par le greffon, via le filtre <em>Various / Games & demos / Connect-4</em>. À noter qu’il est possible de jouer contre l’ordinateur, qui a un niveau décent mais pas imbattable non plus (l’IA, très simple, utilise l’<a href="https://fr.wikipedia.org/wiki/Algorithme_minimax">algorithme Minimax</a> avec un arbre de décisions à deux niveaux seulement).
<a href="https://tschumperle.users.greyc.fr/lfr4/e23f0c741c04da1fd5d2dcc95f43447fbc536f5f.gif"><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672342f676d69635f636f6e6e656374342e676966/gmic_connect4.gif" alt="Le jeu « Puissance 4 »" title="Source : https://tschumperle.users.greyc.fr/lfr4/gmic_connect4.gif"></a>
<em>Fig. 6.2 : Le jeu du « Puissance 4 », jouable dans G’MIC.</em>
</li>
</ul><p>Et pour en finir avec le rayon des nouveautés, mentionnons le travail en cours de refonte du service Web <em>G’MIC Online</em>, avec une <a href="https://gm%E2%80%99col.greyc.fr/beta">version bêta</a> en cours de développement. Ce re‐développement du site, réalisé par <a href="https://www.greyc.fr/users/couronne">Christophe Couronne</a>, chapeauté par <a href="https://www.greyc.fr/users/robertv">Véronique Robert</a> (tous deux également membres du laboratoire <em>GREYC</em>), a été étudié pour mieux s’adapter aux appareils mobiles, et les premiers tests sont plus qu’encourageants. N’hésitez pas à expérimenter et nous faire part de vos impressions !</p>
<h2 id="7-la-suite">7. La suite ?</h2>
<p>Que retenir de cette looooooongue dépêche ?</p>
<p>D’abord que cette version 2.0 représente effectivement une étape importante dans la vie du projet G’MIC, et que les améliorations réalisées ces derniers mois sont de bon augure pour les développements futurs. Il semble que les utilisateurs soient de plus en plus nombreux (et apparemment satisfaits), et nous espérons que cela incitera d’autres développeurs à déployer notre nouvelle interface G’MIC-Qt comme greffon pour leurs propres logiciels libres. En particulier, on a bon espoir de voir tourner le nouveau G’MIC sous Krita prochainement, et ce serait déjà une étape formidable !</p>
<p>Ensuite, que ce projet libre continue d’être actif et d’évoluer au fil des rencontres et des discussions avec les membres des communautés d’artistes et de photographes, qui peuplent en particulier les forums et IRC de <a href="https://discuss.pixls.us/"><em>Pixls.us</em></a> et de <a href="http://gimpchat.com/">GimpChat</a>. Vous avez de grandes chances de nous y retrouver si vous désirez de plus amples informations ou simplement discuter de choses relatives au traitement d’images (libre de préférence).</p>
<p>On tient, bien sûr, à remercier les contributeurs du projet, que l’on ne peut malheureusement pas tous citer ici, mais qui sont de plus en plus nombreux. Merci également à tous ceux qui payent leurs impôts en France sans ronchonner et qui font donc avancer indirectement le développement de ce projet libre, mis à disposition gracieusement — faut‐il le rappeler ? — par le <a href="http://www.greyc.fr">GREYC</a>, un laboratoire public de recherche en <a href="https://interstices.info/jcms/c_9098/les-stic-une-definition" title="Sciences et technologies d’information et de communication">STIC</a> — Sciences et technologies d’information et de communication — de Caen, et qui est développé par des fonctionnaires motivés et passionnés (et du coup quelquefois aussi fatigués ! :)).</p>
<p>Et en attendant une prochaine dépêche hypothétique sur une future version de G’MIC, vous pouvez toujours suivre l’avancement pas à pas du projet via <a href="https://twitter.com/gmic_ip">notre fil Twitter</a>.</p>
<p>D’ici là, vive le traitement d’images libre et la science reproductible !</p>
<hr><p><em>Crédits images : Sauf mention contraire, les diverses images non synthétiques qui ont servi à illustrer cet article proviennent du site</em> <a href="https://pixabay.com/en/">Pixabay</a>.</p></div><div><a href="https://linuxfr.org/news/g-mic-2-0-un-second-souffle-pour-le-traitement-d-images-libre.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/111995/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/g-mic-2-0-un-second-souffle-pour-le-traitement-d-images-libre#comments">ouvrir dans le navigateur</a>
</p>
David TschumperléDavy DefaudNils RatusznikZeroHeureBenoît SibaudBAudSylvain Berfinipalm123https://linuxfr.org/nodes/111995/comments.atomtag:linuxfr.org,2005:Diary/369512016-11-06T16:55:44+01:002016-11-06T16:55:44+01:00ghash: génération d'image à partir d'un hashLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Il parait que cela s'appelle des identicons: des images uniques générées à partir d'une chaine de caractères.</p>
<p>$ echo linuxfr.org | ghash -o linuxfr.org.jpg</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f6769746875622e636f6d2f6e69636f6c6173626f756c61792f67686173682f7261772f6d61737465722f6578616d706c652f6c696e757866722e6f72672e6a7067/linuxfr.org.jpg" alt="ghash de linuxfr" title="Source : https://github.com/nicolasboulay/ghash/raw/master/example/linuxfr.org.jpg"></p>
<p>J'ai tenté de faire un tel générateur avec 2 "julia" (des fractals) multipliées, je me suis inspiré du code trouvé, ici, sur linuxfr, comme exemple pour <a href="http://gmic.eu">gmic</a> de l'option '-fill'. Je ne sais pas si ghash est assez solide pour être qualifié de cryptographique mais j'ai tout fait pour.</p>
<p>Ghash est un outil pour Linux en ligne de commande écrit en go, qui appel un script Gmic.</p>
<p>La préversion vient avec le binaire gmic car il faut une version récente pour que cela marche chez moi. Le "package" est très simplifié.<br><a href="https://github.com/nicolasboulay/ghash">https://github.com/nicolasboulay/ghash</a></p><div><a href="https://linuxfr.org/users/niconico/journaux/ghash-generation-d-image-a-partir-d-un-hash.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/110459/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/niconico/journaux/ghash-generation-d-image-a-partir-d-un-hash#comments">ouvrir dans le navigateur</a>
</p>
Nicolas Boulayhttps://linuxfr.org/nodes/110459/comments.atomtag:linuxfr.org,2005:News/372732016-05-05T10:57:32+02:002016-05-05T10:57:32+02:00G'MIC 1.7.1 : quand les fleurs bourgeonnent, les filtres d'images foisonnent.Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>La version <strong>1.7.1</strong> « <em>Spring 2016</em> » de <a href="http://gmic.eu"><em>G'MIC</em></a> (<em>GREYC's Magic for Image Computing</em>), infrastructure libre pour le traitement d'images, a été publiée récemment, le 26 avril 2016. Nous continuons notre <a href="//linuxfr.org/tags/gmic/public">série de présentation</a> des possibilités et des avancées de ce logiciel libre, avec la description des nouveautés et des améliorations notables introduites depuis <a href="//linuxfr.org/news/g-mic-1-6-8-c-est-deja-noel-pour-les-traiteurs-d-images">notre dernière dépêche</a> sur ce sujet, datant de décembre 2015, qui avait été rédigée à l'occasion de la sortie de la version <em>1.6.8</em>. Trois versions successives ont été publiées depuis (les versions <em>1.6.9</em>, <em>1.7.0</em> et <em>1.7.1</em>).<br>
La deuxième partie de la dépêche détaille quelques uns des nouveaux filtres et effets disponibles dans le <a href="http://gmic.eu/gimp.shtml">greffon <em>G'MIC</em></a> pour <a href="http://www.gimp.org"><em>GIMP</em></a>, qui reste l'interface de <em>G'MIC</em> la plus utilisée à ce jour. Nous abordons aussi les autres évolutions diverses du projet comme l'amélioration et la création d'autres interfaces d'utilisation ainsi que les avancées « techniques » réalisées au cœur du <em>framework</em>.</p></div><ul><li>lien nᵒ 1 : <a title="http://gmic.eu" hreflang="en" href="https://linuxfr.org/redirect/97079">Le projet G'MIC</a></li><li>lien nᵒ 2 : <a title="http://gmic.eu/gimp.shtml" hreflang="en" href="https://linuxfr.org/redirect/97080">Le greffon G'MIC pour GIMP</a></li><li>lien nᵒ 3 : <a title="http://gmic.eu/tutorial/basics.shtml" hreflang="en" href="https://linuxfr.org/redirect/97081">Initiation à G'MIC en ligne de commande</a></li><li>lien nᵒ 4 : <a title="http://gmic.eu/reference.shtml" hreflang="en" href="https://linuxfr.org/redirect/97082">Documentation technique de référence</a></li><li>lien nᵒ 5 : <a title="http://linuxfr.org/tags/gmic/public" hreflang="fr" href="https://linuxfr.org/redirect/97083">Série d'articles G'MIC sur Linuxfr</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#1-le-projet-gmic-en-quelques-mots">1. Le projet <em>G'MIC</em> en quelques mots</a></li>
<li>
<a href="#2-s%C3%A9lection-de-nouveaux-filtres-et-effets">2. Sélection de nouveaux filtres et effets</a><ul>
<li><a href="#21-cr%C3%A9ation-de-peintures-%C3%A0-partir-de-photographies">2.1. Création de peintures à partir de photographies</a></li>
<li><a href="#22-reconstruction-de-donn%C3%A9es-manquantes-%C3%A0-partir-d%C3%A9chantillons-%C3%A9pars">2.2. Reconstruction de données manquantes à partir d'échantillons épars</a></li>
<li><a href="#23-rendre-des-textures-p%C3%A9riodiques">2.3. Rendre des textures périodiques</a></li>
<li><a href="#24-d%C3%A9composition-dune-image-en-niveaux-de-d%C3%A9tails">2.4. Décomposition d'une image en niveaux de détails</a></li>
<li><a href="#25-d%C3%A9bruitage-dimages-par-m%C3%A9thode-patch-pca">2.5. Débruitage d'images par méthode « Patch-PCA »</a></li>
<li><a href="#26-effet-droste--la-mise-en-abyme-continue">2.6. Effet « Droste » : la mise en abyme continue</a></li>
<li><a href="#27-transformation-%C3%A9quirectangulaire---z%C3%A9nithnadir">2.7. Transformation équirectangulaire <-> zénith/nadir</a></li>
</ul>
</li>
<li><a href="#3-autres-am%C3%A9liorations-et-faits-notables">3. Autres améliorations et faits notables</a></li>
<li><a href="#4-comment-tout-cela-va-%C3%A9voluer">4. Comment tout cela va évoluer ?</a></li>
</ul><h2 id="1-le-projet-gmic-en-quelques-mots">1. Le projet <em>G'MIC</em> en quelques mots</h2>
<p><em>G'MIC</em> est un projet libre ayant vu le jour en août 2008, dans l'équipe <a href="https://www.greyc.fr/image"><em>IMAGE</em></a> du laboratoire <a href="https://www.greyc.fr/fr/node/6"><em>GREYC</em></a> (Unité Mixte de Recherche du <a href="http://www.cnrs.fr"><em>CNRS</em></a> située à Caen / France). Cette équipe est composée de chercheurs et d'enseignant-chercheurs spécialisés dans les domaines de l'algorithmique et des mathématiques du traitement d'images. <em>G'MIC</em> est distribué sous licence libre <a href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-fr.txt"><em>CeCILL</em></a> (compatible <em>GPL</em>) pour différentes plateformes (<em>Linux, Mac et Windows</em>). Il fournit un ensemble d'interfaces utilisateurs variées pour la manipulation de données images <em>génériques</em>, à savoir des images ou des séquences d'<a href="https://en.wikipedia.org/wiki/Hyperspectral_imaging">images hyperspectrales</a> 2D ou 3D à valeurs flottantes (ce qui inclut bien évidemment les images couleurs « classiques »).</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f6c6f676f5f676d69632e706e67/logo_gmic.png" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr3/logo_gmic.png"><br><em>Fig.1.1. Logo et (nouvelle) mascotte du projet G'MIC, logiciel libre pour le traitement d'image.</em></p>
<p>Notons qu'une première nouveauté relative au projet concerne <em>Gmicky</em>, la mascotte, qui a été entièrement redessinée, par <a href="http://www.davidrevoy.com/static6/about-me"><em>David Revoy</em></a>, artiste français bien connu des amoureux du graphisme libre, puisqu'il est à l'origine du fameux webcomics <a href="http://www.peppercarrot.com/"><em>Pepper&Carott</em></a>. Un grand merci à lui ! (à comparer avec l'ancien dessin de <em>Gmicky</em> toujours visible <a href="http://gmic.eu/img/gmicky.png">ici</a>).</p>
<p><em>G'MIC</em> s'est fait connaître essentiellement via son <a href="http://gmic.eu/gimp.shtml">greffon</a> disponible pour le logiciel <a href="http://www.gimp.org"><em>GIMP</em></a>, apparu en 2009, greffon qui propose plus de <em>460</em> différents filtres et effets à appliquer sur vos images, et qui ressemble aujourd'hui à ceci :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f67696d703137315f732e706e67/gmic_gimp171_s.png" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr3/gmic_gimp171_s.png"><br><em>Fig.1.2. Aperçu de la version 1.7.1 du greffon G'MIC pour GIMP.</em></p>
<p>Mais <em>G'MIC</em> n'est pas qu'un greffon pour GIMP. Il fournit également une interface en <a href="http://gmic.eu/reference.shtml">ligne de commande</a>, qui peut s'utiliser de manière complémentaire aux outils <em>CLI</em> proposés par <a href="http://www.imagemagick.org/"><em>ImageMagick</em></a> ou <a href="http://www.graphicsmagick.org"><em>GraphicsMagick</em></a>. Cette interface <em>CLI</em> est, comme on peut l'imaginer, l'interface la plus puissante et la plus flexible du <em>framework</em>. Il existe aussi un service web <a href="https://gmicol.greyc.fr/"><em>G'MIC Online</em></a> associé, pour appliquer des effets sur vos images directement à partir d'un navigateur web. D'autres interfaces basées sur <em>G'MIC</em> sont également développées (<a href="https://www.youtube.com/watch?v=k1l3RdvwHeM"><em>ZArt</em></a>, un greffon pour <a href="http://www.krita.org"><em>Krita</em></a>, des filtres pour <a href="http://photoflowblog.blogspot.fr/"><em>Photoflow</em></a>…) mais leur usage reste pour le moment plus confidentiel. Toutes ces interfaces se basent sur les bibliothèques <em>C++</em> <a href="http://cimg.eu"><em>CImg</em></a> et <a href="http://gmic.eu/libgmic.shtml"><em>libgmic</em></a> qui sont portables, thread-safe et multi-threadées (via l'utilisation d'<a href="http://openmp.org/"><em>OpenMP</em></a>). Aujourd'hui, <em>G'MIC</em> possède plus de <a href="http://gmic.eu/reference.shtml"><em>900</em> fonctions</a> différentes de traitement d'images, toutes paramétrables, pour une bibliothèque de seulement <em>6 Mio</em> correspondant à un peu plus de <em>150 kloc</em> de code source. Les fonctionnalités proposées couvrent un large spectre du traitement d'images, en proposant des algorithmes pour la manipulation géométrique, les changements colorimétriques, le filtrage d'image (débruitage, rehaussement de détails par méthodes spectrales, variationnelles, non-locales…), l'estimation de mouvement / le recalage, l'affichage de primitives (jusqu'aux objets 3d maillés), la détection de contours/la segmentation, le rendu artistique, etc. C'est donc un outil très générique aux usages variés, très utile d'une part pour convertir, visualiser et explorer des données images, et d'autre part pour construire des pipelines personnalisés et élaborés de traitements d'images (voir <a href="http://issuu.com/dtschump/docs/gmic_slides">ces transparents de présentation du projet</a> pour plus d'information sur les motivations et les buts de ce projet).</p>
<h2 id="2-sélection-de-nouveaux-filtres-et-effets">2. Sélection de nouveaux filtres et effets</h2>
<p>Nous proposons ici un résumé des nouveaux filtres et effets les plus marquants récemment développés, et illustrons leur usage depuis le greffon <em>G'MIC</em> pour <em>GIMP</em>. Ces filtres sont bien sûr utilisables également depuis les autres interfaces disponibles (notamment avec <a href="http://gmic.eu/reference.shtml"><code>gmic</code></a>, l'interface en ligne de commande). Nous nous sommes restreints aux filtres les plus intéressants à expliquer et illustrer, car en réalité, ce sont plus d'une vingtaine de nouveaux filtres et effets qui ont fait leur apparition depuis la version <em>1.6.8</em>.</p>
<h3 id="21-création-de-peintures-à-partir-de-photographies">2.1. Création de peintures à partir de photographies</h3>
<p>Le filtre <strong>Artistic / Brushify</strong> tente de transformer une image en <em>peinture</em>. L'idée ici est de simuler (de manière simplifiée) le processus de création d'une peinture sur une toile blanche. On fournit une image <em>modèle</em> à l'algorithme, qui va dans un premier temps, analyser sa géométrie (principalement le contraste et l'orientation des contours), puis tenter de la <em>repeindre</em> en utilisant comme outil un unique pinceau (<em>brush</em> en anglais, d'où le nom de l'effet) qui va s'orienter localement pour s'adapter à la géométrie des contours de l'image.<br>
En simulant suffisamment de coups de pinceaux, on obtient une image « peinte » plus ou moins fidèle à l'image modèle d'origine, en fonction de la forme et de la taille du pinceau utilisé, du nombre d'orientations autorisées, etc. Tout ceci étant réglable par l'utilisateur comme des paramètres de l'algorithme : ce filtre permet donc d'obtenir une grande variété de rendus différents.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f62727573686966792e6a7067/gmic_brushify.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_brushify.jpg"><br><em>Fig.2.1.1. Apercu du filtre « Brushify » dans le greffon G'MIC pour GIMP. La brosse qui va être utilisée par l'algorithme est visible en haut à gauche.</em></p>
<p>L'animation ci-dessous illustre cette grande diversité de résultats, avec le traitement d'une même image d'entrée (photographie d'une tête de lion), en variant les types de brosses et les paramètres utilisés par l'algorithme. <em>Brushify</em> peut être assez coûteux en termes de temps de calcul (suivant le nombre de coups de pinceaux à simuler), même si l'implémentation de l'algorithme est déjà parallélisée (les différents coeurs de calcul pouvant donner des coups de pinceaux simultanément).</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f6272757368696679322e676966/brushify2.gif" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/brushify2.gif"><br><em>Fig.2.1.2. Quelques exemples de rendus du filtre « Brushify » à partir d'une même image d'entrée, en utilisant des brosses différentes.</em></p>
<p>À noter qu'il est amusant d'invoquer ce filtre à partir de la ligne de commande (grâce à la fonction <code>-brushify</code> disponible dans <code>gmic</code>), pour traiter des lots d'images et des vidéos (<a href="https://www.youtube.com/watch?v=tf_fMzS3UyQ&feature=youtu.be">un exemple de vidéo « brushifiée »</a>).</p>
<h3 id="22-reconstruction-de-données-manquantes-à-partir-déchantillons-épars">2.2. Reconstruction de données manquantes à partir d'échantillons épars</h3>
<p><em>G'MIC</em> se dote d'une nouvelle fonctionnalité de reconstruction de données manquantes dans des images. Nous avons déjà évoqué ce problème classique de reconstruction en traitement d'images dans des dépêches précédentes (avec l'<em>inpainting</em> comme illustré <a href="//linuxfr.org/news/g-mic-1-6-8-c-est-deja-noel-pour-les-traiteurs-d-images#31-inpainting-reconstruction-dimage">ici</a> ou encore <a href="//linuxfr.org/news/g-mic-1-5-8-3-quelques-avancees-supplementaires-pour-le-traitement-d-image-libre#effet--repair--inpaint-patch-based">ici</a>). La nouvelle méthode d'interpolation ajoutée suppose quant à elle que l'on ne dispose que de <em>données connues éparses</em>, par exemple quelques pixels de couleurs dispersés ça et là dans l'image, plutôt que des blocs entiers de données contiguës connues. L'analyse et la reconstruction de la géométrie des structures présentes dans l'image devient alors un problème particulièrement difficile.</p>
<p>La nouvelle fonction <code>-solidify</code> de <em>G'MIC</em> permet de reconstruire des données images denses à partir de quelques points épars connus, en utilisant une technique de reconstruction multi-échelle basée sur les <a href="https://en.wikipedia.org/wiki/Diffusion_equation"><em>EDP</em></a> de diffusion. La figure ci-dessous illustre les capacités de cette méthode, avec un exemple de reconstruction d'une <a href="https://www.flickr.com/photos/jfrogg/5810936597/in/photolist-9Ruz12-oHDr6x-8VW83C-iM2cR1-oXCyji-nTGYXY-oavqFt-5emqwQ-8Qx6Nx-pkREpT-nYhS8D-najxb9-a3XHVZ-jUq3Aw-qGTeCo-r2yj33-pvci15-p7WnqP-ajPFM1-7SquY5-6busU-7B5iLy-9Av8Kr-4jZ6zq-b2anbD-c2LF73-aiQ5Ta-cdTWpb-ob7FJx-aohzY1-razwT3-p5rXdc-fCvsV3-4N8vKM-4Nhy4z-4HVUCr-eMUCnQ-bqJnaX-6CuzQd-qCYpsk-NzLkj-hYUtqE-oVbqnh-4H1DkM-r4ArWu-drpZHp-pHbCDL-8Zr8K1-xxf3Q9-e8dK5N">image de goutte d'eau</a>. On ne garde ici que 2,7% des données image (ce qui est vraiment peu !) et l'algorithme reconstruit une image entière, qui ressemble à celle d'origine (même si, bien entendu, tous les détails de l'image originale n'ont pas été reconstruits complètement). Plus on dispose d'échantillons, plus on est capable de reconstruire des détails.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f776174657264726f70322e676966/waterdrop2.gif" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/waterdrop2.gif"><br><em>Fig.2.2.1. Reconstruction d'une image à partir d'un échantillonnage épars.</em></p>
<p>Cette technique de reconstruction étant assez générique, plusieurs filtres différents se basant sur celle-ci ont pu être élaborés et ajoutés dans <em>G'MIC</em> :</p>
<ul>
<li>Le filtre <strong>Repair / Solidify</strong> permet d'appliquer l'algorithme de reconstruction de manière directe, en reconstruisant par interpolation les zones marquées comme transparentes dans les images d'entrées. L'animation ci-dessous montre l'application de ce filtre pour la réalisation d'un effet de flou artistique sur les bords d'une image.</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f736f6c2e676966/gmic_sol.gif" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_sol.gif"><br><em>Fig.2.2.2. Aperçu du filtre « Solidify » dans le greffon G'MIC pour GIMP.</em></p>
<p>D'un point de vue artistique, les possibilités de ce filtre sont nombreuses. Il est par exemple très utile pour générer simplement des dégradés de couleurs de formes complexes dans des images, comme le montre les deux exemples de la figure ci-dessous (ou encore <a href="https://www.youtube.com/watch?v=rgLQayllv-g">cette vidéo</a>, qui détaille le processus) </p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f736f6c6964696679322e6a7067/gmic_solidify2.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_solidify2.jpg"><br><em>Fig.2.2.3. Utilisation du filtre « Solidify » de G'MIC pour créer simplement des dégradés de couleurs aux structures géométriques complexes (images d'entrées à gauche, résultats du filtre à droite).</em></p>
<ul>
<li>Le filtre <strong>Artistic / Smooth abstract</strong> reprend le principe utilisé pour l'image de la goutte d'eau vu précédemment : il échantillonne une image de manière éparse, en plaçant des points clés préférentiellement sur les contours présents dans celle-ci, puis tente de reconstruire l'image entière à partir de ces échantillons seuls. Si le nombre d'échantillons est faible, le filtre va génèrer une image <em>continue par morceaux</em> qui peut donc être vue comme une abstraction lisse de l'image d'origine (voir la figure ci-dessous).</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f736d6f6f74685f61627374726163742e6a7067/smooth_abstract.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/smooth_abstract.jpg"><br><em>Fig.2.2.4. Aperçu du filtre « Smooth abstract » dans le greffon G'MIC pour GIMP.</em></p>
<ul>
<li>Le filtre <strong>Rendering / Gradient [random]</strong> permet quant à lui la création de fonds colorés. Le filtre plaçe des points de couleurs aléatoirement sur une image, et les interpole ensuite spatialement avec l'algorithme de reconstruction. On obtient facilement des fonds d'écrans psychédéliques composés de dégradés de couleurs qui partent dans toutes les directions (voir figure ci-dessous).</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f6772616469656e745f72616e646f6d2e6a7067/gradient_random.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gradient_random.jpg"><br><em>Fig.2.2.5. Aperçu du filtre « Gradient [random] » dans le greffon G'MIC pour GIMP.</em></p>
<ul>
<li>
<strong>Simulation de films argentiques</strong> : ce nouvel algorithme de reconstruction d'images à partir d'échantillons épars a également une grande utilité pour les nombreux filtres de simulation de films argentiques, présents dans <em>G'MIC</em> depuis quelques années déjà. La section <strong>Film emulation</strong> propose en effet un grand choix de filtres dont le but est d'appliquer des transformations colorimétriques, pour simuler le rendu qu'aurait eu une photo numérique si elle avait été prise avec un appareil argentique muni d'un certain type de pellicule. La figure ci-dessous montre par exemple quelques unes des <em>300</em> transformations colorimétriques qu'il est possible d'appliquer à partir de <em>G'MIC</em>.</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f636c7574312e6a7067/gmic_clut1.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_clut1.jpg"><br><em>Fig.2.2.6. Quelques unes des transformations colorimétriques disponibles dans G'MIC (parmi + de 300).</em></p>
<p>D'un point de vue algorithmique, ces algorithmes de transformation colorimétrique sont très simples à mettre en œuvre : on dispose pour chacune des 300 transformations d'une <a href="http://www.quelsolaar.com/technology/clut.html"><em>HaldCLUT</em></a>, c'est-à-dire d'une fonction définissant pour chaque couleur <em>(R,G,B)</em> des pixels de l'image originale, une nouvelle couleur <em>(R,G,B)</em> à attribuer aux pixels de l'image résultante. Cette fonction n'étant pas forcément analytique, une <em>HaldCLUT</em> est généralement stockée sous forme discrétisée, et donne donc le résultat de la transformation colorimétrique <em>pour toutes les couleurs possibles</em> du cube <em>RGB</em> (soit <em>2<sup>24</sup> = 16777216</em> valeurs si on travaille avec une précision de <em>8bits</em> par composante). La figure ci-dessous illustre la façon dont une transformation colorimétrique basée <em>HaldCLUT</em> s'applique sur l'ensemble des couleurs du cube <em>RGB</em>.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f636c7574302e6a7067/gmic_clut0.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_clut0.jpg"><br><em>Fig.2.2.7. Principe d'une transformation colorimétrique utilisant une HaldCLUT.</em></p>
<p>Autant dire que, même en sous-échantillonnant l'espace <em>RGB</em> (sur <em>6 bits</em> par composante par exemple) et en compressant sans perte le fichier de transformation colorimétrique correspondant, on se retrouve vite avec un fichier qui est relativement volumineux (entre <em>200</em> et <em>300</em> Kio par fichier). Multipliez ce nombre par <em>300</em> (le nombre de transformations colorimétriques disponibles dans <em>G'MIC</em>), et vous arrivez à un total de <em>85 Mio</em> environ pour stocker l'ensemble de ces transformations. Un peu lourd à diffuser pour de simples filtres de changement de couleurs !</p>
<p>L'idée était donc de développer une méthode de compression avec pertes qui pourrait s'adapter spécifiquement aux données de type <em>HaldCLUT</em>, c'est-à-dire à des fonctions volumiques discrétisées à valeurs vectorielles, qui sont par nature relativement lisses par morceaux. C'est donc ce qui a été fait, en se basant sur l'algorithme de reconstruction de données images à partir d'échantillons épars. Cet algorithme fonctionne en effet avec des données images pouvant être volumiques. Il suffit donc d'extraire un nombre suffisant de points-clés significatifs dans le cube <em>RGB</em> pour permettre la reconstruction d'une <em>HaldCLUT</em> entière, avec une erreur de reconstruction suffisamment faible pour que le résultat de la transformation colorimétrique résultante soit indistinguable de la transformation colorimétrique originale.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f636c7574322e6a7067/gmic_clut2.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_clut2.jpg"><br><em>Fig.2.2.8. Principe du codage et de la reconstruction d'une HaldCLUT à partir d'un nuage de points clés définit dans le cube RGB.</em></p>
<p>Donc, au lieu de stocker l'ensemble des couleurs d'une <em>HaldCLUT</em>, on n'en stocke plus qu'un sous-ensemble épars représenté par une liste de <em>{ point-clés, couleurs }</em>, et on laisse l'algorithme de reconstruction faire son travail pour regénérer la <em>HaldCLUT</em> entière, avant de l'appliquer sur l'image à modifier. Suivant la complexité des <em>HaldCLUTs</em> à appliquer, plus ou moins de points clés sont nécessaires (ça peut varier de <em>30</em> à <em>2000</em>). <br>
Résultat des courses : On passe de <em>85 Mio</em> pour le stockage des <em>300</em> <em>HaldCLUTs</em> de <em>G'MIC</em> à <em>850 Kio</em>, soit un gain de compression de <em>99%</em> ! D'un point de vue pratique, ce nouveau fichier décrivant toutes les <em>HaldCLUTs</em> compressées est facilement distribuable et installable avec le greffon, et un utilisateur peut donc appliquer toutes les transformations colorimétriques de <em>G'MIC</em> en restant <em>hors-ligne</em> (alors qu'auparavant, chaque <em>HaldClUT</em> était téléchargée lors de l'application d'une nouvelle transformation colorimétrique).</p>
<p>Ce nouvel algorithme de reconstruction d'images à partir d'échantillons épars a donc beaucoup d'intérêt, et nul doute qu'il sera réutilisé dans d'autres filtres prochainement.</p>
<h3 id="23-rendre-des-textures-périodiques">2.3. Rendre des textures périodiques</h3>
<p>Le filtre <strong>Arrays & tiles / Make seamless [patch-based]</strong> permet de transformer une texture d'entrée en la rendant <em>tuilable</em>, c'est-à-dire en permettant sa répétition sous forme de <em>tuiles</em> le long des axes horizontaux et verticaux, sans que l'on distingue de discontinuités visibles lorsque les bords de deux tuiles adjacentes sont mises bout à bout. C'est une opération qui peut s'avérer très difficile à réaliser si la texture d'entrée est complexe, par exemple avec peu d'auto-similarité, ou avec des changements de luminosités flagrants.<br>
C'est le cas de l'exemple illustré dans la figure ci-dessous, avec une texture <em>chair de saumon</em> présentée sous forme de 4 tuiles disposées en configuration <em>2x2</em>. L'éclairage de cette texture varie de gauche à droite (du plus sombre vers le plus clair). L'algorithme proposé permet ici de transformer la texture pour que le recollement devienne quasiment invisible. Notons que l'on cherche ici à préserver la texture d'entrée le plus possible, contrairement à l'algorithme de <a href="//linuxfr.org/news/g-mic-1-6-8-c-est-deja-noel-pour-les-traiteurs-d-images#32-re-synth%C3%A8se-de-textures">re-synthèse de texture</a> qui était déja disponible, et qui cherchait plutôt à recréer de toute pièces une instance aléatoire d'une texture de taille quelconque ayant les mêmes caractéristiques que la texture modèle. Essayez de réaliser ceci manuellement, et vous vous rendrez compte de la difficulté du problème (qui pourrait paraître simple au premier abord).</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f7365616d6c657373312e676966/seamless1.gif" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/seamless1.gif"><br><em>Fig.2.3.1. Aperçu du filtre « Make Seamless » du greffon G'MIC pour GIMP, pour rendre des textures tuilables.</em></p>
<p>À noter que la création de ce nouveau filtre d'aide au tuilage a été suggérée par <a href="//linuxfr.org/users/rewind">rewind</a> dans <a href="//linuxfr.org/nodes/107604/comments/1634699">les commentaires</a> de la dépêche précédente sur G'MIC ! Les grands esprits se rencontrent sur <em>LinuxFr.org</em> :)<br>
On peut imaginer de belles applications à ce type de filtres, notamment dans le domaine du jeu vidéo où tuiler des textures pour créer de grands mondes virtuels est monnaie courante. Un autre exemple de tuilage d'une texture complexe de mousse en (tuilage <em>2x2</em>) est présenté dans l'animation ci-dessous.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f7365616d6c657373322e676966/seamless2.gif" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/seamless2.gif"><br><em>Fig.2.3.2. Résultat du filtre « Make seamless » de G'MIC pour rendre tuilable une texture de mousse.</em></p>
<h3 id="24-décomposition-dune-image-en-niveaux-de-détails">2.4. Décomposition d'une image en niveaux de détails</h3>
<p>Un nouveau filtre de décomposition d'image en plusieurs niveaux de détails nommé <strong>Details / Split details [wavelets]</strong> a également été ajouté. Il implémente un algorithme de décomposition en ondelettes à trous. Pour les connaisseurs, c'est exactement le même algorithme que celui qui est proposé dans le greffon populaire <a href="http://registry.gimp.org/node/11742"><em>Wavelet Decompose</em></a> pour <em>GIMP</em>, avec ici en plus, une prévisualisation des échelles de détails et une implémentation parallélisée, tirant parti du multi-coeurs. La figure ci-dessous illustre son action sur un portrait. L'application de ce filtre décompose une image en plusieurs calques de sortie, de telle manière à ce que chaque calque contienne les détails de l'image à une échelle donnée, et que l'ensemble de ces calques de sortie superposés redonne bien évidemment le rendu de l'image d'origine.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f776176656c6574732e6a7067/gmic_wavelets.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_wavelets.jpg"><br><em>Fig.2.4.1. Aperçu du filtre de décomposition d'image par ondelettes dans le greffon G'MIC pour GIMP.</em></p>
<p>On peut ainsi travailler sur chaque calque séparément, et ne modifier les détails de l'image que pour une échelle donnée. Il y a de nombreuses applications à ce type de décomposition, l'une des plus spectaculaires étant la possibilité de retoucher la peau dans des photos de portraits : les imperfections de la peau se retrouvent généralement sur les calques correspondant à des échelles de détails <em>moyens</em>, alors que la texture naturelle de la peau (les pores) se retrouvent sur les échelles de détails <em>fins</em>, et on peut donc sélectivement effacer les imperfections tout en conservant une texture de peau naturelle après retouche (voir l'animation ci-dessous ou encore <a href="http://blog.patdavid.net/2011/12/getting-around-in-gimp-skin-retouching.html">ce lien</a> pour un tutoriel détaillé de la procédure, en utilisant <em>GIMP</em>).<br>
Vous avez sans doute déjà vu des photos publicitaires de mannequins ayant une peau exagérément lisse (façon poupée barbie). Dans ce cas, vous savez maintenant que l'infographiste responsable a vraiment fait une retouche de goret ! (le bien-fondé de l'utilité de telles retouches est un autre débat dans lequel on ne se risquera pas ici).</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f736b696e2e676966/skin.gif" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/skin.gif"><br><em>Fig.2.4.2. Un exemple d'utilisation du filtre de décomposition d'image en ondelettes, pour la retouche réaliste de la peau sur un portrait (suppression des imperfections).</em></p>
<h3 id="25-débruitage-dimages-par-méthode-patch-pca">2.5. Débruitage d'images par méthode « Patch-PCA »</h3>
<p><em>G'MIC</em> est aussi connu pour posséder de nombreux algorithmes variés de <em>débruitage</em> et de <em>lissage</em> d'images (plus d'une quinzaine à ce jour). Et bien, il en a maintenant un de plus ! <strong>Repair / Smooth [patch-pca]</strong> est un nouvel algorithme de débruitage d'image performant, basé <a href="https://fr.wikipedia.org/wiki/Patch"><em>patch</em></a> qui a été ajouté à <em>G'MIC</em>. C'est un algorithme parallélisé, mais <em>très coûteux</em> en temps de calcul (probablement à éviter sur des machines à moins de 8 coeurs…). En contrepartie, il est capable de débruiter certaines images de façon parfois spectaculaire, en supprimant le bruit et préservant les détails de l'image, comme l'illustre la figure ci-dessous, avec une image contenant un niveau de bruit assez important. (En passant, merci à <a href="http://umr144.curie.fr/fr/profile/j-r-me-boulanger-002161">Jérome Boulanger</a> pour ses conseils d'expert sur ce sujet).</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f70617463687063612e6a7067/patchpca.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/patchpca.jpg"><br><em>Fig.2.5.1. Résultat du nouvel algorithme de débruitage d'image basé « patch » de G'MIC</em>.</p>
<h3 id="26-effet-droste--la-mise-en-abyme-continue">2.6. Effet « Droste » : la mise en abyme continue</h3>
<p><a href="https://en.wikipedia.org/wiki/Droste_effect">L'effet Droste</a> (aussi appelé <em>mise en abyme</em>) du nom de la marque de cacao ayant utilisé cet effet dans une de ses publicités, consiste à dessiner une partie de l'image dans elle-même, et ceci de manière récursive. Un filtre <strong>Deformations / Continuous droste</strong> a été récemment ajouté à <em>G'MIC</em>, mais n'a en réalité rien de très nouveau puisque c'est « juste » une réécriture complète du <a href="https://www.flickr.com/groups/88221799@N00/discuss/72157601071820707/">filtre Droste</a> qui était déjà disponible dans le greffon <a href="https://www.complang.tuwien.ac.at/schani/mathmap/"><em>Mathmap</em></a> depuis quelques années. <em>Mathmap</em> était un greffon populaire pour <em>GIMP</em>, mais il ne semble plus évoluer, ni même maintenu, et l'effet Droste était l'un de ses filtres les plus complexes et les plus emblématiques. <em>Martin « Souphead »</em>, un ancien utilisateur de <em>Mathmap</em> a donc pris le taureau par les cornes et s'est attelé à la conversion de ce filtre pour <em>G'MIC</em>. L'intérêt c'est qu'au passage, l'implémentation devient parallélisée. Pour celles et ceux intéressés par les aspects mathématiques de l'effet <em>Droste</em>, on ne peut que recommander la lecture de <a href="http://images.math.cnrs.fr/L-effet-Droste.html">cette page didactique</a> rédigée par un chercheur du <em>CNRS</em>, page qui contient des résultats amusants de création de séquences périodiques d'images utilisant cette effet.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f64726f737465302e6a7067/droste0.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/droste0.jpg"><br><em>Fig.2.6.1. Aperçu du nouveau filtre « Droste » pour la création d'une mise en abyme, dans le greffon G'MIC pour GIMP.</em></p>
<p>Avec ce filtre, tous les délires artistiques sont permis. Il est par exemple trivial de créer en quelques clics de souris le résultat présenté dans la figure ci-dessous : il suffit de détourer l'horloge, de rendre le fond transparent, et d'appliquer le filtre <em>Droste</em> de <em>G'MIC</em>, <em>et voilà</em> ! (à ne pas montrer aux gens stressés par le temps qui passe…).</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f64726f737465322e6a7067/droste2.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/droste2.jpg"><br><em>Fig.2.6.2. Exemple de transformation d'image possible avec le filtre « Droste » de G'MIC.</em></p>
<h3 id="27-transformation-équirectangulaire---zénithnadir">2.7. Transformation équirectangulaire <-> zénith/nadir</h3>
<p>Le filtre <strong>Deformations / Equirectangular to nadir-zenith</strong> est également un filtre initialement disponible dans <em>Mathmap</em> et qui a été transposé pour <em>G'MIC</em>. C'est un filtre utilisé dans le domaine assez restreint du traitement d'images de panoramas utilisant une <a href="https://fr.wikipedia.org/wiki/Projection_cylindrique_%C3%A9quidistante">projection cylindrique équidistante</a>. Un tel panorama est en général obtenu comme la fusion de plusieurs photographies prises à des angles différents, la fusion étant effectuée de manière algorithmique (par exemple avec le logiciel libre <a href="http://hugin.sourceforge.net/">Hugin</a>). Lors de la fusion, il est très fréquent que des pans entiers d'images manquent dans le panorama généré, notamment au niveau des vues de dessus et de dessous (le <a href="https://fr.wikipedia.org/wiki/Z%C3%A9nith_(astronomie)"><em>zénith</em></a> et le <a href="https://fr.wikipedia.org/wiki/Nadir_(astronomie)"><em>nadir</em></a>, voir un exemple dans la figure ci-dessous).</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f7a656e697468302e6a7067/zenith0.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/zenith0.jpg"><br><em>Fig.2.7.1. Panorama obtenu par outil de fusion d'image. Certaines parties de l'image (zénith et nadir) sont manquantes.</em></p>
<p>Il est souhaitable de pouvoir resynthétiser l'information manquante dans ces zones. Mais comment faire ? La déformation induite par la projection cylindrique équidistante fait que la reconstruction directe est difficile dans ces zones (l'utilisation de l'outil de <a href="https://docs.gimp.org/fr/gimp-tool-clone.html"><em>clonage</em></a> n'est pas adapté par exemple). C'est là que le filtre de <em>G'MIC</em> intervient, en permettant de recréer des vues <em>applaties</em> du zénith et du nadir.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f7a656e697468312e6a7067/zenith1.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/zenith1.jpg"><br><em>Fig.2.7.2. Récupération des vues applaties du zénith et du nadir de l'image précédente, grâce au filtre G'MIC du greffon pour GIMP.</em></p>
<p>Une fois ces vues calculées, il devient plus facile de boucher les trous, en utilisant par exemple un filtre de reconstruction de type <em>Inpainting</em> ou l'outil de clonage si on préfère faire ça manuellement.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f7a656e697468322e6a7067/zenith2.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/zenith2.jpg"><br><em>Fig.2.7.3. Rebouchage des trous, par une technique quelconque (« inpainting » ou outil de « clonage » par exemple).</em></p>
<p>Il suffit ensuite d'invoquer ce même filtre, en inversant cette fois la transformation, et de réinsérer les zénith/nadir reconstruits dans l'image panorama originale, et le tour est joué. On obtient une belle image panorama complète (voir figure ci-dessous). Notez comme la déformation de l'image est importante dans ces zones, et comment il aurait été difficile de reboucher les trous en agissant directement sur l'image du panorama original.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f7a656e697468332e6a7067/zenith3.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/zenith3.jpg"><br><em>Fig.2.7.4. Application de la transformation inverse, et insertion dans le panorama d'origine.</em></p>
<p>Les images présentées dans cette section ont été aimablement fournies par <a href="https://plus.google.com/u/0/b/117441237982283011318/115320419935722486008/posts"><em>Morgan Hardwood</em></a>. <em>Morgan</em> a d'ailleurs écrit un tutoriel détaillé sur cette technique de rebouchage d'images de panoramas, qui est <a href="https://discuss.pixls.us/t/panography-patching-the-zenith-and-nadir/585">consultable ici</a>.</p>
<h2 id="3-autres-améliorations-et-faits-notables">3. Autres améliorations et faits notables</h2>
<p>Pour finir, voici en vrac quelques points marquants concernant le développement du projet <em>G'MIC</em> :</p>
<ul>
<li>Le filtre <strong>Rendering / Kitaoka Spin Illusion</strong> est une autre conversion d'un filtre <em>Mathmap</em> réalisé par <em>Martin « Souphead »</em>. Il permet de générer un certain type d'<a href="http://www.ritsumei.ac.jp/%7Eakitaoka/index-e.html">illusions d'optiques</a> comme le montre la figure ci-dessous (si vous êtes épileptiques, un conseil, fermez les yeux !)</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f7370696e322e6a7067/spin2.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/spin2.jpg"><br><em>Fig.3.1. Résultat du filtre « Kitaoka Spin Illusion ».</em></p>
<ul>
<li>Le filtre <strong>Colors / Color blindness</strong> transforme une image en simulant différents types de <a href="https://fr.wikipedia.org/wiki/Daltonisme">daltonisme</a>. Ce filtre peut être utile pour tester l'accessibilité de sites ou de documents graphiques aux daltoniens. Nous avons repris les transformations colorimétriques dont le lien apparaît sur le site <a href="http://www.color-blindness.com/coblis-color-blindness-simulator/"><em>Coblis</em></a>, site qui propose également ce genre de simulation, en ligne. Les résultats obtenus avec le filtre <em>G'MIC</em> sont donc à priori strictement identiques, mais peuvent s'effectuer facilement sur des lots d'images par exemple.</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f63622e6a7067/gmic_cb.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_cb.jpg"><br><em>Fig.3.2. Aperçu du filtre de simulation de différents types de daltonisme dans le greffon G'MIC pour GIMP.</em></p>
<ul>
<li>Depuis quelques années maintenant, <em>G'MIC</em> intègre un évaluateur d'expressions mathématiques, très commode pour réaliser des calculs lors de l'application de filtres (nous en avions d'ailleurs déjà longuement parlé <a href="//linuxfr.org/news/g-mic-1-6-8-c-est-deja-noel-pour-les-traiteurs-d-images#4-un-%C3%A9valuateur-dexpressions-plus-performant">lors de la dépêche précédente</a>). Cet évaluateur d'expression se dote de nouvelles fonctionnalités intéressantes, en particulier la possibilité de faire du calcul avec des variables de type complexe, vectoriel ou matriciel, mais aussi de créer ses propres fonctions mathématiques personnalisées. Par exemple, l'implémentation classique du rendu de <a href="https://fr.wikipedia.org/wiki/Ensemble_de_Mandelbrot">l'ensemble de <em>Mandelbrot</em></a>, réalisé en estimant la convergence d'une suite complexe, peut s'écrire directement de la façon suivante en ligne de commande:</li>
</ul><pre><code class="sh"><span class="nv">$ </span>gmic 512,512,1,1,<span class="s2">"c = 2.4*[x/w,y/h] - [1.8,1.2]; z = [0,0]; for (iter = 0, cabs(z)<=2 && ++iter<256, z = z**z + c); 6*iter"</span> -map 7,2</code></pre>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f6d616e642e6a7067/gmic_mand.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_mand.jpg"><br><em>Fig.3.3. Utilisation de l'évaluateur d'expression mathématiques de G'MIC pour calculer un rendu de l'ensemble de Mandelbrot.</em></p>
<p>Les possibilités de calcul en sont grandement développée, puisque l'on n'est plus limité à l'utilisation de variables scalaires, mais qu'on peut définir des filtres qui, pour chaque pixel d'une image d'entrée, vont pouvoir effectuer rapidement des résolutions de systèmes linéaires ou encore des décompositions en valeurs propres/vecteurs propres. C'est un peu comme si on disposait d'un mini-(mini)-<a href="https://www.gnu.org/software/octave/"><em>Octave</em></a> à l'intérieur de <em>G'MIC</em>. Le filtre <em>Brushify</em> décrit plus haut utilise d'ailleurs de manière intensive ces nouvelles possibilités. À noter que cet évaluateur d'expression possède son propre <a href="https://fr.wikipedia.org/wiki/Compilation_%C3%A0_la_vol%C3%A9e"><em>JIT</em></a> pour accélérer le calcul d'une expression lorsqu'elle est réalisée sur plusieurs milliers de valeurs simultanément.</p>
<ul>
<li>Une autre contribution technique importante a été apportée par <a href="https://plus.google.com/+TobiasFleischer/posts"><em>Tobias Fleischer</em></a>, avec la création d'une <a href="https://fr.wikipedia.org/wiki/Interface_de_programmation"><em>API</em></a> <em>C</em> pour appeler les fonctions de la bibliothèque <a href="http://gmic.eu/libgmic.shtml"><em>libgmic</em></a> (bibliothèque des fonctionnalités de <em>G'MIC</em> possédant initialement une <em>API</em> <em>C++</em>). Comme l'<a href="https://fr.wikipedia.org/wiki/Application_binary_interface"><em>ABI</em></a> <em>C</em> est standardisée (contrairement à celle du <em>C++</em>), <em>G'MIC</em> peut donc plus facilement s'interfaçer avec d'autres langages que le <em>C++</em>. On peut par exemple imaginer dans le futur la création d'<em>APIs</em> <em>G'MIC</em> pour des langages, comme <em>Python</em>. En passant : si quelqu'un est motivé pour réaliser ce genre de choses, qu'il n'hésite surtout pas à nous contacter ! <em>Tobias</em> utilise actuellement cette nouvelle <em>API</em> <em>C</em> pour développer des greffons basés sur <em>G'MIC</em> respectant l'<em>API</em> <a href="https://en.wikipedia.org/wiki/OpenFX_%28API%29"><em>OpenFX</em></a>. Ces greffons devraient donc être utilisables indifféremment dans des logiciels d'édition vidéo comme <a href="https://fr.wikipedia.org/wiki/Adobe_After_Effects">After effects</a>, <a href="https://fr.wikipedia.org/wiki/Sony_Vegas_Pro">Sony Vegas Pro</a> ou encore <a href="http://www.natron.fr/">Natron</a> (voir figure ci-dessous). C'est un travail qui est toujours en cours.</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f6e6174726f6e2e6a7067/gmic_natron.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_natron.jpg"><br><em>Fig.3.3. Aperçu des greffons OpenFX basés sur G'MIC, tournant sous Natron.</em></p>
<ul>
<li>Un autre contributeur <a href="https://github.com/Starfall-Robles"><em>Robin « Starfall Robles »</em></a> a initié le développement d'un <a href="https://github.com/Starfall-Robles/Blender-2-G-MIC">script Python</a> permettant <a href="http://www.blendernation.com/2016/04/27/creative-imagery-blender-2-gmic/">d'intégrer des fonctionnalités de <em>G'MIC</em> dans <em>Blender</em></a>
(plus précisément dans son éditeur de séquence vidéo <em>VSE</em>). Ce script très récent, toujours en cours de développement, permet déjà d'appliquer différents effets <em>G'MIC</em> sur des séquences d'images, comme vous pouvez le voir sur la figure ci-dessous (et sur <a href="https://www.youtube.com/watch?v=TSzoEXAV1zs">cette vidéo de démonstration</a>).</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f626c656e646572322e6a7067/gmic_blender2.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_blender2.jpg"><br><em>Fig.3.4. Aperçu du script d'interfaçage G'MIC fonctionnant dans le VSE de Blender.</em></p>
<ul>
<li>Certaines fonctionnalités de <em>G'MIC</em> ont également fait leur apparition dans le logiciel de montage vidéo non-linéaire <a href="https://github.com/jliljebl/flowblade"><em>Flowblade</em></a>, grâce au travail acharné de <a href="https://plus.google.com/u/0/b/117441237982283011318/102624418925189345577/posts"><em>Janne Liljeblad</em></a> son programmeur principal (voir figure ci-dessous). Là encore, le but est de permettre d'appliquer des effets <em>G'MIC</em> sur des séquences d'images dans un but essentiellement artistique, comme le montre <a href="https://vimeo.com/157364651">cette vidéo</a>, ou encore <a href="https://vimeo.com/164331676">celle-ci</a>.</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672332f676d69635f666c6f77626c6164652e6a7067/gmic_flowblade.jpg" alt="img" title="Source : https://tschumperle.users.greyc.fr/lfr3/gmic_flowblade.jpg"><br><em>Fig.3.5. Aperçu d'un filtre G'MIC tournant sous Flowblade, éditeur non-linéaire de vidéos.</em></p>
<ul>
<li>Notons également que de plus en plus de ressources extérieures faisant mention de <em>G'MIC</em> font leur apparition sur la toile : des tutoriaux et des articles de blog (<a href="https://discuss.pixls.us/t/fourier-transform-for-fixing-regular-pattern-noise/586">ici</a>, <a href="https://paulsphotopalace.wordpress.com/the-color-mixers-3/">ici</a>, <a href="http://lapizybits.blogspot.com/2015/12/efecto-esbozo.html">ici</a>…), ou encore des vidéos de démonstrations (<a href="https://www.youtube.com/watch?v=YjqMT7Mn2ac">ici</a>, <a href="https://www.youtube.com/watch?v=VPG1dkPlyvo">ici</a>, <a href="https://www.youtube.com/watch?v=N3KqWTmkgB8">ici</a>, <a href="https://www.youtube.com/watch?v=w6Sr1nO5gFo">ici</a>…). C'est très positif pour la visibilité du projet, et en même temps cela fait vraiment plaisir à voir. Merci donc à tout ces gens qui prennent le temps d'en parler de manière bénévole et désintéressée !</li>
</ul><h2 id="4-comment-tout-cela-va-évoluer">4. Comment tout cela va évoluer ?</h2>
<p>Quelques petites observations :</p>
<ul>
<li>Comme vous pouvez le constater, le développement du projet <em>G'MIC</em> se poursuit à un rythme soutenu. Ses fonctionnalités semblent intéresser de plus en plus d'utilisateurs (ce que confirme les statistiques de visites/téléchargements du site web), mais aussi de plus en plus de développeurs : aujourd'hui, on retrouve des intégrations ou des greffons (plus ou moins aboutis) basés sur <em>G'MIC</em> dans des logiciels libres aussi divers que <a href="http://www.gimp.org"><em>GIMP</em></a>, <a href="https://krita.org/"><em>Krita</em></a>, <a href="https://www.blender.org/"><em>Blender</em></a>, <a href="https://aferrero2707.github.io/PhotoFlow/"><em>Photoflow</em></a>, <a href="https://github.com/jliljebl/flowblade"><em>Flowblade</em></a>, <a href="http://veejayhq.net/">Veejay</a>, <a href="http://ekd.tuxfamily.org/"><em>EKD</em></a> et dans un futur proche (du moins on l'espère) <a href="http://natron.fr/"><em>Natron</em></a>.</li>
<li>L'un ne va probablement pas sans l'autre : le fait d'avoir des utilisateurs nous encourage à ajouter de nouvelles fonctionnalités régulièrement, ce qui attire aussi de nouveaux utilisateurs. Tant que ça fonctionne de cette façon, on essayera de continuer ! Car notons tout de même que tout ceci demande pas mal de temps (pour ma part, entre <em>10</em> et <em>15</em> heures par semaine <em>en dehors</em> de mes heures officielles de travail).</li>
<li>Tout ça pour redire un grand merci aux utilisateurs et aux contributeurs (toujours plus nombreux), aux curieux et à ceux qui font de la publicité au projet directement ou indirectement. Ça aide énormément !</li>
</ul><p>En réalité, on ne sait pas encore comment le projet <em>G'MIC</em> va évoluer dans le futur, mais il y a déjà tellement de choses à faire dans le présent qu'on se concentre dessus pour le moment. On vous donne peut-être rendez vous dans quelques mois pour la suite des aventures de <em>G'MIC</em>. On vous invite également à rejoindre la communauté présente sur notre forum officiel sur <a href="https://discuss.pixls.us/c/software/gmic">pixls.us</a> pour obtenir plus de renseignements et répondre à vos questions sur le projet. Et surtout, en attendant, n'hésitez pas à vous mettre au traitement d'images <strong>libre</strong> !</p></div><div><a href="https://linuxfr.org/news/g-mic-1-7-1-quand-les-fleurs-bourgeonnent-les-filtres-d-images-foisonnent.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/108881/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/g-mic-1-7-1-quand-les-fleurs-bourgeonnent-les-filtres-d-images-foisonnent#comments">ouvrir dans le navigateur</a>
</p>
David TschumperléclaudexteoBBenoît SibaudChristophe TurboutZeroHeurehttps://linuxfr.org/nodes/108881/comments.atomtag:linuxfr.org,2005:News/369472015-12-11T09:54:31+01:002015-12-19T15:58:02+01:00G’MIC 1.6.8 : c’est déjà Noël pour les traiteurs d’images !Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>La version <strong>1.6.8</strong> <em>« X-Mas 2015 Edition »</em> de <a href="http://gmic.eu"><em>G’MIC</em></a> (<em>GREYC’s Magic for Image Computing</em>), infrastructure libre pour le traitement d’images, a été publiée lundi 7 décembre 2015. C’est l’occasion de vous présenter les avancées et les nouveautés introduites dans ce logiciel depuis <a href="//linuxfr.org/news/g-mic-1-6-2-0-colorisation-de-bd-transfert-de-couleurs-aide-au-detourage-et-autres-rejouissances">la dernière dépêche <em>LinuxFr.org</em></a> sur ce sujet, rédigée pour la sortie de la version 1.6.2.0, il y a de cela huit mois environ. Sept versions se sont succédées depuis.</p>
<p>La deuxième partie de la dépêche détaille les quelques nouveautés introduites dans le <a href="http://gmic.eu/gimp.shtml">greffon <em>G’MIC</em></a> pour <a href="http://www.gimp.org">GIMP</a>, qui reste l’interface de <em>G’MIC</em> la plus utilisée aujourd’hui. Mais elle présente aussi quelques évolutions majeures plus techniques du <em>framework</em>, qui ont déjà permis d’élaborer de nouveaux effets intéressants, et qui promettent surtout de belles choses pour l’avenir.</p></div><ul><li>lien nᵒ 1 : <a title="http://gmic.eu" hreflang="en" href="https://linuxfr.org/redirect/95858">Le projet G’MIC</a></li><li>lien nᵒ 2 : <a title="http://gmic.eu/gimp.shtml" hreflang="en" href="https://linuxfr.org/redirect/95859">Le greffon G’MIC pour GIMP</a></li><li>lien nᵒ 3 : <a title="http://gmic.eu/tutorial/basics.shtml" hreflang="en" href="https://linuxfr.org/redirect/95860">Initiation à G’MIC en ligne de commande</a></li><li>lien nᵒ 4 : <a title="http://gmic.eu/reference.shtml" hreflang="en" href="https://linuxfr.org/redirect/95861">Documentation technique de référence</a></li><li>lien nᵒ 5 : <a title="https://discuss.pixls.us/c/software/gmic" hreflang="en" href="https://linuxfr.org/redirect/95862">Forum de discussions autour de G’MIC</a></li><li>lien nᵒ 6 : <a title="http://linuxfr.org/tags/gmic/public" hreflang="fr" href="https://linuxfr.org/redirect/95863">Précédents articles LinuxFr.org sur G’MIC</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#1-le-projet-gmic">1. Le projet <em>G’MIC</em></a></li>
<li>
<a href="#2-am%C3%A9liorations-propres-au-greffon-gmic-pour-gimp">2. Améliorations propres au greffon <em>G’MIC</em> pour GIMP</a><ul>
<li><a href="#21-importation-et-exportation-via-les-tampons-gegl">2.1. Importation et exportation via les tampons <em>GEGL</em></a></li>
<li><a href="#22-prise-en-charge-de-lutf-8-dans-les-widgets">2.2. Prise en charge de l’UTF-8 dans les <em>widgets</em></a></li>
<li><a href="#23-une-interface-plus-r%C3%A9active">2.3. Une interface plus réactive</a></li>
</ul>
</li>
<li>
<a href="#3-ajout-de-lalgorithme-patchmatch">3. Ajout de l’algorithme <em>Patchmatch</em></a><ul>
<li><a href="#31-inpainting-reconstruction-dimage">3.1. <em>Inpainting</em> : reconstruction d’image</a></li>
<li><a href="#32-re-synth%C3%A8se-de-textures">3.2. Re-synthèse de textures</a></li>
</ul>
</li>
<li><a href="#4-un-%C3%A9valuateur-dexpressions-plus-performant">4. Un évaluateur d’expressions plus performant</a></li>
<li><a href="#5-vector-painting-un-exemple-de-construction-dun-filtre-simple-en-partant-de-z%C3%A9ro">5. <em>Vector Painting</em> : Un exemple de construction d’un filtre simple, en partant de zéro.</a></li>
<li><a href="#6-des-filtres-et-effets-%C3%A0-foison">6. Des filtres et effets à foison !</a></li>
<li><a href="#7-autres-am%C3%A9liorations-et-faits-notables">7. Autres améliorations et faits notables</a></li>
<li><a href="#8-et-ensuite">8. Et ensuite ?</a></li>
</ul><h2 id="1-le-projet-gmic">1. Le projet <em>G’MIC</em>
</h2>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f6c6f676f5f676d69633136382e706e67/logo_gmic168.png" alt="Mascotte et logo du projet G'MIC, framework libre pour le traitement d'image" title="Source : http://tschumperle.users.greyc.fr/lfr2/logo_gmic168.png"><br><em>Fig .1.1. Mascotte et logo du projet G’MIC, framework libre pour le traitement d’images.</em></p>
<p><em>G’MIC</em> est un projet libre ayant vu le jour en août 2008, dans l’équipe <a href="https://www.greyc.fr/image"><em>IMAGE</em></a> du laboratoire <a href="https://www.greyc.fr/"><em>GREYC</em></a> (Unité Mixte de Recherche du <a href="http://www.cnrs.fr"><em>CNRS</em></a> située à Caen). Cette équipe est composée essentiellement d’enseignants‐chercheurs et de chercheurs travaillant dans le domaine du traitement d’images (ça c’est une sacrée coïncidence !). Le projet est distribué sous licence libre <a href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-fr.txt"><em>CeCILL</em></a>.<br><em>G’MIC</em> fournit plusieurs interfaces utilisateur pour la manipulation de données images <em>génériques</em>, à savoir des images ou des séquences d’<a href="https://en.wikipedia.org/wiki/Hyperspectral_imaging">images hyperspectrales</a> 2D ou 3D à valeurs flottantes, ce qui inclut bien évidemment les images couleur classiques. Son interface la plus utilisée aujourd’hui est <a href="http://gmic.eu/gimp.shtml">un greffon</a> disponible pour le logiciel <a href="http://www.gimp.org"><em>GIMP</em></a> (qu’on peut qualifier de relativement « populaire », il comptabilise déjà plus de deux millions de téléchargements à ce jour).</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f67696d703136382e6a7067/gmic_gimp168.jpg" alt="Aperçu du greffon G’MIC pour GIMP" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_gimp168.jpg"><br><em>Fig. 1.2. Aperçu du greffon G’MIC pour GIMP.</em></p>
<p><em>G’MIC</em> propose également une interface en <a href="http://gmic.eu/reference.shtml">ligne de commande</a>, semblable aux outils <em>CLI</em> proposés par <a href="http://www.imagemagick.org/"><em>ImageMagick</em></a> ou <a href="http://www.graphicsmagick.org"><em>GraphicsMagick</em></a>, qui permet de bien profiter de toutes ses capacités. Il existe aussi un service web <a href="https://gmicol.greyc.fr/"><em>G’MIC Online</em></a> pour appliquer des effets sur vos images directement à partir d’un navigateur (qui a été réactualisé d’ailleurs). D’autres interfaces basées sur <em>G’MIC</em> sont développées (<a href="https://www.youtube.com/watch?v=k1l3RdvwHeM"><em>ZArt</em></a>, un greffon pour <a href="http://www.krita.org"><em>Krita</em></a>, des filtres pour <a href="http://photoflowblog.blogspot.fr/"><em>Photoflow</em></a>…) mais celles‐ci restent pour le moment plus confidentielles.<br>
Toutes ces interfaces se basent sur la bibliothèque <em>C++</em> <a href="http://gmic.eu/libgmic.shtml"><em>libgmic</em></a> qui est portable, à multiples fils d’exécution — <a href="https://fr.wikipedia.org/wiki/Thread_%28informatique%29"><em>multi‐thread</em></a> — et <a href="https://fr.wikipedia.org/wiki/Thread_safety"><em>thread-safe</em></a>, via notamment l’utilisation d’<a href="http://openmp.org/"><em>OpenMP</em></a>. La bibliothèque <em>libgmic</em> est elle‐même basée sur <a href="http://cimg.eu"><em>CImg</em></a>, une bibliothèque <em>C++</em> de traitement d’images générique plus « bas niveau », qui est développée dans la même équipe et qui existe depuis 1999 (et qui sort de façon synchronisée également en version 1.6.8). La bibliothèque <em>libgmic</em> implémente toutes les fonctions de calcul sur les images, et embarque son propre langage de script permettant aux utilisateurs avancés d’y ajouter leurs fonctions personnalisées de traitement d’images.</p>
<p>Aujourd’hui, <em>G’MIC</em> interprète plus de <a href="http://gmic.eu/reference.shtml">900 commandes</a> de traitement différentes, toutes paramétrables, pour une bibliothèque d’environ 5,5 Mio correspondant à un peu plus de 100 000 lignes de code source. Ces commandes couvrent un large spectre du traitement d’images, en proposant des algorithmes pour la manipulation géométrique, les changements colorimétriques, le filtrage d’images (débruitage, rehaussement de détails par méthodes spectrales, variationnelles, non locales…), l’estimation de mouvement ou le recalage, l’affichage de primitives (y compris des objets 3D maillés), la détection de contours ou la segmentation, le rendu artistique, etc. C’est donc un outil très générique aux usages variés, très utile d’une part pour convertir, visualiser et explorer des données images, et d’autre part pour construire des <em>pipelines</em> personnalisés et élaborés de traitements d’images.</p>
<p>Pour en apprendre un peu plus sur les motivations et les buts du projet <em>G’MIC</em>, on ne peut que conseiller d’aller feuilleter <a href="http://issuu.com/dtschump/docs/gmic_slides">le diaporama de présentation du projet</a> qui ont été mis à jour récemment et qui contiennent de nombreux exemples de choses qu’il est possible de réaliser avec cette boîte à outils.</p>
<p>Les contributeurs principaux sont également présents pour discuter via le <a href="https://discuss.pixls.us/c/software/gmic">nouveau forum</a> ou sur le canal IRC associé <code>#pixls.us</code> sur <a href="https://freenode.net/">Freenode</a>.</p>
<h2 id="2-améliorations-propres-au-greffon-gmic-pour-gimp">2. Améliorations propres au greffon <em>G’MIC</em> pour GIMP</h2>
<p>Trois améliorations notables ont été apportées à l’interface du greffon <em>G’MIC</em> pour GIMP. Nous allons les détailler dans cette section.</p>
<h3 id="21-importation-et-exportation-via-les-tampons-gegl">2.1. Importation et exportation via les tampons <em>GEGL</em>
</h3>
<p>Le greffon est maintenant capable d’importer et exporter les données images de et vers <em>GIMP</em> en passant par les tampons <a href="http://www.gegl.org"><em>GEGL</em></a> qui forment la base de la version de développement 2.9 de <em>GIMP</em>. En pratique, cela signifie que le greffon peut travailler avec des images à grande profondeur de bits (par exemple avec des pixels stockés sous forme de flottants 32 bits par canal, à ne pas confondre avec des images au contenu pornographique !), et ceci sans aucune perte de précision.</p>
<p>En réalité, l’application d’un filtre seul sur une image va rarement avoir des conséquences visuelles graves dues au seul fait de la quantification de l’image traitée en 8 bits par canal. Mais tous ceux qui appliquent de nombreux filtres et effets, les uns à la suite des autres sur une même image, apprécieront que la précision numérique maximale soit conservée lors de leur flux de travail (<em>workflow</em>).</p>
<p>L’animation ci‐dessous (<em>Fig. 2.1</em>) illustre le phénomène de quantification subtil qui apparaît lorsque l’on applique certains types de filtres sur une image (ici un filtre de lissage anisotrope).</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f626c75725f636f6d702e676966/gmic_blur_comp.gif" alt="Comparaison de l’application d’un même filtre G’MIC sur une image en 8 bits et en 32 bits par canal" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_blur_comp.gif"><br><em>Fig. 2.1. Comparaison de l’application d’un même filtre G’MIC sur une image en 8 bits et en 32 bits par canal.</em></p>
<p>Sur la droite de la figure 2.1, on aperçoit l’histogramme des luminances de l’image modifiée, qui contient une plus grande diversité de valeurs lorsque le filtre travaille sur une image stockée avec des flottants 32 bits plutôt qu’avec des entiers 8 bits. L’enchaînement de ce genre de traitements peut assez vite créer des effets indésirables de <a href="https://fr.wikipedia.org/wiki/Posterisation">quantification ou postérisation</a> sur les images traitées (<em>banding effect</em>). En bref, le greffon <em>G’MIC</em> est déjà prêt pour la sortie de la prochaine version stable 2.10 de GIMP.</p>
<h3 id="22-prise-en-charge-de-lutf-8-dans-les-widgets">2.2. Prise en charge de l’UTF-8 dans les <em>widgets</em>
</h3>
<p>Le greffon gère maintenant les chaînes <a href="https://en.wikipedia.org/wiki/UTF-8">UTF-8</a> pour l’ensemble des <em>widgets</em> de l’interface, ce qui permet une meilleure internationalisation des filtres.<br>
Par exemple, nous disposons maintenant d’une version japonaise de l’interface et de certains filtres, comme l’illustre la copie d’écran du greffon ci‐dessous (<em>Fig. 2.2</em>).</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6a612e6a7067/gmic_ja.jpg" alt="Le greffon G’MIC pour GIMP partiellement traduit en japonais" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_ja.jpg"><br><em>Fig. 2.2. Le greffon G’MIC pour GIMP partiellement traduit en japonais.</em></p>
<h3 id="23-une-interface-plus-réactive">2.3. Une interface plus réactive</h3>
<p>Le greffon réagit mieux aux changements de paramètres d’un filtre lorsque celui‐ci est en train de calculer le résultat d’une prévisualisation. Un mécanisme d’annulation du calcul en cours a été ajouté pour ne plus attendre qu’un filtre ait fini de générer sa prévisualisation avant de pouvoir agir sur l’interface. C’est tout bête, mais ça améliore énormément l’expérience utilisateur.</p>
<p>Notons également l’initiative intéressante de Jean‐Philippe Fleury, un aimable contributeur, qui propose sur <a href="http://jpfleury.github.io/gfo-demos/">sa page web</a> une galerie recensant la quasi‐totalité des effets disponibles dans le greffon. Voilà un très bon moyen d’avoir un aperçu rapide des filtres, et de pouvoir observer le résultat de chaque filtre sur des images différentes, parfois avec des paramètres différents.</p>
<h2 id="3-ajout-de-lalgorithme-patchmatch">3. Ajout de l’algorithme <em>Patchmatch</em>
</h2>
<p><a href="https://en.wikipedia.org/wiki/PatchMatch"><em>PatchMatch</em></a> est un algorithme de <a href="https://fr.wikipedia.org/wiki/Algorithme_de_block-matching">mise en correspondance de blocs d’images</a> qui rencontre, depuis quelques années, un certain succès dans la communauté du traitement d’images, notamment grâce à sa rapidité d’exécution et au fait qu’il se parallélise relativement bien.<br>
C’est devenu une technique de base utilisée dans de nombreux algorithmes récents nécessitant des comparaisons rapides de patchs, en particulier des algorithmes de <a href="https://fr.wikipedia.org/wiki/Inpainting">reconstruction de morceaux manquants dans des images</a>, de <a href="https://en.wikipedia.org/wiki/Texture_synthesis">synthèse de textures</a>, ou encore de <a href="https://en.wikipedia.org/wiki/Super-resolution_imaging">super-résolution</a>.<br>
Il est donc satisfaisant d’annoncer que <em>G’MIC</em> intègre maintenant une implémentation parallélisée de cet algorithme (via la commande native <code>-patchmatch</code>) pour la mise en correspondance locale de patchs dans des images 2D et 3D. C’est sur la base de cet algorithme que deux filtres intéressants ont été ajoutés récemment.</p>
<h3 id="31-inpainting-reconstruction-dimage">3.1. <em>Inpainting</em> : reconstruction d’image</h3>
<p>Un nouveau filtre de reconstruction d’image — <a href="https://fr.wikipedia.org/wiki/Inpainting"><em>inpainting</em> </a> — utilisant un algorithme multi‐résolution, permet de reconstruire des morceaux d’images <em>manquants</em> ou considérés comme <em>invalides</em>. Très pratique pour virer tata Renée en maillot de bain de vos photos de vacances à Ibiza !</p>
<p>À noter que ce n’est pas le premier algorithme de reconstruction « basé patch » disponible dans <em>G’MIC</em> (cette <a href="//linuxfr.org/news/g-mic-1-5-8-3-quelques-avancees-supplementaires-pour-le-traitement-d-image-libre">dépêche de 2014</a> parlait déjà d’un filtre équivalent). C’est juste un algorithme différent, qui donne donc des résultats différents. Et, dans ce domaine, avoir le choix de pouvoir générer plusieurs types de résultats n’est vraiment pas du luxe, étant donné la nature particulièrement mal posée du problème de la reconstruction d’images.</p>
<p>Si vous avez comme moi une machine avec tout plein de cœurs qui ne demandent qu’à chauffer, alors cette nouvelle implémentation tirant parti du <em>multi‐threading</em> risque de bien vous plaire ! Voilà deux exemples de résultats (<em>Fig. 3.1</em> et <em>Fig. 3.2</em>) que l’on peut obtenir très rapidement avec ce filtre :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f626561725f696e7061696e742e676966/bear_inpaint.gif" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/bear_inpaint.gif"><br><em>Fig. 3.1. Application du nouveau filtre d’inpainting pour la suppression d’un ours.</em></p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f70617269735f696e7061696e742e676966/paris_inpaint.gif" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/paris_inpaint.gif"><br><em>Fig. 3.2. Application du nouveau filtre d’inpainting pour la suppression de la tour Eiffel.</em></p>
<p>Une vidéo montrant comment ce dernier exemple a été réalisé (en 1 min 07 exactement) est <a href="https://www.youtube.com/watch?v=EQHJuW8n0is">disponible sur YouTube</a> (vidéo en temps réel sans trucages, mais avec un PC à 24 cœurs_ quand même !). Ça paraît assez magique de voir que l’algorithme a été capable de reconstruire tout seul des bouts d’arbres entiers de manière assez cohérente à la place des pieds de la tour Eiffel (en effectuant en réalité un « bête » clonage d’un arbre existant ailleurs dans l’image !). Mais, je vous rassure, ça ne marche pas aussi bien avec toutes les images…</p>
<p>Cette technique de reconstruction multi‐résolution basée sur <em>PatchMatch</em> est <em>grosso modo</em> la même que celle introduite dans <a href="https://fr.wikipedia.org/wiki/Adobe_Photoshop"><em>PhotoShop CS5</em></a> en 2010, sous l’appellation (très marketing) « <em>Content‐Aware Fill</em> ». La principale force de ce type d’algorithme est d’être capable de reconstruire de larges zones texturées à l’intérieur des masques définis par l’utilisateur. À noter que dans le cadre du doctorat de <a href="https://daisy.users.greyc.fr/">Maxime Daisy</a> (qui a soutenu sa thèse avec succès la semaine dernière, bravo à lui !), nous avons également réalisé quelques extensions sympathiques de ce type d’algorithmes pour supprimer des objets en mouvement dans des séquences vidéos (voir la <a href="https://daisy.users.greyc.fr/@research">page de démo</a> correspondante). Ces extensions ne sont pas encore disponibles dans <em>G’MIC</em> (et sont encore relativement coûteuses à calculer), mais cela arrivera peut‐être un jour, qui sait ?</p>
<h3 id="32-re-synthèse-de-textures">3.2. Re-synthèse de textures</h3>
<p>En utilisant le même type de technique multi‐résolution, un filtre de <a href="https://en.wikipedia.org/wiki/Texture_synthesis">synthèse de textures</a> a également été ajouté. Il permet de synthétiser une texture de taille quelconque à partir d’une texture « modèle » donnée en entrée.</p>
<p>Bien sûr, il ne s’agit pas ici de faire une simple répétition en tuiles de la texture d’entrée, mais bien de régénérer une texture ayant les mêmes caractéristiques en copiant‐collant des bouts de la texture modèle de telle manière que le résultat final ne contienne pas de discontinuités visibles.</p>
<p>La figure 3.3 illustre un exemple de synthèse d’une texture d’une taille de 512 × 512 pixels (image de droite) à partir d’une texture modèle plus petite, de taille de 280 × 512 pixels (image de gauche). Une comparaison du résultat obtenu avec l’application bête et méchante d’une simple répétition en tuiles de la texture modèle (image du milieu) est également visible.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f7265746578747572652e6a7067/gmic_retexture.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_retexture.jpg"><br><em>Fig 3.3. Exemple de synthèse d’une texture complexe avec G’MIC.</em></p>
<p>Nous avions déjà un algorithme de re‐synthèse de texture disponible dans <em>G’MIC</em>, mais celui‐ci ne fonctionnait bien <a href="http://gimpchat.com/viewtopic.php?f=28&t=10141">qu’avec des <em>micro‐textures</em></a>. L’exemple de la figure 3.3 montre que ce nouvel algorithme est quant à lui capable de régénérer des macro‐textures plus complexes. On peut imaginer pas mal d’applications à ce genre de filtre, notamment dans le domaine du jeu vidéo (<a href="//linuxfr.org/users/rewind"><em>rewind</em></a> pourrait peut‐être confirmer ?).</p>
<p>Bref, vous l’avez compris, avoir une implémentation de l’algorithme <em>PatchMatch</em> dans <em>G’MIC</em> va très certainement être bénéfique pour élaborer d’autres filtres d’image intéressants par la suite (on peut imaginer l’utiliser dans le cadre de la super‐résolution ou du <a href="https://fr.wikipedia.org/wiki/Morphing"><em>morphing</em></a> à l’avenir, si le temps le permet).</p>
<h2 id="4-un-évaluateur-dexpressions-plus-performant">4. Un évaluateur d’expressions plus performant</h2>
<p>Je vais rentrer ici dans des considérations un peu plus techniques concernant l’évolution de <em>G’MIC</em>. En tant qu’utilisateur très régulier de <em>G’MIC</em> (pour mon travail de recherche), j’ai été confronté à un obstacle qui devenait récurrent lors de son utilisation. Mais, comme je suis aussi le développeur principal de <em>G’MIC</em>, cela m’a amené à repenser et améliorer une fonctionnalité clef du logiciel (et c’est probablement la contribution la plus significative de ces huit derniers mois, même si ce n’est pas encore très visible pour l’utilisateur). J’expose ici mon cheminement et la solution technique aboutissant à la contribution proposée.</p>
<p>Jusqu’à présent, <em>G’MIC</em> avait été pensé comme un moyen simple et rapide de construire des « <em>pipelines</em> d’opérateurs » de traitement d’image (pouvant intégrer éventuellement des boucles et des tests conditionnels), ces <em>pipelines</em> étant par la suite exécutés par un interpréteur. La majorité des filtres d’image présents dans <em>G'MIC</em> sont d’ailleurs élaborées comme ceci.</p>
<p>Or, il arrive fréquemment qu’on ait envie de « prototyper » des algorithmes plus « bas niveau », qui travaillent à l’échelle du pixel et qui ne peuvent pas s’exprimer efficacement comme une suite de macro‐opérateurs (en supposant, bien sûr, qu’on ne dispose pas d’un macro‐opérateur qui implémente déjà ledit algorithme !). C’est le cas par exemple pour des algorithmes qui parcourent tous les pixels <em>(x,y)</em> d’une image, et qui pour chaque pixel, effectuent une série d’opérations non triviales dépendant de la valeur d’autres pixels localisés plus ou moins loin du pixel courant (ou carrément sur une autre image) selon un schéma non ordonné par exemple (sans être complètement aléatoire non plus).</p>
<p>Dans ce genre de cas, généralement, le <em>pipeline</em> <em>G’MIC</em> correspondant devient un peu lourd à exécuter, notamment du fait de l’interprétation des boucles imbriquées en <code>(x,y)</code>. Notons que ce problème n’est pas propre à <em>G’MIC</em>. Demandez à un traiteur d’images utilisant <a href="https://fr.wikipedia.org/wiki/MATLAB">Matlab</a> les trésors d’ingéniosités qu’il faut parfois déployer pour éviter d’écrire des scripts avec des boucles imbriquées explicites sur <code>(x,y)</code> pour parcourir les pixels d’une images, pour vous en convaincre. C’est un fait : en traitement d’images, on dispose très vite d’une quantité non négligeable de données à traiter. Et cela ne va pas en s’arrangeant, du fait de la progression constante des résolutions des images, mais aussi du fait de la complexité croissante des algorithmes (il est courant d’avoir des algorithmes en <code>O(Nᵖ)</code> où <code>N = W × H</code> est le nombre de pixels de l’image et <em>p</em> supérieur à 2). Bref, faire du prototypage d’algorithmes « bas niveau » un peu lourds en traitement d’images avec des langages interprétés, ça peut vite devenir pénible en termes de temps de calcul.</p>
<p>La meilleure solution reste alors d’écrire ces algorithmes dans un langage compilé (au hasard, <em>C++</em>) pour pouvoir les tester sans attendre des plombes devant son écran que ça s’exécute. Mais on perd alors le confort et la rapidité de prototypage que procurent les langages interprétés. Ou alors on construit un module Matlab, Python ou autre à partir de l’algorithme compilé, et on se retrouve alors à faire du travail de liaison — <a href="https://fr.wikipedia.org/wiki/Binding"><em>binding</em></a> — plutôt pénible. Bref, on perd du temps pour un truc qui n’est même pas sûr de marcher au final.</p>
<p>Mon objectif était donc de pouvoir prototyper la plupart de mes algorithmes directement en <em>G’MIC</em>, en acceptant d’avoir une baisse de performances (comparativement à un langage compilé comme le <em>C++</em>), mais en évitant que ça devienne ridiculement lent. La solution classique, vous l’avez deviné, c’est d’inclure un mécanisme de <a href="https://fr.wikipedia.org/wiki/Compilation_%C3%A0_la_vol%C3%A9e">compilation à la volée</a>, ce que j’ai donc réalisé pour la sous‐partie de l’interpréteur <em>G’MIC</em> qui s’occupe de l’évaluation des expressions mathématiques (et qui est centrale à l’infrastructure, comme on peut s’en douter).<br>
Lorsque l’interpréteur rencontre une expression mathématique à évaluer plusieurs fois (pour chaque pixel d’une image par exemple), il la compile d’abord sous forme de code intermédiaire — <a href="https://fr.wikipedia.org/wiki/Bytecode"><em>bytecode</em></a> — qui devient ensuite très rapide à évaluer pour chaque pixel. En réalité, ce mécanisme est présent depuis des années dans <em>G’MIC</em>, mais il a été significativement amélioré ces derniers mois pour permettre l’évaluation d’expressions qui peuvent être considérées comme des petits programmes en eux‐mêmes (contenant des boucles, des variables, des tests conditionnels, etc.), plutôt que comme de « bêtes » formules mathématiques.</p>
<p>L’exemple <em>jouet</em> qui illustre ces nouvelles possibilités est le rendu de <a href="https://fr.wikipedia.org/wiki/Ensemble_de_Julia">l’ensemble fractal de Julia</a> qu’il est maintenant possible d’écrire en une ligne de commande (attention, ça peut piquer les yeux au premier abord) :</p>
<pre><code class="sh"><span class="nv">$ </span>gmic 1024,1024,1,1,<span class="s2">"zr = -1.2+2.4*x/w; zi = -1.2+2.4*y/h; for(iter = 0, zr^2+zi^2<=4 && iter<256, ++iter, t = zr^2 - zi^2 + 0.4; (zi *= 2*zr) += 0.2; zr = t);iter"</span> -map 7</code></pre>
<p>Cet appel de <em>G’MIC</em> en ligne de commande génère cette image en résolution 1024 × 1024 pixels (l’image a été réduite ici par commodité de lecture) :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6a756c69612e6a7067/gmic_julia.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_julia.jpg"><br><em>Fig. 4.1. Génération d’une fractale Julia utilisant le nouvel évaluateur d’expressions mathématiques de G’MIC.</em></p>
<p>Bien entendu, on peut aussi écrire ça plus posément, en utilisant des fichiers de commande <em>G’MIC</em> :</p>
<pre><code class="sh"><span class="c"># Fichier 'julia.gmic'</span>
julia_expr :
-input <span class="nv">$1</span>,<span class="nv">$1</span>
-fill <span class="s2">"</span>
<span class="s2"> zr = -1.2 + 2.4*x/w;</span>
<span class="s2"> zi = -1.2 + 2.4*y/h;</span>
<span class="s2"> for (iter = 0, zr^2+zi^2<=4 && iter<256, ++iter,</span>
<span class="s2"> t = zr^2 - zi^2 + 0.4;</span>
<span class="s2"> (zi *= 2*zr) += 0.2;</span>
<span class="s2"> zr = t</span>
<span class="s2"> );</span>
<span class="s2"> iter"</span>
-map 7</code></pre>
<p>On lance ensuite le rendu de l’image de la façon suivante :<br><code>gmic julia.gmic -julia_expr 1024</code></p>
<p>La complexité algorithmique de ce rendu fractal n’est pas démente, sans être négligeable non plus : pour chacun des 1024², soit 1 048 576 pixels de l’image, on va calculer au maximum 256 itérations pour évaluer la couleur d’un point (déterminé par le nombre d’itérations nécessaires pour vérifier le critère de divergence de la suite complexe calculée ici). Donc, ça fait quand même en moyenne plusieurs dizaines de millions d’itérations pour la génération de l’image complète. Là où c’est intéressant, c’est que <em>G’MIC</em> va automatiquement déterminer que l’expression mathématique associée peut s’évaluer en parallèle en divisant l’image en blocs de pixels évalués indépendamment sur chaque cœur disponible. Au final, le temps de calcul de l’image de la figure 4.1 (en résolution 1024 x 1024 pixels) se réalise en un temps plus que raisonnable : 0,176 s sur mon PC de bureau à 24 cœurs, et 0,631 s sur mon portable quadri‐cœur. Évidemment, si l’on compare ce temps d’exécution avec la commande <em>native</em> équivalente <code>-mandelbrot</code> (donc compilée en <em>C++</em>) qui était déjà disponible dans <em>G’MIC</em>, on ne peut qu’être déçu : la commande <em>native</em> génère la même image en 0,055 s seulement (sur le quadri‐cœur). C’est douze fois plus rapide !</p>
<p>Certes, mais supposons maintenant que je veuille visualiser cette fractale en colorant les points par une mesure autre que le nombre d’itération de la série complexe avant divergence. Par exemple, je souhaite visualiser la valeur de la dernière partie imaginaire calculée avant divergence. Il me suffit de modifier l’appel à <em>G’MIC</em> de la façon suivante (je vous la fais ici en version courte) :</p>
<pre><code class="sh"><span class="nv">$ </span>gmic 1024,1024,1,1,<span class="s2">"zr = -1.2+2.4*x/w; zi = -1.2+2.4*y/h; for(iter = 0, zr^2+zi^2<=4 && iter<256, ++iter, t = zr^2 - zi^2 + 0.4; (zi *= 2*zr) += 0.2; zr = t);zi"</span> -normalize 0,255 -map 7</code></pre>
<p>Et voilà ce que j’obtiens (toujours en moins de 0,7 s) :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6a756c6961322e6a7067/gmic_julia2.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_julia2.jpg"><br><em>Fig. 4.2 : Autre type de visualisation lors de la génération d’une fractale Julia avec l’évaluateur d’expressions mathématiques de G’MIC.</em></p>
<p>Auparavant, si j’avais voulu réaliser la même chose avec <em>G’MIC</em>, j’aurais dû :</p>
<ul>
<li><p>Soit ajouter de nouvelles options à la commande <em>native</em> <code>-mandelbrot</code> pour permettre ce type de visualisation. Ce qui veut dire : écrire du code <em>C++</em>, compiler une version complète de <em>G’MIC</em> avec ces modifications incluses, l’empaqueter et sortir une nouvelle version. Ce ne serait pas vraiment une façon simple et rapide de faire profiter l’utilisateur de cette nouvelle possibilité de visualisation (si vous avez déjà utilisé le greffon <em>G’MIC</em> pour GIMP et son mécanisme de mise à jour des filtres par Internet, vous comprenez certainement ce que je veux dire par là).<br>
Sans compter qu’on ne peut décemment pas prévoir tous les types de visualisation qu’un utilisateur va vouloir générer !</p></li>
<li><p>Soit écrire un script <em>G’MIC</em> qui aurait fait la même opération que la commande <code>julia_expr</code>. Mais comme l’algorithme ici est très spécifique et réalise des choses « sur mesure » au niveau pixel,<br>
cela aurait effectivement demandé l’écriture explicite de trois boucles <code>(x,y,iter)</code> imbriquées, qui aurait été interprétées, et qui auraient mis probablement plusieurs minutes à réaliser leur travail.</p></li>
</ul><p>Nous avons maintenant un système de précompilation à la volée d’expressions mathématiques, dont l’évaluation devient relativement rapide pour chacun des pixels qui composent l’image à générer, d’autant plus que cette évaluation est réalisée en parallèle si votre machine possède plusieurs cœurs. Pour les algorithmes de traitement d’images qui nécessitent des opérations « sur mesure » (e.g. non linéaires) pixel par pixel, cette étape de précompilation rend le processus de prototypage incroyablement efficace. Ce système a été d’ailleurs abondamment utilisé pour le prototypage de deux algorithmes basés sur <em>PatchMatch</em> dont j’ai parlé en section précédente. Nul doute que beaucoup de futurs nouveaux filtres pourront bénéficier de cette nouvelle fonctionnalité présente dans <em>G’MIC</em>. <br>
J’ai par ailleurs comparé la performance de l’évaluateur d’expressions de <em>G’MIC</em> avec la fonctionnalité identique présente dans <em>ImageMagick</em>, <a href="http://www.imagemagick.org/script/fx.php">via leur commande <code>-fx</code></a>, qui exploite également le multi‐cœur (mais qui n’utilise en revanche pas de précompilation à la volée des expressions) : <em>G’MIC</em> évalue des expressions même simples entre dix et vingt fois plus rapidement sur des images couleur de taille moyenne (3072 × 2048 pixels dans mes tests, à retrouver en <a href="http://opensource.graphics/image-processing-made-easier-with-a-powerful-math-expression-evaluator/">section 6 d’un article</a> publié sur le site <em>Open Source Graphics</em>).</p>
<h2 id="5-vector-painting-un-exemple-de-construction-dun-filtre-simple-en-partant-de-zéro">5. <em>Vector Painting</em> : Un exemple de construction d’un filtre simple, en partant de zéro.</h2>
<p>Un nouveau filtre d’abstraction d’image nommé <em>Vector Painting</em>, a été développé à partir de ces améliorations apportées à l’évaluateur d’expressions de <em>G’MIC</em>.<br>
Ce n’est pas un filtre très impressionnant, mais j’en relate ici la conception, car ce filtre particulier a un fonctionnement suffisamment simple pour ne pas avoir à rentrer dans des détails techniques compliqués de traitement d’image, et ça donne une bonne idée de la façon dont un nouvel effet peut être construit rapidement avec <em>G’MIC</em> en partant de zéro, jusqu’à son intégration finale dans le greffon pour <em>GIMP</em>. Il est amusant de noter que ce filtre a été élaboré complètement par hasard, alors que je cherchais à corriger quelques erreurs dans le code de l’évaluateur d’expressions mathématiques de <em>G’MIC</em>.</p>
<p>Supposez que vous voulez déterminer pour chaque pixel d’une image, l’orientation discrète de la variation spatiale d’intensité lumineuse maximale du pixel (avec une précision d’angle de 45°). Pour chaque pixel centré dans un voisinage 3 × 3, on cherche à déterminer quel pixel du voisinage a la différence de valeur maximale avec le pixel du centre (cette différence étant mesurée en valeur absolue). Dans un premier temps, on calcule donc la luminance de l’image couleur d’entrée. Puis, on cherche à transformer chaque pixel de cette image de luminance en une étiquette (un entier entre 1 et 8) qui représente une des huit orientations possibles du plan (à 45° près). C’est typiquement le genre de problème qui nécessite l’application d’opérations au niveau pixel qui sont suffisamment « exotiques » pour ne pas disposer d’un macro‐opérateur tout fait qui pourrait résoudre ce problème.</p>
<p>Avec le nouvel évaluateur d’expressions de <em>G’MIC</em>, la solution est étonnamment simple à mettre en œuvre :</p>
<pre><code class="sh"><span class="c"># Fichier 'foo.gmic'</span>
foo :
-luminance
-fill <span class="s2">"dmax = -1;</span>
<span class="s2"> nmax = 0;</span>
<span class="s2"> for (n = 0, ++n<=8,</span>
<span class="s2"> p = arg(n,-1,0,1,-1,1,-1,0,1);</span>
<span class="s2"> q = arg(n,-1,-1,-1,0,0,1,1,1);</span>
<span class="s2"> d = (j(p,q,0,0,0,1)-i)^2;</span>
<span class="s2"> if(d>dmax,</span>
<span class="s2"> dmax = d; nmax = n,</span>
<span class="s2"> nmax)</span>
<span class="s2"> )"</span></code></pre>
<p>En l’appliquant sur une image d’entrée nommée <code>leno.jpg</code> (à gauche sur la figure 5.1), nous obtenons l’image des orientations discrètes des variations maximales de luminance (à droite sur la figure 5.1) :</p>
<pre><code class="sh"><span class="nv">$ </span>gmic foo.gmic leno.jpg -foo</code></pre>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6c656e6f312e6a7067/gmic_leno1.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_leno1.jpg"><br><em>Fig. 5.1. Calcul des orientations discrètes de variations maximales d’une image couleur.</em></p>
<p><em>En aparté, laissez‐moi vous raconter que j’ai récemment reçu plusieurs courriels et messages de gens qui prétendent que réutiliser l’image de Lena (bien connue des traiteurs d’images) est quelque chose de « sexiste » (quelqu’un a même utilisé le terme « pornographique ») car c’est un portrait provenant à l’origine d’un numéro du magazine</em> <a href="https://fr.wikipedia.org/wiki/Playboy">Playboy</a> <em>de 1972. Je vous invite à lire la page sur <a href="http://www.cs.cmu.edu/%7Echuck/lennapg/lenna.shtml">l’histoire de Lena</a>, si vous ne savez pas pourquoi nous utilisons souvent cette image. L’occasion aussi de voir la photo originale dans son ensemble est de vous faire une idée sur le côté « pornographique » de la chose. Néanmoins, comme je ne souhaite pas blesser ces personnes à la sensibilité exacerbée, j’ai décidé d’utiliser une petite variation de l’image originale en la mixant avec un portrait de <a href="https://en.wikipedia.org/wiki/Jay_Leno">Jay Leno</a>. Appelons cette dernière image « Leno » plutôt que « Lena ». Et si une seule lettre peut tout arranger, alors qu’il en soit ainsi.</em></p>
<p>L’image des orientations de la figure 5.1 peut paraître très moche (et elle l’est), mais ce n’est pas très étonnant : l’image originale contient un peu de bruit, ce qui se traduit par beaucoup de directions de variations d'intensité lumineuse incohérentes dans les régions de couleur quasi‐constantes. Lissons l’image originale un petit peu avant de calculer l’image des orientations discrètes et voyons voir ce que ça donne (<em>Fig. 5.2</em>).</p>
<pre><code class="sh"><span class="nv">$ </span>gmic foo.gmic leno.png --blur 1% -foo</code></pre>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6c656e6f322e6a7067/gmic_leno2.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_leno2.jpg"><br><em>Fig 5.2. Calcul des orientations discrètes de variations de luminance sur une image lissée au préalable.</em></p>
<p>Voilà qui semble plus intéressant : le lissage permet de créer des portions larges d’étiquettes constantes, c’est‐à‐dire des régions où l’orientation des variations maximales de luminance est la même. Les contours du portrait original apparaissent comme des frontières naturelles dans l’image des orientations. Pourquoi alors ne pas remplacer les composantes connexes ainsi étiquetées par la couleur moyenne qu’elles recouvrent dans l’image originale ? Rien de plus facile avec <em>G’MIC</em> :</p>
<pre><code class="sh"><span class="nv">$ </span>gmic user.gmic leno.png --blur 1% -foo<span class="o">[</span>-1<span class="o">]</span> -blend shapeaverage</code></pre>
<p>Et nous obtenons alors une abstraction « constante par morceaux » de notre image d’entrée <em>Leno</em> (<em>Fig. 5.3</em>).</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6c656e6f332e6a7067/gmic_leno3.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_leno3.jpg"><br><em>Fig. 5.3. Résultat après colorisation des zones d’orientations constantes.</em></p>
<p>Comme on peut l’imaginer, changer l’amplitude spatiale du lissage rend l’image résultante plus ou moins abstraite. À partir de là, il n’est pas bien compliqué de reprendre le code précédent, et de le transformer en filtre disponible immédiatement pour les utilisateurs du greffon <em>G’MIC</em> pour <em>GIMP</em> (le code complet de ce filtre, de seulement 19 lignes est visible <a href="http://pastebin.com/a0cxqrbE"><em>ici</em></a>). Les utilisateurs n’ont plus qu’à appuyer sur le bouton « <em>Actualiser les filtres</em> » de l’interface du greffon afin d’immédiatement disposer de ce nouvel effet <em>Vector Painting</em>.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f67696d705f76702e6a7067/gmic_gimp_vp.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_gimp_vp.jpg"><br><em>Fig. 5.3. Aperçu du filtre _Vector Painting</em> dans le greffon G’MIC pour GIMP.</p>
<p>Voilà, cela vous donne une idée de la façon dont les filtres sont <em>prototypés</em> puis ajoutés dans <em>G’MIC</em>. Ce qui est intéressant, c’est que l’étape qui permet de passer d’un prototype d’algorithme à un filtre distribué et utilisable est au final très rapide à réaliser. Cela explique comment de nouveaux filtres sont ajoutés fréquemment dans <em>G’MIC</em>, et pourquoi le greffon possède aujourd’hui plus de <strong>440 filtres</strong> utilisables.</p>
<h2 id="6-des-filtres-et-effets-à-foison">6. Des filtres et effets à foison !</h2>
<p>Cette section illustre, en vrac, quelques autres fonctionnalités, effets et filtres qui ont été ajoutés depuis avril dernier. Les copies d’écran ci‐dessous montrent certains filtres accessibles depuis le greffon <em>G’MIC</em> pour GIMP, mais ces filtres sont bien sûr applicables à partir de toutes les interfaces disponibles (en ligne de commande, notamment).</p>
<ul>
<li>
<strong>Moteur de recherche de filtres</strong> : voilà une fonctionnalité qui nous a longtemps été demandée, et nous avons donc proposé une première ébauche d’un moteur de recherche de filtres par mots‐clefs. En effet, le nombre de filtres du greffon n’allant pas en diminuant, ce n’est pas toujours facile de retrouver un filtre particulier, surtout si l’on a oublié de le mettre dans ses favoris. Bref, cet outil peut dépanner en cas de trous de mémoire (mais encore faut‐il se rappeler d’un mot‐clef pertinent pour la recherche).</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f7365617263682e6a7067/gmic_search.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_search.jpg"><br><em>Fig.6.1. Nouveau moteur de recherche de filtres par mot clés dans le greffon GIMP.</em></p>
<ul>
<li>Filtre <strong>Freaky B&W</strong> : ce filtre propose de convertir une image couleur en image en noir et blanc (en niveaux de gris pour être plus précis), en résolvant <a href="https://fr.wikipedia.org/wiki/%C3%89quation_de_Poisson">une équation de Poisson</a> plutôt qu’en appliquant une simple formule linéaire de calcul de luminance. Le but est d’obtenir une image N&B qui contient les détails de contraste maximum présents dans chacun des canaux couleurs de l’image originale. Le filtre génère donc des images souvent très contrastées, à la façon des <a href="https://fr.wikipedia.org/wiki/Imagerie_%C3%A0_grande_gamme_dynamique">images HDR</a> (mais en niveaux de gris).</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f667265616b7962772e676966/gmic_freakybw.gif" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_freakybw.gif"><br><em>Fig. 6.2. Filtre</em> Freaky B&W <em>pour la conversion d’image couleur en niveaux de gris.</em></p>
<ul>
<li>Filtre <strong>Bokeh</strong> : ce filtre permet de générer des effets de type <a href="https://fr.wikipedia.org/wiki/Bokeh">Bokeh</a> sur des images (flous artistiques). Il est très paramétrable et permet de générer des Bokeh avec des formes variées (cercles, pentagones, octogones, étoiles…).</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f626f6b65682e676966/gmic_bokeh.gif" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_bokeh.gif"><br><em>Fig. 6.3. Application du nouveau filtre</em> Bokeh <em>sur une image couleur.</em></p>
<ul>
<li>Filtre <strong>Rain & snow</strong> : comme son nom l’indique, ce filtre permet d’ajouter un effet de pluie ou de neige sur vos images (ici en prenant en exemple un zoom de l’image précédente).</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f7261696e2e6a7067/gmic_rain.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_rain.jpg"><br><em>Fig. 6.4. Ajout de pluie sur une image couleur avec le filtre</em> Rain & snow.</p>
<ul>
<li>Filtre <strong>Neon lightning</strong> : pas grand chose à dire sur ce filtre, il génère des courbes partant d’une région <em>A</em> à une autre région <em>B</em> et stylise ces courbes comme des lumières à néon. Pratique pour faire des fonds d’écran probablement. :)</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6e656f6e2e6a7067/gmic_neon.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_neon.jpg"><br><em>Fig. 6.5. Effet de néons courbes avec le filtre</em> Neon Lightning.</p>
<ul>
<li>Filtre <strong>Stroke</strong> : ce filtre permet d’« habiller » des formes simples présentes sur un calque transparent, en les enrobant avec des dégradés de couleurs par exemple. La figure ci‐dessous illustre la transformation d’un texte simple (monochrome) « <em>LinuxFr</em> » par ce filtre.</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f7374726f6b652e6a7067/gmic_stroke.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_stroke.jpg"><br><em>Fig. 6.6. Application du filtre</em> Stroke <em>pour décorer un texte simple.</em></p>
<ul>
<li>Filtre <strong>Light leaks</strong> : il s’agit ici de simuler des effets de lumière indésirable sur des photos. En général, c’est plutôt le genre d’effets qu’on souhaite au contraire enlever ! Mais la simulation de dégradations d’images peut servir dans certains cas (pour ceux qui veulent rendre leur images de synthèse plus réalistes par exemple).</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6c696768746c65616b732e6a7067/gmic_lightleaks.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_lightleaks.jpg"><br><em>Fig. 6.7. Simulation d’effets de lumière indésirable avec le filtre</em> Light leaks.</p>
<ul>
<li>Filtre <strong>Grid [triangular]</strong> : ce filtre transforme une image en grille composée de triangles, avec de nombreux choix de types de grilles différents.</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f747269677269642e6a7067/gmic_trigrid.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_trigrid.jpg"><br><em>Fig. 6.8. Transformation d’une image en grille triangulaire.</em></p>
<ul>
<li><p>Filtre <strong>Intarsia</strong> : ce filtre est relativement original, puisqu’il permet de transformer une image en un schéma de construction d’un tricot de type <a href="https://en.wikipedia.org/wiki/Intarsia_%28knitting%29">Intarsia</a>.<br>
C’est un filtre qui a été suggéré par une utilisatrice du forum <a href="http://www.gimpchat.com"><em>GimpChat</em></a> pour lui permettre de distribuer des schémas de tricot personnalisés (apparemment il existe des sites qui en proposent, mais en échange d’espèces sonnantes et trébuchantes). Le filtre en lui‐même ne modifie pas l’image, mais génère un schéma de création sous forme d’une page Web (dont <a href="http://gmic.eu/intarsia.html">un exemple est visible sur <em>gmic.eu</em></a>).</p></li>
<li><p>Filtre <strong>Drop water</strong> : alors, je dois avouer que je l’aime particulièrement celui‐ci. Ce filtre permet de simuler l’apparition de gouttes d’eau sur une image. Dans sa version basique, il ressemble à ça :</p></li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f64726f707761746572312e6a7067/gmic_dropwater1.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_dropwater1.jpg"><br><em>Fig. 6.9. Ajout de gouttes d’eau sur une image avec le filtre</em> Drop water.</p>
<p>Mais là où ça devient vraiment intéressant, c’est que l’utilisateur peut définir ses propres formes de gouttes en ajoutant un calque transparent contenant quelques formes colorées. Par exemple, si l’on ajoute ce calque (ici, en rose) sur l’image précédente :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f64726f707761746572322e6a7067/gmic_dropwater2.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_dropwater2.jpg"><br><em>Fig. 6.10. Ajout d’un calque pour définir la forme des gouttes d’eau.</em></p>
<p>Alors, le filtre <em>Drop water</em> va vous générer cette image avec vos gouttes d’eau personnalisées :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f64726f707761746572332e6a7067/gmic_dropwater3.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_dropwater3.jpg"><br><em>Fig. 6.11. Synthèse de gouttes d’eau personnalisées avec le filtre</em> Drop water.</p>
<p>Par ailleurs, le filtre a le bon goût de générer le résultat comme un empilement de plusieurs calques qui correspondent chacun au rendu des différents phénomènes physiques simulés pour la synthèse, à savoir : les tâches spéculaires, l’ombre portée et l’ombre propre, ainsi que l’effet de réfraction. On peut donc facilement manipuler tous ces calques par la suite, pour donner des effets supplémentaires à l’image générée, par exemple en appliquant un filtre monochrome sur l’image originale tout en gardant le calque de réfraction calculé sur l’image couleur originale, ce qui donne ceci :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f64726f707761746572342e6a7067/gmic_dropwater4.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_dropwater4.jpg"><br><em>Fig. 6.12. Filtre</em> Drop water <em>suivi d’un changement colorimétrique de l’image originale uniquement.</em></p>
<p>Une <a href="https://www.youtube.com/watch?v=mGsGG2zQXDo">petite vidéo tutoriel</a> a été réalisée pour expliquer comment réaliser cet effet pas à pas sous GIMP (ça prend pas plus de deux minutes, même pour un débutant).</p>
<p>Mieux encore, on peut mixer les calques générés par le filtre <em>Drop water</em> en les surimposant à d’autres images. La figure suivante montre un tel traitement à partir de deux images de portraits (qui ont été préalablement recalées). C’est très facile à réaliser, et le résultat est plutôt sympathique.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f64726f707761746572352e6a7067/gmic_dropwater5.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_dropwater5.jpg"><br><em>Fig. 6.13. Filtre</em> Drop water <em>appliqué pour une fusion</em> liquide <em>de deux portraits distincts.</em></p>
<p>Voilà qui termine cet aperçu non exhaustif de quelques filtres très « visuels » ajoutés dernièrement. À noter que chaque nouvel ajout fait l’objet d’une annonce sur le <a href="https://plus.google.com/+GMIC_software">flux Google+ de <em>G’MIC</em></a>, donc c’est assez facile de suivre l’évolution du projet au jour le jour, si ça vous intéresse de voir ce qu’on peut faire en traitement d’images libre.</p>
<h2 id="7-autres-améliorations-et-faits-notables">7. Autres améliorations et faits notables</h2>
<p>Ajoutons pour finir ces quelques informations en vrac, relatives au projet :</p>
<ul>
<li>Tout d’abord, signalons que nous sommes rentrés en contact avec <a href="https://plus.google.com/u/0/b/117441237982283011318/+TobiasFleischer/posts">Tobias Fleischer</a>, un développeur professionnel de greffons pour <a href="https://fr.wikipedia.org/wiki/Adobe_After_Effects"><em>Adobe After Effects</em></a> et <a href="https://fr.wikipedia.org/wiki/Adobe_Premiere_Pro"><em>Premiere Pro</em></a>, entre autres logiciels de post‐production vidéo. Il a déjà réalisé un gros travail de développement d’une <a href="https://fr.wikipedia.org/wiki/Dynamic_Link_Library"><em>DLL</em></a> encapsulant la bibliothèque <em>libgmic</em>, et a utilisé cette <em>DLL</em> pour implémenter des prototypes de greffons proposant les filtres <em>G’MIC</em> pour <em>After Effects</em>. Vous pouvez en voir un exemple sur la figure suivante (en l’occurence, un filtre de <a href="https://fr.wikipedia.org/wiki/Squelettisation_%28informatique%29">« squelettisation » de formes</a>) :</li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f61652e6a7067/gmic_ae.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_ae.jpg"><br><em>Fig. 7.1. Prototype de greffon G’MIC tournant sous</em> Adobe After Effects.</p>
<p>On ne peut qu’espérer que ceci arrive très bientôt. J’entends déjà râler certaines moules : « Mais pourquoi ne pas avoir fait ça pour un logiciel libre comme <a href="http://www.natron.fr"><em>Natron</em></a> plutôt que pour un logiciel 100 % propriétaire ? ». Le fait est qu’il est en train de le faire, justement ! Et pas seulement pour <em>Natron</em>, mais pour tout logiciel de traitement vidéo compatible avec l’<a href="https://fr.wikipedia.org/wiki/Interface_de_programmation" title="Application Programming Interface — Interface de programmation"><em>API</em></a> normalisée <a href="https://en.wikipedia.org/wiki/OpenFX_%28API%29"><em>OpenFX</em></a> (dont <em>Natron</em> fait partie). La copie d’écran ci‐dessous montre par exemple un greffon <em>G’MIC</em> tournant sous le logiciel <a href="https://fr.wikipedia.org/wiki/Sony_Vegas_Pro">Sony Vegas Pro</a> en utilisant l’API OpenFX. <em>A priori</em>, ça marcherait pareil pour <em>Natron</em>.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f76656761732e6a7067/gmic_vegas.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_vegas.jpg"><br><em>Fig. 7.2. Prototype de greffon G’MIC compatible OpenFX, tournant sous Sony Vegas Pro.</em></p>
<p>Tout ceci ne doit être encore considéré que comme du travail en cours, il reste des bogues à corriger et des améliorations à faire, mais c’est quand même prometteur.</p>
<ul>
<li><p>Continuons avec une autre bonne nouvelle : <em>Andrea</em>, un gentil contributeur (par ailleurs développeur du logiciel <a href="http://photoflowblog.blogspot.fr/"><em>PhotoFlow</em></a>) a réussi à comprendre pourquoi <em>G’MIC</em> plantait fréquemment sous <em>Mac OS X</em> lorsqu’il effectuait ses calculs en parallèle, et a proposé un correctif permettant de résoudre ce problème (c’était un simple problème de pile allouée trop petite pour les fils d’exécution de calcul). <em>G’MIC</em> sous <em>Mac OS X</em> doit donc être pleinement fonctionnel à l’heure qu’il est.</p></li>
<li><p>L’interface <a href="https://www.youtube.com/watch?v=k1l3RdvwHeM"><em>ZArt</em></a> a également pas mal évolué, avec de nouveaux filtres ajoutés, une détection automatique des résolutions de <em>webcams</em>, ainsi que la possibilité d’avoir une double fenêtre de visualisation (une fenêtre de contrôle et une fenêtre de visualisation à mettre sur un deuxième écran pour faire des démos).</p></li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f7a6172742e6a7067/gmic_zart.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_zart.jpg"><br><em>Fig 7.3. Le logiciel ZArt faisant tourner le filtre G’MIC</em> Drop water <em>en double fenêtre en temps réel sur des images d’une webcam.</em></p>
<ul>
<li>Une nouvelle démo animée a également fait son apparition dans <em>G’MIC</em>, via la commande <code>-x_landscape</code>. Cela n’a en soi aucun intérêt concret (pour l’utilisateur) si ce n’est de tester la rapidité de l’interpréteur (et puis c’est marrant, non ?). Rappelons que l’ensemble des démos animées et interactives sont disponibles via la ligne de commande.</li>
</ul><pre><code class="sh"><span class="nv">$ </span>gmic -demo</code></pre>
<p><img src="//img.linuxfr.org/img/687474703a2f2f74736368756d7065726c652e75736572732e67726579632e66722f6c6672322f676d69635f6c616e6473636170652e6a7067/gmic_landscape.jpg" alt="img" title="Source : http://tschumperle.users.greyc.fr/lfr2/gmic_landscape.jpg"><br><em>Fig. 7.4. Paysage virtuel animé avec la commande « -x_landscape ».</em></p>
<p>Comme je commençais à avoir pas mal de petites animations marrantes intégrées à <em>G’MIC</em>, je les ai compilées sous forme d’une <a href="https://fr.wikipedia.org/wiki/Sc%C3%A8ne_d%C3%A9mo">petite intro</a> unique, codée entièrement sous forme d’un script <em>G’MIC</em>, nommée la <em>BBQ intro 2016</em> et fleurant bon le style 8 bits/16 bits qui nous manque tant ! Vous pouvez apercevoir la <a href="https://www.youtube.com/watch?v=DnXYDwf8OEs">vidéo de cette intro sur YoutTube</a>. Ça n’a pas l’air forcément fameux, mais gardons à l’esprit que tout ça est généré à 100 % par l’interpréteur <em>G’MIC</em>, qui n’est pas forcément fait pour ça à la base. :)</p>
<h2 id="8-et-ensuite">8. Et ensuite ?</h2>
<p>Cette dépêche a fait un (long) tour d’horizon des points les plus importants qui ont émergés après ces derniers mois passés à travailler sur le projet <em>G’MIC</em>. Nous n’avons pas forcément de plan bien défini des choses sur lesquelles nous voulons nous focaliser par la suite, nous ferons au gré de nos envies et de nos besoins (et des contributeurs qui se manifesteront). Dans tous les cas, il apparaît que le projet <em>G’MIC</em> est toujours bien dynamique, et peut potentiellement intéresser et toucher de plus en plus de gens dans le futur. Ceci, grâce aux divers contributeurs et aux utilisateurs qui font des retours réguliers sur le logiciel, encore un grand merci à eux pour leurs efforts ! On espère annoncer encore de belles choses sur <em>LinuxFr.org</em> autour du projet <em>G’MIC</em> dans les années à venir dans tous les cas.</p>
<p>Et pour finir, vive le traitement d’images libre !</p></div><div><a href="https://linuxfr.org/news/g-mic-1-6-8-c-est-deja-noel-pour-les-traiteurs-d-images.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/107604/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/g-mic-1-6-8-c-est-deja-noel-pour-les-traiteurs-d-images#comments">ouvrir dans le navigateur</a>
</p>
David TschumperléDavy DefaudLucasBenoît SibaudFlorent Zarapalm123jcr83https://linuxfr.org/nodes/107604/comments.atom