⚠️ Ceci est un site de traduction non officiel, sans lien avec ImageMagick Studio LLC. Pour des informations officielles, consultez la page originale (https://usage.imagemagick.org/blur/index.html).

Exemples ImageMagick -- Floutage et accentuation des images

Préface et index des exemples ImageMagick
Floutage des images

Floutage des images

Flouter des images pour les rendre floues peut sembler une opération peu utile, mais c'est en réalité très pratique pour générer des effets d'arrière-plan et des ombres. C'est aussi très utile pour adoucir l'effet d'« escalier » afin d'anticréneler les bords des images, et pour arrondir les détails afin de produire des effets de mise en valeur. Le flou est si important qu'il fait partie intégrante du redimensionnement d'image, même s'il s'agit là d'une autre méthode de flou, restreinte aux limites d'un seul pixel de l'image d'origine. ImageMagick propose deux opérateurs généraux de floutage. L'étalement "[-gaussian-blur](https://imagemagick.org/command-line-options/#gaussian-blur)" et "[-blur](https://imagemagick.org/command-line-options/#blur)". Les résultats des deux sont très proches, mais comme "[-blur](https://imagemagick.org/command-line-options/#blur)" est un algorithme plus rapide, on le préfère généralement au premier, même si celui-ci est mathématiquement plus correct. (Voir Opérateurs de flou vs flou gaussien.)

Arguments de flou/gaussien

Les arguments de "[-blur](https://imagemagick.org/command-line-options/#blur)" et "[-gaussian-blur](https://imagemagick.org/command-line-options/#gaussian-blur)" sont les mêmes, mais pour quelqu'un de novice en traitement d'image, la valeur des arguments peut prêter à confusion.

**-blur  {_radius_}x{_sigma_} **

La valeur importante ci-dessus est la seconde, sigma. On peut la voir comme une approximation, en pixels, de l'ampleur avec laquelle vous voulez que l'image « s'étale » ou se floute. Voyez-la comme la taille du pinceau utilisé pour flouter l'image. Les nombres sont des valeurs à virgule flottante, vous pouvez donc utiliser une très petite valeur comme '0.5'. La première valeur, radius, est importante elle aussi, car elle contrôle la taille de la zone que l'opérateur doit examiner lors de l'étalement des pixels. Cette valeur devrait généralement être soit '0', soit au minimum le double de sigma. Pour vous montrer l'effet des options, prenons cette image simple, entourée de beaucoup d'espace (les opérateurs de flou ont besoin de beaucoup de place pour travailler), et dressons un tableau des résultats pour divers réglages de l'opérateur. J'ai aussi volontairement utilisé une police comportant à la fois des traits épais et fins, pour montrer le floutage des petits détails de trait et des grandes zones de couleur. |

  magick -font Gecko -pointsize 48  label:A \
          -bordercolor white -border 20x10  blur_source.png

[IM Output]

[IM Output]

Un petit radius limite tout effet du flou aux pixels situés à moins de ce nombre de pixels de celui qui est flouté (un rayon carré). Ainsi, utiliser un radius très petit comme '1' limite en pratique le flou aux voisins immédiats de chaque pixel. Notez que si sigma est un nombre à virgule flottante, radius ne l'est pas. Si une valeur à virgule flottante est donnée (ou calculée en interne), elle est arrondie à l'entier supérieur pour déterminer le « voisinage » du flou. La contribution de chaque voisin au résultat final reste contrôlée par sigma. Un sigma très petit (inférieur à '1' ) limite leur contribution à une faible quantité, tandis qu'un sigma plus grand fait contribuer tous les voisins de manière plus égale. Le plus grand sigma, '65355', produit une simple moyenne de tous les pixels du voisinage carré. Remarquez aussi qu'avec un radius assez petit mais un sigma grand, des artefacts apparaissent dans le résultat flouté. C'est particulièrement visible dans la sortie de "-blur 5x8". Cela est dû au petit voisinage carré qui « tronque » la zone floutée, produisant des arrêts brusques dans la courbe gaussienne lisse du flou, et générant ainsi des artefacts de sonnerie le long des bords nets. Donc…

N'utilisez jamais un radius plus petit que le sigma pour les flous

La solution idéale est simplement de fixer radius à '0x', comme le montre la dernière ligne du tableau ci-dessus. Dans ce cas, l'opérateur tente de déterminer automatiquement le meilleur radius pour le sigma donné. Le plus petit rayon qu'IM utilise est 3, et il vaut généralement 3 * sigma pour une version Q16 d'IM (un rayon plus petit est utilisé pour IM Q8, car il a moins de précision). Le seul cas où j'utiliserais un radius non nul serait pour un sigma très petit ou pour des flous spécialisés. Donc…

Lorsque c'est possible, utilisez un radius de zéro pour les opérations de flou

Les petites valeurs de sigma ne servent généralement qu'à estomper les lignes et adoucir les bords des images pour lesquelles aucun anticrénelage n'a été utilisé (voir Anticrénelage pour plus d'informations). Dans ce cas, je trouve qu'un flou de '1x0.3' est une valeur utile pour supprimer la plupart des « escaliers » des images. Les grandes valeurs, en revanche, sont utiles pour produire des images floues, pour des arrière-plans ou des effets d'ombre (voir Polices composées), voire des effets de mise en valeur d'image (comme le montre la page Exemples avancés). En raison de la façon dont IM traite les arguments de style 'x', le sigma ci-dessus est facultatif. Or c'est la valeur la plus importante, donc ce devrait être radius qui est facultatif, puisque radius peut être déterminé automatiquement. Ainsi, un argument à valeur unique pour ce type d'opérateurs de convolution est inutile. Cela ne changera probablement pas, car il en est ainsi depuis très longtemps et cela casserait trop de choses. Le flou utilise le réglage de canal Pour démontrer le flou, commençons simplement par générer un cercle noir flou sur un arrière-plan bleu clair… |

  magick -size 70x70 xc:lightblue \
          -fill black -draw 'circle 35,35 20,25'  circle_on_blue.png
  magick circle_on_blue.png    -blur 0x8         circle_on_blue_blur.png

[IM Output] [IM Output]
Comme vous le voyez, flouter une image simple comme celle-ci ne pose aucun problème. Cela fonctionne, comme on peut s'y attendre. Mais si nous réessayons avec une image contenant un arrière-plan transparent… |

  magick -size 70x70 xc:none \
          -fill black -draw 'circle 35,35 20,25'  black_circle.png
  magick black_circle.png       -blur 0x8        black_blurred.png

[IM Output] [IM Output]
Attendez, que s'est-il passé ! L'image n'a pas changé ! En réalité, l'opérateur a bel et bien fonctionné. Mais "[-blur](https://imagemagick.org/command-line-options/#blur)", en tant qu'opérateur de canal en niveaux de gris, est limité par le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" aux trois seuls canaux de couleur. Cela signifie que seuls les trois canaux de couleur de l'image ont été floutés, laissant intact le canal de transparence, ou canal alpha, de l'image. Or ci-dessus, l'image est un cercle entièrement opaque sur un canevas d'arrière-plan de la couleur 'none', qu'IM définit comme un noir entièrement transparent ! Cela signifie que nous avons un cercle noir sur un arrière-plan noir transparent. Autrement dit, une image dont toutes les couleurs sont noires, certaines parties opaques et d'autres transparentes. Par conséquent, en floutant l'image, nous n'avons flouté que du noir avec du noir, ce qui, comme vous le devinez sans doute, a produit… du noir ! Le résultat n'a donc présenté aucun changement de couleur. De plus, nous n'avons jamais touché au canal alpha ou de transparence de l'image, si bien que la transparence de l'image est restée inchangée. C'est-à-dire un cercle noir ! Ce que nous voulions vraiment faire, c'est flouter les quatre canaux de l'image, en particulier le canal alpha. Pour cela, nous réglons "[-channel](https://imagemagick.org/command-line-options/#channel)" sur les quatre canaux de l'image (par exemple en utilisant la valeur 'RGBA'). |

  magick black_circle.png  -channel RGBA  -blur 0x8  black_blurred_RGBA.png

[IM Output]
Pour résumer…

Utilisez toujours le réglage "-channel RGBA" lorsque vous floutez des images comportant de la transparence.

| La version 5.5.7 d'IM aurait flouté automatiquement les quatre canaux de couleur, mais l'opérateur a d'autres effets bogués sur les images avec transparence. Voir le bogue du flou avec transparence pour plus de détails.
---|---
| Certains formats d'image comme GIF et JPEG ne gèrent pas les pixels semi-transparents. Je vous suggère donc d'utiliser le format PNG pour toute image comportant des couleurs semi-transparentes, si possible.
---|---
Comme le montre ce qui précède, le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" est très important pour un opérateur en niveaux de gris tel que "[-blur](https://imagemagick.org/command-line-options/#blur)". Mais ce n'est pas la seule chose qui puisse compter lors de l'utilisation d'un tel opérateur. Par exemple, réessayons ce dernier exemple où l'on « oublie le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" », mais cette fois avec un cercle jaune. |

  magick -size 70x70 xc:none \
          -fill yellow   -draw 'circle 35,35 20,25'   yellow_circle.png
  magick yellow_circle.png       -blur 0x8           yellow_blurred.png

[IM Output] [IM Output]
Remarquez qu'au lieu d'obtenir une image inchangée comme avec le cercle noir, nous produisons cette fois un affreux cercle jaune avec du noir qui s'infiltre sur les bords. Beurk ! Ce problème est dû à un fait que peu de nouveaux utilisateurs d'IM réalisent.

Les pixels transparents ont une couleur, même si vous ne pouvez pas la voir.

Dans le cas ci-dessus, cette couleur transparente était le noir, qui s'est infiltré dans le cercle jaune. Bien sûr, nous pouvons corriger cela en réglant correctement "[-channel](https://imagemagick.org/command-line-options/#channel)" pour une image transparente ; les choses fonctionnent alors comme prévu. |

  magick yellow_circle.png  -channel RGBA  -blur 0x8  yellow_blurred_RGBA.png

[IM Output]

Fonctionnement interne du flou

Poussons cela plus loin avec un exemple plus compliqué, qui nous permettra d'explorer exactement ce que "[-blur](https://imagemagick.org/command-line-options/#blur)" fait en interne. Ici, nous créons une image très particulière : un cercle jaune dessiné sur un arrière-plan rouge entièrement transparent. Cela nous permettra de voir l'effet qu'a une couleur transparente lors du floutage des images. |

  magick -size 70x70 xc:'#F000' \
          -fill yellow   -draw 'circle 35,35 20,25'   yellow_on_red.png

[IM Output]
Notez que la couleur "#F000" est un rouge entièrement transparent. Autrement dit, les zones d'arrière-plan de l'image sont en réalité d'un rouge invisible, au lieu du noir entièrement transparent plus habituel. C'est important pour les tests ultérieurs. Nous pouvons voir la couleur des parties transparentes de l'image en supprimant effectivement le canal alpha de l'image à l'aide de l'opérateur "[-alpha off](https://imagemagick.org/command-line-options/#alpha)". |

  magick yellow_on_red.png   -alpha off  yellow_on_red_matte.png

[IM Output]
Essayons maintenant de flouter à nouveau uniquement les couleurs de l'image, en utilisant le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" par défaut, 'RGB'. |

  magick yellow_on_red.png   -blur 0x8   yellow_on_red_RGB.png

[IM Output]
Comme vous le voyez, l'arrière-plan rouge entièrement transparent de l'image s'est maintenant infiltré dans le cercle jaune visible, lui donnant un intéressant bord orange, comme précédemment. Cet effet vous plaira peut-être, mais il existe de meilleures façons de le produire que de s'appuyer sur des couleurs invisibles entièrement transparentes. Juste pour prouver que l'on peut flouter cette image correctement, faisons-le comme il faut… |

  magick yellow_on_red.png  -channel RGBA  -blur 0x8  yellow_on_red_RGBA.png

[IM Output]
La raison pour laquelle flouter avec le canal alpha ne produit pas les couleurs orange comme précédemment, c'est que lorsque l'opérateur "[-blur](https://imagemagick.org/command-line-options/#blur)" constate que le canal alpha est concerné (selon le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" actuel), il ne floute qu'à l'aide des pixels qui sont visibles selon ce canal alpha. Si le canal alpha n'est pas concerné, il l'ignore complètement, et le rouge entièrement transparent se floute avec le jaune pour produire diverses nuances d'orange. Fondamentalement, l'algorithme de flou a été modifié pour ignorer tous les pixels entièrement transparents de l'image, quelle que soit leur couleur. Les pixels semi-transparents restent concernés, mais leur effet sur le résultat est aussi modéré selon leur degré de visibilité. Résultat : le cercle est devenu une tache jaune floue et semi-transparente. Exactement ce que l'utilisateur cherchait probablement à obtenir. Si vous le souhaitez vraiment, vous pouvez flouter séparément les couleurs et le canal alpha, déconnectant ainsi de fait l'« ajustement de visibilité » de l'algorithme sur les canaux de couleur. Le résultat ressemble davantage à un soleil brillant à travers une brume brune et sale. |

  magick yellow_on_red.png  -channel  A  -blur 0x8 \
                             -channel RGB -blur 0x8  yellow_on_red_GS.png

[IM Output]
Ce dernier exemple a produit ce qu'un opérateur en niveaux de gris pur aurait produit s'il n'y avait absolument aucune interaction entre le canal alpha et les couleurs de l'image (transparentes ou non). C'est-à-dire que chacun des canaux rouge, vert, bleu et alpha est flouté de façon complètement indépendante des autres, comme s'il s'agissait d'une image distincte en niveaux de gris. Rappelez-vous simplement que, le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" par défaut étant 'RGB', l'action par défaut consiste à ne pas flouter le canal alpha, et à flouter les couleurs invisibles avec la couleur visible de l'image. N'êtes-vous pas content que "[-blur](https://imagemagick.org/command-line-options/#blur)" ne soit plus toujours un opérateur en niveaux de gris pur ? Vous pouvez cependant l'utiliser de cette façon si vous le voulez vraiment. Mais vous n'avez pas toujours eu ce choix… | _Avant la version 6.2.4-4 d'IM, les opérateurs "[-blur](https://imagemagick.org/command-line-options/#blur)" et "[-gaussian-blur](https://imagemagick.org/command-line-options/#gaussian-blur)" étaient appliqués comme une opération en niveaux de gris pure et, de ce fait, n'ajustaient pas la pondération des couleurs selon la « visibilité » de leur canal alpha. Résultat : toute forme de floutage avec transparence produisait presque toujours d'affreux effets de « halo noir », comme celui généré à dessein dans l'exemple précédent.

Cela était classé comme un bogue majeur et de longue date au sein de la distribution IM, et très difficile à contourner. Pour plus de détails sur ce problème, voir la page Bogue du flou avec transparence._
---|---

FUTURE: Blur and Trimming Images.

Opérateurs de flou vs flou gaussien

Il y a eu une certaine confusion quant à savoir lequel des deux opérateurs, "[-blur](https://imagemagick.org/command-line-options/#blur)" ou "[-gaussian-blur](https://imagemagick.org/command-line-options/#gaussian-blur)", est le meilleur pour flouter les images. Tout d'abord, "[-blur](https://imagemagick.org/command-line-options/#blur)" est plus rapide, mais il y parvient au moyen d'une technique en deux étapes : d'abord sur un axe, puis sur l'autre. L'opérateur "[-gaussian-blur](https://imagemagick.org/command-line-options/#gaussian-blur)", en revanche, est mathématiquement plus correct car il floute simultanément dans toutes les directions. L'écart de vitesse entre les deux peut être énorme, d'un facteur 10 ou plus, selon la quantité de flou en jeu. Dans un contexte plus technique, "[-blur](https://imagemagick.org/command-line-options/#blur)" est un filtre de convolution orthogonal unidimensionnel à 2 passes, tandis que "[-gaussian-blur](https://imagemagick.org/command-line-options/#gaussian-blur)" est un filtre de convolution cylindrique bidimensionnel. Voir Convolution pour plus de détails. Les résultats des deux méthodes devraient être identiques, contrairement à l'utilisation d'autres opérations de convolution « filtrées ». Cependant, le système à deux passes implique une étape intermédiaire où des effets d'arrondi, ou de quantification, peuvent se produire. Cristy le confirme d'ailleurs lorsqu'il rapporte… Vous devriez toujours utiliser "[-blur](https://imagemagick.org/command-line-options/#blur)" plutôt que "[-gaussian-blur](https://imagemagick.org/command-line-options/#gaussian-blur)" parce qu'il est plus rapide. Certains pixels différeront à l'intérieur à cause de l'arrondi, et les pixels de bord peuvent différer à cause de la perte des effets de bord du pixel virtuel, là encore à l'étape intermédiaire. En résumé, les deux opérateurs sont légèrement différents, mais de façon minime seulement. Comme "[-blur](https://imagemagick.org/command-line-options/#blur)" est bien plus rapide, utilisez-le. C'est ce que je fais dans presque tous les exemples impliquant du flou.

Grands flous à l'aide de Resize

Utiliser de grandes valeurs de sigma pour flouter une image est très lent. Mais une technique permet d'accélérer ce processus. Ce n'est toutefois qu'une méthode approximative, qui gagnerait à un peu de rigueur mathématique pour améliorer les résultats. Essentiellement, si les grands flous sont lents, c'est parce qu'il faut une grande fenêtre, ou « noyau », pour fusionner de nombreux pixels ensemble, et cela pour chaque pixel de l'image. Or, le redimensionnement (rendre l'image plus petite) fait la même chose, mais en générant moins de pixels au passage. La technique consiste essentiellement à réduire l'image, puis à l'agrandir de nouveau pour produire le résultat fortement flouté. Le filtre gaussien est particulièrement utile pour cela, car vous pouvez directement spécifier une définition de sigma gaussien. Par exemple, ici je floute la petite image de rose avec une valeur de sigma de 5 à l'aide des deux méthodes.

  magick rose: -blur 0x5   rose_blur_5.png
  magick rose: -filter Gaussian -resize 50% \
          -define filter:sigma=2.5 -resize 200%  rose_resize_5.png

[IM Output] [IM Output] [IM Output]

Notez que le réglage de sigma (utilisé uniquement à l'étape d'agrandissement) ne vaut que la moitié de celui réellement souhaité, puisque vous doublez aussi la taille de l'image. Vous pouvez rendre le flou résultant global plus grand en ajustant à la fois le ratio de réduction et la valeur de sigma donnée. C'est l'étape de réduction qui produit le gain de vitesse, mais vous devriez appliquer au moins un peu de flou à l'étape d'agrandissement à titre de contrôle qualité. Ce n'est qu'un exemple de la technique. Elle est vraiment destinée à être utilisée pour des valeurs de sigma très très grandes sur des images très très grandes. Par exemple, pour des flous utilisant un sigma de 10 ou plus sur des photos numériques modernes. Cette technique est aussi utilisée pour générer un flou multi-niveaux d'une même image dans Shepards de couleur éparse, variante.


Accentuation des images

En construction

L'accentuation est l'algorithme d'infographie que l'on voit le plus souvent dans les séries télé et les films. Imaginez la police en train de « nettoyer » une photo « zoomée » de la plaque d'immatriculation de la voiture d'un braqueur de banque, ou le visage d'un homme sur une vidéo floue de caméra de magasin, et vous voyez ce que je veux dire. En gros, ils tentent de récupérer les détails fins d'une image qui ont été perdus à cause du flou naturel dû à l'objectif de la caméra ou à des images de faible résolution. Les arguments d'accentuation ? (déplier)

Le facteur le plus important est le sigma, car c'est lui qui contrôle réellement
l'opération d'accentuation. Ce n'est que par accident historique qu'il est le
deuxième terme ci-dessus.
Il peut prendre n'importe quelle valeur à virgule flottante, de  .1  pour quasiment
aucune accentuation à 3 ou plus pour une accentuation sévère.   0.5 à 1.0 est plutôt bon.

Le rayon n'est qu'une limite de l'effet, tout comme le seuil.

Le rayon s'exprime uniquement en unités entières, car c'est ainsi que fonctionne
l'algorithme ; plus il est grand, plus c'est lent.  Mais il devrait valoir au minimum
1 fois le sigma, ou mieux encore 2 fois.
Pour commencer, oubliez le premier nombre : utilisez simplement 0, ce qui emploiera alors le meilleur nombre pour le facteur « sigma » que vous donnez. Plus le sigma est grand, plus l'accentuation est forte. -sharpen 0x.4 très petit
-sharpen 0x1.0 accentuation d'environ un pixel
-sharpen 0x3.0 probablement déjà trop grand
L'opérateur "[-sharpen](https://imagemagick.org/command-line-options/#sharpen)" est en quelque sorte un flou inversé. En fait, il fonctionne à peu près de la même manière. Pour des exemples montrant en quoi cela est lié au flou, voir Traitement d'image par interpolation et extrapolation. Par exemple, floutons une image simple, puis tentons de l'accentuer de nouveau pour retirer le flou.
  magick -font Gecko -pointsize 72 label:A  A_original.jpg
  magick A_original.jpg     -blur    0x3    A_blur.jpg
  magick A_blur.jpg         -sharpen 0x3    A_blur_sharp.jpg
  magick A_blur_sharp.jpg   -sharpen 0x3    A_blur_sharp_x2.jpg

[IM Output] [IM Output] [IM Output] [IM Output]

Comme vous le voyez, le résultat n'est pas parfait, car étaler les pixels rend les coins nets de l'image moins distincts. Remarquez en particulier l'épaississement supplémentaire apparu au coin des deux lignes tout en haut de l'image, ainsi que la quasi-disparition des lignes fines. Même en répétant l'opération ou en augmentant la taille de la zone d'accentuation, on ne parvient pas à rendre l'image exactement identique à l'originale, car on a fondamentalement perdu les détails les plus fins à cause du flou. En revanche, les détails à grande échelle peuvent être assez bien récupérés. Ce sont les algorithmes d'accentuation capables de récupérer les détails fins d'une image floutée ou fortement zoomée qui rapportent gros dans les logiciels utilisés par les forces de police, les astronomes et les agences d'espionnage gouvernementales.

Images accentuées (unsharp)

En construction

Les deux opérateurs "[-sharpen](https://imagemagick.org/command-line-options/#sharpen)" et "[-unsharp](https://imagemagick.org/command-line-options/#unsharp)" fonctionnent selon exactement la même technique : soustraire un flou de l'image originale. Pour les détails internes du fonctionnement réel de "[-sharpen](https://imagemagick.org/command-line-options/#sharpen)" et "[-unsharp](https://imagemagick.org/command-line-options/#sharpen)", voir Convolution unsharpen.

  magick A_blur.jpg       -unsharp 0x5        A_blur_unsharp.jpg

[IM Output] [IM Output]

D'après des commentaires sur  [Accentuation avec ImageMagick](http://redskiesatnight.com/2005/04/06/sharpening-using-image-magick/) d'Alex Beels

  Reproduire l'unsharp de GIMP
    Prendre le rayon gimp et ajouter 1 => sigma IM
    Diviser le seuil par 255    => seuil IM

  Donc  GIMP  radius=2  amount=1.5  threshold=5  donne
    -unsharp 0×3+1.5+0.0196

  Un autre a suggéré que   im_sigma = sqrt(gimp_radius)

**Notes brutes de Fred Weinhaus**

Image floutée pour le test.

A_original.jpg

magick A_original.jpg -blur 0x3 A_original_blur3.jpg

l'accentuation consiste simplement à soustraire de l'image une version floutée
de type gaussien pour obtenir une image de contours (filtre passe-haut), puis à
la refondre à parts égales avec l'originale, d'où une image rehaussée en passe-haut.

magick A_original_blur3.jpg -sharpen 0x3 A_original_blur3_sharp3.jpg

l'unsharp est plus complexe. Elle est similaire. Elle prend la différence (résultat
de contours) comme ci-dessus, c.-à-d. comme sharpen, MAIS ne refond qu'une fraction
ou un multiple de celle-ci avec l'image originale, ET seulement si la différence
dépasse un seuil. Ainsi unsharp 0x3+1+0 est en gros identique à sharpen 0x3

magick A_original_blur3.jpg -unsharp 0x3+1+0
A_original_blur3_unsharp3_1_0.jpg

compare -metric rmse A_original_blur3_sharp3.jpg
A_original_blur3_unsharp3_1_0.jpg null:
164.661 (0.00251256)

La différence peut venir du fait que l'on utilise ou non un filtre de flou
séparable (gaussien) dans l'un ou l'autre mais pas dans les deux. Ou ce peut être
juste quelques légères différences ailleurs dans l'implémentation d'IM.

Si l'on refond moins avec l'originale, on obtient moins d'accentuation.

magick A_original_blur3.jpg -unsharp 0x3+0.5+0
A_original_blur3_unsharp3_0p5_0.jpg

Si l'on refond davantage avec l'originale, on obtient plus d'accentuation.

magick A_original_blur3.jpg -unsharp 0x3+2+0
A_original_blur3_unsharp3_2_0.jpg

Si l'on augmente le seuil, on obtient de nouveau moins d'accentuation.

magick A_original_blur3.jpg -unsharp 0x3+2+0.2
A_original_blur3_unsharp3_2_0p2.jpg

Plusieurs de mes scripts (à moi, Fred), binomialedge, gaussianedge, sharpedge,
utilisent ce concept de mélange (entre le résultat filtré passe-haut et l'image
originale) et une description l'accompagne avec les scripts. Le seuillage dans mes
scripts se fait différemment et dans un but différent.

**Accentuation par déconvolution**

Il existe une technique fondée sur la déconvolution (division dans une forme
fréquentielle des images générée par transformée de Fourier rapide). Elle fonctionne
le mieux quand le « flou » exact appliqué à l'image originale est connu, ou calculé d'une manière ou d'une autre.

Pour l'instant, seules des méthodes brutes « DIY » sont disponibles dans IM
et un certain nombre de ces méthodes sont démontrées (mises à l'essai) dans la sous-section
[Multiplication/division de Fourier](https://usage.imagemagick.org/fourier/fft_math/).

Génération d'ombres

L'opérateur "[-shadow](https://imagemagick.org/command-line-options/#shadow)" est un opérateur avancé qui a été développé en même temps que les pages d'exemples d'IM. Il représente essentiellement un flou et une recoloration très complexes de la forme de transparence de l'image donnée. C'est une opération que les utilisateurs d'IM effectuaient tout le temps, mais qui demandait pas mal de connaissances pour savoir comment la réaliser correctement. L'opérateur prend une image (généralement un clone, qui peut déjà comporter une certaine transparence) et la transforme en une image d'ombre qui peut ensuite être positionnée sous l'image originale à un décalage donné (généralement à l'aide de l'opérateur spécial Fusion de calques). Voici par exemple une méthode standard pour ombrer une image existante, en utilisant une couleur d'ombre bleu marine assortie à cette page web. |

  magick rose: \( +clone  -background navy  -shadow 80x3+5+5 \) +swap \
          -background none   -layers merge  +repage   shadow.png

[IM Output]
Remarquez comme l'image d'ombre est correctement décalée par rapport à l'image. Vous pouvez même mettre à zéro la valeur de flou 'sigma ' et créer une ombre dure, mais semi-transparente. |

  magick rose: \( +clone  -background navy  -shadow 60x0+4+4 \) +swap \
          -background none   -layers merge +repage  shadow_hard.png

[IM Output]
L'utilisation de "[-layers](https://imagemagick.org/command-line-options/#layers) merge" pour superposer les images d'ombre avec l'image originale facilite la génération d'ombres provenant d'une source lumineuse venant de n'importe quelle direction, et pas seulement du coin supérieur gauche. |

  magick rose: \( +clone -background navy -shadow 80x3-5+5 \) +swap \
          -background none  -layers merge +repage  shadow_other.png

[IM Output]
Bien qu'il soit plus simple de recourir à une fusion de calques, celle-ci tend à décaler le décalage global de l'image résultante. Ce décalage n'est toutefois pas dû à la méthode de superposition, mais à "[+repage](https://imagemagick.org/command-line-options/#repage)" qui supprime tout décalage négatif ou positif éventuellement présent dans l'image de « calque » résultante. Voir Ombres et problème de décalage pour des techniques alternatives. | La méthode de fusion de calques a été ajoutée dans IM v6.3.6-2. Auparavant, il fallait utiliser à la place l'opérateur d'aplatissement de calques similaire "[-mosaic](https://imagemagick.org/command-line-options/#mosaic)". Cet opérateur pose cependant des problèmes (voir ci-après).
---|---

Ombres profilées

Or, "[-shadow](https://imagemagick.org/command-line-options/#shadow)" a été conçu en pensant aux images profilées (et c'est la raison de sa complexité). Par exemple, voici une police ombrée typique. |

  magick -background none -stroke black -fill white \
          -font Candice -pointsize 48 label:A -trim \
          \( +clone   -background navy   -shadow 80x3+3+3 \) +swap \
          -background none   -layers merge +repage  shadow_a.png

[IM Output]
S'il y a assez d'espace dans l'image originale pour inclure l'ombre sans la rogner, vous pouvez utiliser cette commande. Elle emploie une méthode de composition spéciale '[DstOver](compose.html#dst_over)' afin d'éviter d'avoir à inverser l'ordre des deux images. |

  magick -background none -stroke black -fill white \
          -font Candice -pointsize 48 label:'A ' \
          \( +clone -background navy -shadow 80x3+3+3 \) \
          -background none -compose DstOver -flatten  shadow_a_size.png

[IM Output]
Vous pouvez sans doute voir ici un léger rognage, car l'image originale ne disposait pas de tout à fait assez d'espace supplémentaire pour l'ombre demandée.

Ombres et problème de décalage

Le problème de l'ombre, c'est qu'une ombre floue s'étend dans toutes les directions. Pour compenser, l'opérateur "[-shadow](https://imagemagick.org/command-line-options/#shadow)" agrandit l'image originale réelle en ajoutant une bordure de 2 fois la taille de la valeur de flou 'sigma ' donnée. Autrement dit, si vous floutez une ombre avec 'x3', il agrandit l'image de 12 pixels (2 fois 3 pixels de chaque côté). Pour compenser cet agrandissement, on attribue aussi à l'image d'ombre un décalage de canevas virtuel négatif approprié, afin qu'elle soit positionnée correctement par rapport à l'image ombrée. Pour une image normale, cela signifie que l'image d'ombre générée aura un décalage négatif. Cela pose toutefois problème lorsque votre IM ne dispose pas de la méthode 'merge' de "[-layers](https://imagemagick.org/command-line-options/#layers)". Par exemple, ici nous tentons d'ajouter une ombre du côté gauche de l'image, comme si une lumière brillait depuis le coin supérieur droit. |

  magick rose: \( +clone  -background navy  -shadow 60x3-5+5 \) +swap \
          -background none   -mosaic   shadow_left_clipped.png

[IM Output]
Comme vous le voyez, l'ombre a été rognée par l'opérateur "[-mosaic](https://imagemagick.org/command-line-options/#mosaic)" à cause du décalage négatif. Pas terrible ! Une solution consiste à ajouter un décalage initial à l'image originale pour que le décalage de l'image d'ombre résultante ne soit pas négatif. |

  magick rose: -repage +11+0\
          \( +clone   -background navy   -shadow 80x3-5+5 \) +swap \
          -background none   -mosaic   shadow_left.png

[IM Output]
Une autre méthode consiste à décaler les deux images d'une quantité appropriée après avoir généré l'ombre. Cela supprime tout décalage négatif avant de les assembler avec "[-mosaic](https://imagemagick.org/command-line-options/#mosaic)". Notez l'emploi d'un indicateur '!' avec "[-repage](https://imagemagick.org/command-line-options/#repage)" pour ajouter le décalage donné aux deux images. |

  magick rose: \( +clone -background navy -shadow 80x3-5-5 \) +swap \
          -repage +11+11\! -background none  -mosaic  shadow_tl.png

[IM Output]
L'espace nécessaire devrait être d'au moins 2×'sigma '-'offset ', soit dans ce cas 2×3--5 ⇒ 11 pixels, sans quoi vous risquez de rogner l'ombre. Cependant, un espace d'environ 'sigma '-'offset ' produit généralement un niveau de rognage acceptable. Une autre solution consiste à agrandir l'image originale afin de ménager assez de place pour l'ombre finale. C'est la MEILLEURE façon de gérer les ombres tout en préservant l'emplacement original de l'image sur le canevas virtuel. Par exemple, ici je rembourre l'image originale avec un peu d'espace supplémentaire pour l'ombre, puis je place l'image d'ombre directement en dessous. J'ai inclus une bordure dans le résultat affiché pour que vous puissiez voir que l'image finale reste centrée dans l'image « rembourrée ». |

  magick rose: -bordercolor None -border 11x11 \
          \( +clone -background navy -shadow 80x3+5+5 \) \
          -background none -compose DstOver -flatten \
          -compose Over  shadow_space.png

[IM Output]
Le rembourrage nécessaire devrait être d'au moins 'sigma '+abs('offset ') ou, mieux encore, 2×'sigma '+abs('offset '), afin de garantir que l'ombre n'est pas rognée. Le rembourrage peut être asymétrique pour réduire l'espace, mais on utilise généralement un rembourrage symétrique (comme ci-dessus) par commodité. | Notez que, bien que le réglage "-compose Over" ne soit pas réellement nécessaire ci-dessus, il est recommandé. Sinon, des opérations ultérieures (même dans d'autres commandes "magick") pourraient être affectées, avec des résultats inattendus. Autrement dit, un réglage de composition non standard peut affecter d'autres opérations, notamment : la superposition d'images, l'ajout de bordures ou de cadres, ou simplement d'autres compositions.
---|---

Ombre et Composite

Beaucoup de gens sur les forums génèrent une image d'ombre puis tentent d'utiliser le "[-composite](https://imagemagick.org/command-line-options/#composite)" de plus bas niveau pour fusionner les images. Par exemple, superposer directement l'image originale sur une image d'ombre (plus grande) générée. |

  magick rose: \( +clone  -background navy  -shadow 60x3 \) \
          +swap -composite  +repage shadow_composite.png

[IM Output]
Le premier point à retenir, c'est que les opérateurs de composition sont de très bas niveau et ne lisent aucun décalage de calque ou de canevas virtuel que l'image originale ou l'opérateur d'ombre pourraient posséder. En fait, nous devons toujours supprimer ou ajuster le décalage éventuellement négatif (mauvais) que l'ombre a ajouté, à l'aide du réglage Repage. Cela signifie que le décalage visible dans l'exemple ci-dessus est généré simplement à cause de la façon dont l'ombre a agrandi l'image d'entrée pour lui laisser de la place. L'ombre se trouve là où elle est uniquement à cause de l'expansion de l'image d'ombre de 2 fois sigma. De plus, si vous utilisez une « ombre dure » (sigma nul), vous vous retrouverez également sans aucun décalage de l'ombre, si bien que l'ombre sera cachée par l'image originale, hormis un éventuel effet de halo sombre sur les bords. Vous avez essentiellement renoncé au calcul de décalage intégré que fournit l'opérateur d'ombre. Bien sûr, vous pouvez à la place calculer et définir les réglages appropriés de géométrie/gravité de composition ; le plus simple est d'utiliser un réglage "[-gravity](https://imagemagick.org/command-line-options/#gravity) Center", puisque l'image d'ombre agrandie est étendue également de tous les côtés. |

  magick rose: \( +clone  -background navy  -shadow 60x3 \) +repage \
          +swap -gravity center -geometry -3-5 -composite shadow_geometry.png

[IM Output]
Notez que le décalage de géométrie centré est négatif car l'ordre des images a été inversé.

Contours d'ombre

Vous pouvez aussi utiliser "[-shadow](https://imagemagick.org/command-line-options/#shadow)" pour générer des contours flous de formes, comme du texte. En utilisant la fusion de calques, IM ajoute automatiquement l'espace supplémentaire nécessaire au flou semi-transparent. |

  magick -background none -fill white \
              -font Candice -pointsize 48 label:A -trim \
          \( +clone -background black  -shadow 100x3+0+0 \) +swap \
          -background none   -layers merge +repage  shadow_outline.png

[IM Output]
Ici, vous pouvez voir un problème lié à l'utilisation d'une forme floutée pour le contour. Le bord de la forme sera toujours au moins à 50 % transparent, de par la nature même du fonctionnement du flou. Pour compenser, vous pouvez soit agrandir la forme de l'image qui sera ombrée (pour un exemple, voir Police à contour doux plus dense), soit, mieux encore, ajuster la transparence de l'image d'ombre à l'aide d'un ajustement de niveaux pour qu'une transparence de 50 % le long des bords de la forme devienne entièrement opaque. |

  magick -background none -fill white \
          -font Candice -pointsize 48  label:A -trim \
          \( +clone -background black  -shadow 100x3+0+0 \
             -channel A -level 0,50% +channel \) +swap \
          +repage -gravity center -composite   shadow_outline_darker.png

[IM Output]
Une autre méthode pour gérer le positionnement et le décalage de l'ombre consiste à jeter purement et simplement tous les décalages générés par "[-shadow](https://imagemagick.org/command-line-options/#shadow)" (à l'aide de "[+repage](https://imagemagick.org/command-line-options/#repage)") et à superposer l'image originale au centre de l'image d'ombre plus grande. En ajoutant un décalage de composition "[-geometry](https://imagemagick.org/command-line-options/#geometry)", vous pouvez ensuite décaler l'ombre comme une action distincte. |

  magick -background none -fill white -stroke black \
          -font Candice -pointsize 48  label:A -trim \
          \( +clone -background navy  -shadow 80x3 \) +swap \
          +repage -gravity center -geometry -3-3 -composite \
          shadow_geometry_offset.png

[IM Output]
Remarquez toutefois que le décalage est l'opposé de celui que vous utiliseriez normalement pour positionner l'ombre. C'est parce que vous décalez en réalité la forme du texte et non l'ombre, donc c'est dans la direction opposée. Cette méthode rognera cependant l'image source originale, plutôt que l'image d'ombre, si le décalage devient plus grand que deux fois le « sigma » du flou. De ce fait, elle ne peut pas être utilisée pour des « ombres dures » (avec un « sigma » de flou 'x0'), à moins d'inclure un peu d'espace de rembourrage à l'image d'ombre pour y superposer l'image originale. Avec une ombre douce et floue, en revanche, c'est rarement un problème. Pour quelques exemples pratiques d'ombrage, voir Ombrage des vignettes et Meilleure génération de logos 3D.

Ombre dans la commande Montage

Depuis IM v6.3.1, le réglage "[-shadow](https://imagemagick.org/command-line-options/#shadow)" de "magick montage" a commencé à tirer parti des ombres douces « profilées » que fournit cet opérateur. |

  montage -label Rose  rose: \
          -background none -geometry +5+5 -shadow  shadow_montage.png

[IM Output]
Cependant, aucun contrôle n'est fourni pour définir la couleur, le flou et le décalage de cette ombre, car "magick montage" n'a jamais fourni de tels contrôles au-delà d'une simple option marche/arrêt.

Fonctionnement interne de l'ombre

En interne, "[-shadow](https://imagemagick.org/command-line-options/#shadow)" est extrêmement complexe. Fondamentalement, il doit non seulement agrandir une image pour accueillir une « ombre douce et floue », mais aussi flouter la forme existante de l'image, définir sa couleur de façon appropriée et enfin ajuster les décalages de page/canevas virtuels ; le tout selon les spécifications de l'utilisateur. Par exemple, étant donné la commande "[-shadow](https://imagemagick.org/command-line-options/#shadow)" suivante…

    magick image_clone.png -shadow 60x4+5+5   image_shadow.png

L'opération IM équivalente serait…

  magick image_clone.png -alpha set \
          -bordercolor none  -border 8  -repage -8-8\!  \
          -channel A -virtual-pixel transparent \
               -blur 8x4 -evaluate multiply .60 +channel
          -fill {background_color} -colorize 100% \
          -repage +5+5\!     image_shadow.png

Notez que la valeur 8 ci-dessus est deux fois le sigma du flou, afin de fournir assez d'espace pour l'ombre floutée. Cela signifie toutefois que l'image finale sera plus grande de 4 fois sigma pixels. Pour compenser, un décalage négatif d'égale valeur est aussi ajouté. Or, comme un décalage négatif de 2 fois sigma sera ajouté à l'image générée, il faut veiller à éviter que l'ombre ne soit rognée ou mal positionnée par rapport à l'image originale. On peut y parvenir soit en donnant à l'image originale un décalage positif initial (comme 8-5 ou +3+3 pixels), soit en utilisant la fusion de calques qui comprend les décalages négatifs sans rogner l'image finale. En somme, utilisez les techniques précédentes pour gérer correctement les décalages négatifs éventuels liés aux images d'ombre. Les formats PNG et MIFF sont les seuls formats d'image que je connaisse capables de gérer un décalage négatif ainsi que des pixels semi-transparents. Je recommande d'utiliser le PNG pour enregistrer des images d'ombre en vue d'un usage futur.
Comme je l'ai dit, "[-shadow](https://imagemagick.org/command-line-options/#shadow)" est une opération très complexe. Bien sûr, si l'exemple ci-dessus est proche de ce que "[-shadow](https://imagemagick.org/command-line-options/#shadow)" fait en interne, ce n'est pas exactement pareil. L'opérateur "[-shadow](https://imagemagick.org/command-line-options/#shadow)" réel ne modifie aucun des réglages globaux, tels que les couleurs de bordure/arrière-plan/remplissage ou le réglage de pixel virtuel actuel. De plus, il court-circuite l'utilisation de l'opérateur "[-blur](https://imagemagick.org/command-line-options/#blur)" si le sigma du flou est fixé à 0, pour empêcher la fonction de flou d'émettre un avertissement pour un sigma ou un rayon nul.
FUTURE: overlaying multiple shadows

Overlaying two images with shadows, produces an unrealistic darkening of the
shadow where the shadow overlaps.  This darkening would be correct if each
object was lit by separate light sources, but more commonly the objects are
lit by the same light source.

The solution is to overlay the one image over the other, applying the shadow
effects to the opaque parts of each layer image in turn. That is, the
background shadow should be generated separately into each layer.  Remember
the shadow cast by the top most layer should become fuzzier than the shadow
contribution of the bottom most layer.

This complexity gets worse when you have three objects shadowing each other.
Also the offset and blurring from the shadow of each object should technically
be separate.  To generate that level of complexity, probably a 3-d ray-tracing
program should be used instead (sigh).

Flous spécialisés

Il existe quelques autres sortes de flous qui ont été ajoutées à la version 6 d'IM et qui ont des usages très particuliers. Ils opèrent de façons spécifiques, et non dans toutes les directions comme le font la plupart des autres opérations de style « convolve ». Ils peuvent aussi ne pas fonctionner aussi bien que d'autres méthodes de génération de flous spécialisés, comme le fait de déformer les images avant et après un flou plus normal. Voir par exemple Astuces de cycle polaire et Floutage elliptique (mappé).

ATTENTION : tous ces flous sont expérimentaux, et leur syntaxe peut changer !

Flou radial

Vous pouvez flouter l'image en cercle à l'aide d'un "[-radial-blur](https://imagemagick.org/command-line-options/#radial-blur)", comme si elle tournoyait sur elle-même. Bien que, techniquement, il s'agisse d'un flou de rotation ou angulaire plutôt que d'un flou radial. NOTE : vous pouvez obtenir un résultat de bien meilleure qualité (quoique à une vitesse bien plus lente) à l'aide d'une technique de flou de rotation Depolar-Polar. Notez toutefois que, comme un opérateur "[-blur](https://imagemagick.org/command-line-options/#blur)" normal, "[-radial-blur](https://imagemagick.org/command-line-options/#radial-blur)" est affecté par le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)". |

  magick -size 70x70 xc:none \
          -stroke red    -strokewidth 15 -draw 'line 35,5 35,65' \
          -stroke yellow -strokewidth  9 -draw 'line 35,5 35,65' \
          -channel RGBA  -radial-blur 30   radial_blur.png

[IM Output]
Vous pouvez placer l'objet hors du centre (en ajoutant de l'espace à une image) pour des effets "[-radial-blur](https://imagemagick.org/command-line-options/#radial-blur)" plus intéressants. |

  magick -size 70x70 xc:none \
          -stroke red    -strokewidth 15 -draw 'line 5,50 65,50' \
          -stroke yellow -strokewidth  9 -draw 'line 5,50 65,50' \
          -channel RGBA  -radial-blur 90   radial_blur_90.png

[IM Output]
L'argument du flou est l'angle que couvre le flou radial. C'est-à-dire la moitié de cet angle dans chaque direction à partir de l'image originale. Ainsi, un angle de 180 couvre un demi-cercle, tandis que 360 degrés flouteront l'image sur un cercle complet. |

  magick -size 70x70 xc:none \
          -stroke red    -strokewidth 15 -draw 'line 5,50 65,50' \
          -stroke yellow -strokewidth  9 -draw 'line 5,50 65,50' \
          -channel RGBA  -radial-blur 180   radial_blur_180.png

[IM Output]
|

  magick -size 70x70 xc:none \
          -stroke red    -strokewidth 15 -draw 'line 5,50 65,50' \
          -stroke yellow -strokewidth  9 -draw 'line 5,50 65,50' \
          -channel RGBA  -radial-blur 360   radial_blur_360.png

[IM Output]
Vous pouvez même ajouter un peu de déformation d'image pour rendre l'effet plus intéressant… |

  magick -size 70x70 xc:none \
          -stroke red    -strokewidth 15 -draw 'line 5,50 65,50' \
          -stroke yellow -strokewidth  9 -draw 'line 5,50 65,50' \
          -channel RGBA  -radial-blur 180 -swirl 180 radial_swirl.png

[IM Output]
Le flou radial en cercle complet peut servir à générer de grossiers dégradés circulaires. Cependant, formuler la forme correcte pour générer le bon dégradé peut être extrêmement difficile, et n'en vaut probablement pas la peine. J'ai quand même essayé… |

  magick -size 80x80 xc:lightblue -fill red \
          -draw "path 'M 40,40   C 43,43 47,47 50,40 \
                  S 52,23 40,20   S 14,22 10,40   S 15,75 40,79 Z'" \
          radial_gradient_pre.gif
  magick radial_gradient_pre.gif  -radial-blur 360  radial_gradient.gif

[IM Output] [IM Output]

Flou de mouvement

Vous pouvez ajouter un flou s'estompant linéairement dans une seule direction (en donnant un rayon et un sigma, plus l'angle selon lequel le flou doit se produire) à l'aide d'un "[-motion-blur](https://imagemagick.org/command-line-options/#motion-blur)". Cela donne à votre image un aspect comme si elle (ou la caméra) se déplaçait très très vite. |

  magick -size 70x70 xc:none  -channel RGBA \
          -fill yellow  -stroke red  -strokewidth 3 \
          -draw 'circle 45,45 35,35'  -motion-blur 0x12+45  motion_blur.png

[IM Output]
Notez que non seulement l'objet acquiert une traînée, mais que les bords dans le sens du mouvement voient aussi l'arrière-plan s'y flouter. Ce flou du bord d'attaque peut être amélioré en redessinant ou en superposant l'image originale et en réappliquant plusieurs fois un "[-motion-blur](https://imagemagick.org/command-line-options/#motion-blur)" plus petit. |

  magick -size 70x70 xc:none -channel RGBA \
          -fill yellow  -stroke red -strokewidth 3 \
          -draw 'circle 45,45 35,35'  -motion-blur 0x8+45 \
          -draw 'circle 45,45 35,35'  -motion-blur 0x6+45 \
          -draw 'circle 45,45 35,35'  -motion-blur 0x2+45 \
          motion_blur_redraw.png

[IM Output]
Plusieurs flous de mouvement peuvent produire un certain étalement de la traîne de l'objet en mouvement. Un peu comme de la fumée ou des flammes qui se dissipent. |

  magick -size 70x70 xc:none -channel RGBA \
          -fill yellow  -stroke red -strokewidth 3 \
          -draw 'circle 45,45 35,35'  -motion-blur 0x12+25 \
          -draw 'circle 45,45 35,35'  -motion-blur 0x12+55 \
          -draw 'circle 45,45 35,35'  -motion-blur 0x12+40 \
          motion_blur_spread.png

[IM Output]
Cette technique peut servir à générer une ombre qui s'étale sur le sol. Vous pourriez aussi générer un flou de mouvement, puis lui appliquer un peu de flou radial, ce qui nécessite toutefois de décaler l'image pour bien centrer le résultat. Vous pouvez aussi ajouter un peu de déformation d'image supplémentaire pour rendre les choses encore plus intéressantes… |

  magick -size 70x100 xc:none -channel RGBA \
          -fill yellow  -stroke red -strokewidth 3 \
          -draw 'circle 35,80 45,70'  -motion-blur 0x20+90 \
          -background none  -rotate 50  -wave 5x25  -rotate -50 \
          -gravity center   -crop 70x100+0+0  +repage \
          -draw 'circle 35,80 45,70'  -blur 0x2 \
          motion_wave.png

[IM Output]

Notez que si "[-radial-blur](https://imagemagick.org/command-line-options/#radial-blur)" floute dans les deux directions, "[-motion-blur](https://imagemagick.org/command-line-options/#motion-blur)" ne floute que dans une seule. Dans les deux cas, je vous recommande de rembourrer votre image avec de l'espace supplémentaire autour du bord (généralement à l'aide de "[-border](https://imagemagick.org/command-line-options/#border)"), car ces deux flous spécialisés ont de forts effets de bord qu'il vaut mieux éviter. Si vous trouvez un exemple ou un usage plus pratique ou intéressant de ce qui précède, envoyez-m'en une copie par courriel (adresse dans le pied de page).


Adoucissement des formes à l'aide du flou

En construction

ATTENTION : cette section est désormais obsolète, et les utilisateurs souhaitant adoucir correctement une image devraient consulter Adoucissement des formes à l'aide de la distance. Ce qui est montré ici est connu sous le nom d'« adoucissement par flou », qui, comme le montre la partie ultérieure, est une « fausse technique d'adoucissement ». Même ainsi, cela reste une méthode utile, mais uniquement avec des formes d'image « convexes ». Lorsque vous découpez une forme dans une image, vous voulez souvent adoucir ou flouter un peu les bords de la forme pour lui donner un aspect plus lisse, atténuer les parties hors de la forme qui auraient pu être incluses par accident, ou permettre à l'image de s'intégrer à l'arrière-plan sans qu'il soit évident qu'il s'agit d'un copier-coller. En gros, au lieu d'avoir un bord « dur » sur une forme, on l'adoucit pour « simuler » un anticrénelage, ou un flou d'objectif, afin que le collage soit plus homogène. Par exemple, voici une image GIF que je superpose à un arrière-plan de couleur claire. |

  magick shape.gif -background wheat -flatten  overlaid.png

[IM Output]
Cependant, comme je superpose une image GIF à transparence booléenne, qui présente de ce fait des bords très crénelés, en escalier, l'image paraît vraiment déplacée sur l'arrière-plan. Si vous aviez affaire à des images réelles, le résultat ci-dessus semblerait très artificiel. Mais en floutant un peu la transparence de l'image, je peux faire en sorte que la superposition s'intègre plus harmonieusement à l'arrière-plan. |

  magick figure.gif -alpha set -virtual-pixel transparent \
          -channel A -blur 0x0.7  -level 50,100% +channel \
          -background wheat -flatten  edge_blured.png

[IM Output]
C'est d'ailleurs exactement la même technique que celle utilisée pour générer des bords doux sur les vignettes. Pour d'autres exemples, regardez les résultats du script de masquage "feather" de Fred Weinhaus. Comme vous le voyez, cela fonctionne très bien pour les cas simples, quand il y a un fort contraste entre l'image superposée et l'arrière-plan. Il y a cependant de sérieux problèmes lorsque vous voulez utiliser un facteur de flou d'adoucissement bien plus grand, ou lorsque les deux images sont toutes deux de couleurs très claires.
Notez que, comme le flou s'étend à la fois vers l'intérieur et vers l'extérieur de la zone de la forme, le canal alpha doit être ajusté pour que le bord de la forme soit à zéro (entièrement transparent), mais devienne rapidement entièrement opaque à mesure que l'on s'éloigne du bord. Un exemple d'un tel ajustement du canal alpha est fourni par CLUT avec gestion de la transparence. Cet ajustement est crucial, sinon, au lieu d'atténuer la zone hors de la forme, vous ajoutez une ombre ou un halo semi-transparent de la zone hors de la forme. Fondamentalement, une « couleur indéfinie » semi-transparente auparavant cachée par la transparence de l'image. Le flou a cependant un problème particulièrement fâcheux : il lisse aussi le contour de la forme. Par exemple… |

  magick -size 100x60 xc: -draw 'polygon 5,5 50,30 5,55 95,30' \
          sharp_angles.gif

[IM Output]
Si vous floutez cette forme particulière, vous obtenez… |

  magick sharp_angles.gif -blur 0x5  feather_blurred.gif

[IM Output]
Remarquez comme les pointes du masque ont été atténuées davantage que les bords. Remarquez aussi comme l'angle interne semble s'être « rempli », ce qui, avec la transparence, peut faire que des pixels entièrement transparents deviennent semi-transparents. Autrement dit, des pixels d'une couleur indéfinie peuvent réellement devenir visibles ! Vous pouvez le voir plus clairement en appliquant un seuil à l'image. |

  magick feather_blurred.gif  -threshold 50%  feather_blur_thres.gif

[IM Output]
C'est le problème de l'utilisation du « flou » comme méthode d'adoucissement des images. Et c'est particulièrement préoccupant quand on traite des choses comme les doigts, les oreilles, ainsi que les zones entre les jambes. Autrement dit, l'effet sur la forme des appendices eux-mêmes et sur les espaces qui les séparent. Si l'image possède un contour de bord de type dessin animé, ce n'est pas un si gros problème pour un adoucissement d'« 1 pixel ». Mais pour des images réelles (sans bords nets), c'est un vrai problème. Une solution appropriée consisterait à trouver une sorte de mesure de la distance d'un point par rapport à un bord de la forme, mais telle que deux bords proches n'additionnent pas leurs effets. Cette opération de mesure de distance a désormais été ajoutée à IM et est connue sous le nom de morphologie de distance. Pour les détails de son utilisation pour l'adoucissement, voir Adoucissement des formes à l'aide de la distance.


Opérateurs connexes

Basic image modifications
  -despeckle -enhance
  -noise  -spread -displace

  -median
    Set each channel color of the pixel to the median value of all all pixels
    within a given radius. (median = center most value of all values found,
    half on one side, half on the other).  This is a way of "de-speckling" an
    image  (such a dust in a scan).  But could distort edges, cause some color
    channel aburation, and remove thin lines.

    This filter is the best technique to use for removing Salt & Pepper
    noise, especially on gray scale images.

    It is suggested that a trim for a scan use a median filtered image for
    attempting to find the appropriate bounding box.

  -adaptive-sharpen  radius x sigma
    Adjust sharpening so that it is restricted to close to image edges
    as defined by edge detection.

    See forum discussion
      https://magick.imagemagick.org/viewtopic.php?f=1&t=10266

  -adaptive-blur   radius x sigma
    Blur images, except close to the edges as defined by an edge detection
    on the image.  Eg make the colors smoother, but don't destroy any
    sharp edges the image may have.

  -adaptive-resize
    Resize but attempt not to blur across sharp color changes