Primitives de filtres de manipulation de pixels

Ces primitives déplacent les pixels ou mélangent les pixels adjacents.

Matrice de convolution

La primitive Matrice de convolution utilise les pixels voisins pour modifier la couleur d'un pixel. La façon dont un pixel est modifié est définie par une matrice de N×M avec une entrée pour chaque pixel voisin.

Formule de la matrice de convolution.

L'illustration ci-dessous donne un exemple de « flou gaussien » qui utilise une matrice de 5×5 autour du pixel central. Le Kernel (noyau) est une représentation en nombres entiers d'un flou gaussien à 2 dimensions avec une déviation standard de 1,4 pixels. Il est normalisé par un Diviseur[15].

Dialogue du filtre Matrice de convolution.
Dialogue des Effets de filtres après définition d'un flou gaussien utilisant la primitive de filtre Matrice de convolution.
Filtre Matrice de convolution, exemple de flou gaussien.
Le filtre Matrice de convolution - Flou gaussien ci-dessus est appliqué à une photographie.

Les paramètres de cet effet sont les suivants :

  • Dimensions : taille de la matrice (x×y).
  • Cible : quel élément de la matrice correspond au pixel cible, le réglage par défaut centrant le Kernel (noyau) sur le pixel cible.
  • Kernel (noyau) : la matrice.
  • Diviseur : facteur d'échelle après application du Kernel (noyau).
  • Déviation : valeur ajoutée après application du Kernel (noyau), par défaut 0.
  • Mode bordure : la méthode selon laquelle l'image d'entrée est étendue de sorte que les pixels du bord puissent être évalués. Les options sont les suivantes : Dupliquer (les pixels du bord sont dupliqués), Envelopper (les pixels sont pris sur le bord opposé de l'image d'entrée), Aucun (les pixels étendus reçoivent des valeurs RVB et Alpha de zéro). Pour le moment Inkscape n'utilise pas ce paramètre bien qu'il figure dans l'interface utilisateur.
  • Préserver l'opacité : si la case est cochée, l'Alpha sera copié directement depuis l'image d'entrée. Sinon, il sera calculé exactement comme les RVB.

La primitive Matrice de convolution est nécessairement liée aux pixels évalués. Par défaut, la taille du pixel est celle de l'affichage. Cela signifie que l'image produite n'est pas indépendante de la résolution. La norme SVG fournit des façons d'éviter cela à travers les attributs filterRes (résolution du filtre) et kernelUnitLength (unité de longueur du noyau) mais Inkscape ne les supporte pas encore.

Exemples

Détection de contour

Kernel (noyau) :

Matrice de convolution : formule de détection de contour.

Diviseur = 1,0, Déviation = 0,0, Préserver l'opacité sélectionné.

Filtre Matrice de convolution, exemple de détection de contour.
Détection de contour.
Netteté

Kernel (noyau) :

Matrice de convolution : formule de netteté.

Diviseur = 1,0, Déviation = 0,0.

Filtre Matrice de convolution, exemple de netteté.
Netteté.
Accentuation

Le filtre de « Netteté » ci-dessus est un peu extrême. Ce filtre d'« Accentuation » est un peu plus subtil.

Kernel (noyau) :

Matrice de convolution ; formule d'accentuation.

Diviseur = 9,0, Déviation = 0,0.

Filtre Matrice de convolution, exemple d'accentuation.
Unsharp.
Estampage

Kernel (noyau) :

Matrice de convolution : formule d'estampage.

Diviseur = 1,0, Déviation = 0,0.

Filtre Matrice de convolution, exemple d'estampage.
Estampage.

Displacement Map (carte de déplacement)

La primitive Displacement Map (carte de déplacement) déforme une image Bitmap à l'aide d'une autre comme entrée. Un pixel de l'image Bitmap source est déplacé à une nouvelle coordonnée selon les équations x' = Redimensionnement × (CX(x,y)-0,5) et y' = Redimensionnement × (CY(x,y)-0,5) où CX et CY sont n'importe quelles composantes RVB ou Alpha, sélectionnables par les attributs Déplacement en X et Déplacement en Y. Les canaux X et Y peuvent être schématisés avec des couleurs différentes.

Le filtre Displacement Map (carte de déplacement) peut être utilisé pour produire d'intéressants effets... mais calculer une carte correcte peut être difficile. Dans les exemples suivants, le déplacement x est réglé sur rouge et le déplacement y est réglé sur vert. Le fond vert olive correspond aux valeurs vert et rouge de 127... qui correspondent (presque) à aucun déplacement.

Carte de grossissement.
Carte de grossissement (dégradés uniformes à l'intérieur d'un cercle).
Grossissement.
Grossissement.
Carte de bulle.
Carte de bulle.
Bulle.
Bulle.
Carte de tournoiement.
Carte de tournoiement.
Tournoiement.
Tournoiement.
Carte d'ondulation.
Carte d'ondulation.
Ondulation.
Ondulation.

Il y a une paire de problèmes dans la version 0.46 d'Inkscape. Le premier vient d'un bogue de l'implémentation qui utilise une image de fond. Cela vous oblige à utiliser une image externe (par le biais du filtre Image) ou à utiliser la sortie d'une autre primitive de filtre comme carte de déplacement. Un autre problème tient au débordement de l'image à l'extérieur de la surface voulue. Ce problème peut être corrigé en réglant la zone des effets de filtre sur la Boîte englobante de l'objet.

Voir l'exemple d'image stéréoscopique dans la section suivante pour un autre exemple d'utilisation de ce filtre.

[Note]Note

Aucun déplacement ? Impossible avec la norme SVG. Couleur et Alpha sont décrits par un octet (8 bits), ce qui correspond à une étendue de 0 à 255. Un déplacement nul correspondrait à une valeur médiante entre 0 et 255, soit 127,5. Or il ne peut s'agir que de nombres entiers, si bien que vous ne pouvez pas avoir une valeur de 127,5. Choisissez, 127 ou 128. Dans la plupart des cas pratiques, le décalage sera négligeable.

Flou gaussien

La primitive Flou gaussien rend les objets flous. Des reflets et réverbérations réalistes peuvent être ajoutés aux dessins ainsi que du flou. La primitive crée une image de sortie en utilisant une moyenne pondérée gaussienne des pixels d'entrée autour de l'emplacement de chaque pixel de sortie correspondant.

En interne, le niveau de flou est défini en terme de rayonnement flou qui pour les tenants des mathématiques est simplement la déviation standard du flou gaussien. Techniquement, une fonction gaussienne s'étend à l'infini. Pour des raisons pratiques, la limite du flou d'un objet est deux fois le rayonnement flou à l'extérieur de la Boîte englobante au niveau de flou maximal.

La primitive Flou gaussien sollicite fortement le processeur. La sortie est un compromis entre vitesse et qualité. On peut régler la qualité du flou pour l'affichage de l'écran dans le dialogue des Préférences d'Inkscape (Fichier Préférences d'Inkscape... (Maj+Ctrl+P)) sous l'entrée Filtres. Le choix d'une option de qualité basse affectera le plus les petits objets. L'export en bitmap est toujours effectué en haute qualité (et peut donc être lent).

Un filtre Flou gaussien peut être créé aussi bien par les dialogues Effets de filtres ou Remplissage et contour.

Rendre flou avec le dialogue Remplissage et contour

L'utilisation du dialogue Remplissage et contour pour créer un flou est rapide et facile. Le dialogue crée automatiquement le filtre pour vous (et le supprime si le flou est supprimé). Dans ce dialogue, le niveau de flou est défini en terme de pourcentage. Un flou de 100% (le maximum de flou possible) est équivalent à un rayonnement flou de 1/8ème du périmètre de la Boîte englobante (voir plus haut). Pour une Boîte englobante carrée, ce serait la moitié d'un côté.

Pour appliquer un Flou gaussien à un objet, sélectionnez l'objet puis ajustez le flou à l'aide du curseur Flou vers le bas du dialogue. Seul un flou symétrique peut être appliqué avec ce dialogue.

[Astuce]Astuce

Les flous créés à l'aide du dialogue Remplissage et contour dépendent de la taille de l'objet flou. Pour obtenir exactement le même niveau de flou sur des objets de tailles différentes, vous pouvez soit utiliser la commande Édition Coller le style (Maj+Ctrl+V) (si tous les attributs doivent être les mêmes), soit utiliser le dialogue Effets de filtre pour régler le rayonnement flou (Variance) aux mêmes valeurs.

Exemple de flou gaussien.
Exemple d'utilisation du filtre Flou gaussien. L'étoile de gauche a reçu un flou respectivement de 5%, 10% et 20% à droite.

Rendre flou avec le dialogue Effets de filtres

Pour une utilisation plus sophistiquée du filtre Flou gaussien il est nécessaire d'utiliser le dialogue Effets de filtre. À travers ce dialogue vous pouvez créer des flous asymétriques aussi bien qu'avoir le contrôle précis sur le rayonnement flou. Vous pouvez également élaborer des filtres plus compliqués comme démontré dans l'exemple Ombre portée en amont de ce chapitre.

Exemples de flous

Ombre portée

Comme démontré dans l'introduction, Inkscape peut être utilisé pour créer facilement une ombre portée mise à jour automatiquement. Toutefois, avant la version 0.46, les primitives nécessaires Décalage et Bord n'étaient pas disponibles. Voici une façon détournée pour la version 0.45 d'Inkscape de créer facilement une ombre portée mise à jour automatiquement :

  • Clonez l'objet deux fois (Édition Cloner Créer un clone (Alt+D)).
  • Supprimez le Remplissage et le Contour de l'objet original (sélectionnez-le avec la commande Édition Cloner Sélectionner l'original (Maj+D) et utilisez le dialogue Remplissage et contour ou l'Indicateur de style pour rendre indéfini le Remplissage et le Contour).
  • Ajoutez une couleur de Remplissage à la copie du dessus.
  • Ajoutez une couleur de Remplissage et décalez la copie du fond. Donnez-lui un flou à l'aide du dialogue Remplissage et contour.
Ombre portée.
Une ombre portée créée avec la primitive Flou gaussien et clonage. L'ombre sera mise à jour automatiquement si le texte original est édité. Le niveau de flou a été réglé à 2%.
Dégradé flou

Rendre flou un objet avec un Dégradé adoucit les transitions de couleurs.

Flou gaussien -- Exemple de dégradé.
Un Rectangle avec un Dégradé radial. À gauche : aucun flou ; au milieu : flou de 2% ; à droite : flou de 5%.
Découpe et masque

La primitive Flou gaussien est appliquée à un objet avant toute application de découpe ou masque. Ceci donnera un bord net à l'objet flou le long du chemin de découpe. Si vous voulez que le bord découpé soit flou, placez-le dans un Groupe en lui-même puis rendez flou le Groupe. Si vous voulez un bord adouci pour un objet comme une image bitmap, créez un masque de Transparence blanc avec un bord flou.

Flou gaussien -- Exemple de découpe.
De gauche à droite : étoile avec chemin de découpe circulaire non encore appliqué ; chemin de découpe appliqué à l'étoile ; étoile floue ; étoile placée dans un Groupe avec application de flou au Groupe.
Flou gaussien -- Exemple de masque.
De gauche à droite : masque blanc circulaire sur une image bitmap ; masque circulaire flou sur l'image ; masque appliqué à l'image.
Pavage de clones

Le dialogue Créer un pavage de clones comporte une option pour faire varier le rayonnement flou dans l'onglet Flou & opacité.

Flou gaussien -- Pavage de clones.
Une sphère clonée à l'aide du dialogue Créer un pavage de clones, avec Translation, Dimensions et Flou modifiés par rapport à leurs valeurs par défaut.

Morphologie

La primitive Morphologie « graisse » ou « affine » un objet. L'attribut Opérateur peut aussi bien être Dilater ou Contracter. Le niveau de modification est contrôlé par l'attribut Rayon. Il peut avoir des valeurs x et y indépendantes.

N.B. : Inkscape semble minorer la transformation.

Fusionner.
Exemples de la primitive Morphologie. De gauche à droite : objet non filtré. Objet dilaté avec rayon de 4. Objet érodé avec rayon de 4.

Offset (Décalage)

La primitive Décalage décale une image du niveau spécifié en x et y. L'exemple classique est l'utilisation de cette primitive pour créer une ombre. Voir l'exemple Ombre portée en amont de cette section.

Cette primitive possède deux paramètres : Delta X, le décalage dans la direction horizontale et Delta Y, le décalage dans la direction verticale. Notez que la direction positive sur y est vers le bas (comme définie par la norme SVG).

Si le décalage spécifié est grand, la zone du filtre doit être agrandie. Vous pouvez augmenter la zone du filtre dans l'onglet Paramètres généraux des filtres en bas du dialogue des Effets de filtre.

Offset (Décalage).
Exemples de la primitive Décalage. Les trois carrés sont dessinés l'un par-dessus l'autre. Les carrés vert et rouge sont alors décalés avec la primitive Décalage. La zone du filtre pour les carrés vert et rouge a du être agrandie.


[15] Pourquoi définir un « flou gaussien » avec le filtre Matrice de convolution quand un filtre Flou gaussien existe ? Le filtre Flou gaussien est conçu pour rendre flou à grande échelle. Le filtre Matrice de convolution fonctionne à une petite échelle, en réduisant le bruit des pixels voisins.