[PYTHON] (Traitement d'image) Petit Thinning - Filtre qui effectue un traitement d'éclaircissage lâche

J'ai écrit un filtre qui amincit légèrement l'image de dessin au trait avec des lignes noires dessinées sur un fond blanc. L'amincissement n'est pas destiné à une analyse telle que l'extraction d'une ligne de 1 pixel, mais plutôt à une utilisation pratique dans le domaine des logiciels de retouche. Outre l'amincissement, il vise également à uniformiser au maximum plusieurs lignes d'épaisseurs différentes.

image

La source

Fonctionne avec Python.

https://github.com/a-nakanosora/blender-scripts/blob/master/Image/Petit%20Thinning%20CLI/petit_thinning.py

Vous avez besoin de «Oreiller» pour l'utiliser. (Il est recommandé d'utiliser Anaconda qui inclut cette bibliothèque de Python standard)

Addendum: Dans la première version, Numpy et Pillow étaient nécessaires pour la bibliothèque externe, mais avec l'amélioration de @ pashango2, Pillow a été unifié et accéléré. Merci beaucoup! </ font>

Comment utiliser

$ python petit_thinning.py 6 0.95 5 input.png output.png

L'argument de ligne de commande est

petit_thinning.py <emptyrange> <emptythres> <dilation_max_depth> <path_in> [<path_out>] [-p]

Ça ressemble à ça. ʻEmptyrange, ʻemptythres, dilation_max_depth sont les paramètres qui changent l'effet du filtre.

  • ʻEmptyrange`: Un entier supérieur ou égal à 1. Une ligne directrice sur la façon dont chaque niveau d'éclaircissage est mélangé
  • ʻEmptythres`: Un nombre réel compris entre 0,0 et 1,0. Plus il est proche de 1,0, plus l'effet d'amincissement de la ligne est fort, mais la ligne a tendance à être interrompue.
  • dilation_max_depth: Un entier supérieur ou égal à 1. Vous pouvez rendre les lignes plus épaisses plus fines en spécifiant un nombre plus grand, mais si les lignes sont trop épaisses, du bruit a tendance à se produire.
  • path_in: chemin du fichier d'entrée
  • path_out: chemin du fichier de sortie. Si omis, le nom du chemin d'entrée avec _out à la fin sera utilisé.
  • Drapeau -p: Affiche divers paramètres et temps de calcul

Fondamentalement, si la «plage vide» est définie sur une valeur supérieure à «dilation_max_depth», le bruit sera réduit, mais le degré d'amincissement sera également réduit. Il est prudent de définir dilation_max_depth sur environ 5.

Principe de base

Je fais juste une certaine dilatation du filtre morphologique et je les synthétise.

  • Effectuer plusieurs étapes de dilatation sur l'image d'entrée et stocker les résultats de chacune.
  • Sélectionnez l'image avec la profondeur de dilatation la plus élevée, écrasez la partie vierge où il n'y a pas de ligne avec une image de faible profondeur et utilisez-la comme image suivante.
  • Effectuez le même processus en augmentant la profondeur un par un.

Recommended Posts

(Traitement d'image) Petit Thinning - Filtre qui effectue un traitement d'éclaircissage lâche
Traitement d'image 100 coups Q9, Q10 (filtre) speedup
Traitement d'image par Python 100 knock # 10 filtre médian
Traitement d'image par Python 100 knock # 12 motion filter
Traitement d'image par Python 100 knock # 9 Filtre Gaussien
Traitement d'image par filtre de lissage Python 100 knock # 11 (filtre moyen)
traitement d'image python
Traitement d'image 100 coups ①