Version 5, last updated by boulanni at February 11, 2010 01:20 UTC
Filtres GIMP
Note importante
Tout script lancé via gimp ou run_pipeline.sh doit avoir une version de gimp >= 2.6. Certaines machines du LISA sont seulement 2.4. Maggie, brams et zappa sont 2.6.
Exemple d'appel:
dbidispatch --condor --fast --os=FC7,FC9
Exemples de filtres GIMP
Voici une sélection de filtres (intéressants, rapides, compatibles avec les images noir et blanc, automatisables, ayant un effet lisse i.e. complexité=0 => aucun changement):
image originale
dilatation
détection de bords
grille
bruit:
poivre et sel
bruit corrélé
bruit smooth
bruit fondant
bruit étalé
échange de voisins
motion blur
effet néon
effet photocopie
pinch
pinch (inverse)
ondulations
whirl (tourbillon)
Le warping aurait été intéressant mais nécessite une intéraction avec l'utilisateur ou la mise en place de champs de déformations complexes (layers..). En tenant compte des effets déjà implémentés, je suggère de conserver: pinch & whirl, détection de bords, grille, bruit smooth, bruit étalé, motion blur, ondulations.
Fonctionnement
On peut accéder aux fonctionnalités de GIMP sous Python par des "python-fu scripts". Cependant, GIMP n'est pas une librairie graphique et son API ne permet que d'en contrôler l'exécutable (mode batch / no-ui possible). Par exemple on peut appeler un script par la commande suivante:
gimp -i --batch-interpreter python-fu-eval --batch - < gimp_script.py
Les plug-ins binaires n'ont pas d'interface simple et sont de toutes façons reliés à l'exécutif (progress bar, etc.). Ceci nous oblige donc à exécuter les scripts en batch sur des images pré-enregistrées pour ne pas avoir à lancer le programme à chaque fois. En dépit de cette difficulté d'interfaçage, un filtre prend ~0.007 s à exécuter sur une image JPEG grayscale 32x32, ce qui revient à ~2h pour nos 800 000 exemples.
La majorité des fonctions de GIMP sont disponibles dans l'API. On peut exécuter des filtres avec leurs paramètres, ouvrir et enregistrer des images dans les formats supportés, créer des images, ajouter/modifier des layers et les superposer selon plusieurs mode (DIVIDE, MULTIPLY, etc.) ce qui rend ce package assez pratique pour ce qu'on veut faire.
Les plug-ins et leurs paramètres sont disponibles sous GIMP, Help > Plug-in Browser (toujours ignorer le paramètre run-mode). Les autres fonctions du programme sont dans la Procedure Database (PDB) dans le menu Help > Procedure Browser. Voir aussi la documentation de GIMP-Python.
exemple de fichier "gimp_script.py" :
#!/usr/bin/env python from gimpfu import * fname = "test.png" img = pdb.gimp_file_load(fname, fname) layer1 = img.active_layer img.disable_undo() # Simple filters #pdb.plug_in_noisify(img, layer1, 0, 0.4, 0, 0, 0) #pdb.plug_in_c_astretch(img, layer1) #pdb.plug_in_emboss(img, layer1, 10, 30, 5, 0) pdb.plug_in_applylens(img, layer1, 2, 1, 0, 0) #pdb.plug_in_blur(img, layer1) #pdb.plug_in_gauss_rle(img, layer1, 9, 1, 0) # More complex processing #layer2 = layer1.copy() #layer2.mode = MULTIPLY_MODE #img.add_layer(layer2, 0) #pdb.plug_in_solid_noise(img, layer2, 0, 0, 0, 8, 8, 8) #img.flatten() #layer1 = img.active_layer pdb.gimp_file_save(img, layer1, fname, fname) pdb.gimp_quit(0)