David Tschumperlé a écrit 337 commentaires

  • [^] # Re: Avatars sépia

    Posté par  (site web personnel) . En réponse à la dépêche C'était mieux avant !. Évalué à 9.

    Le gif animé source n'avait pas de transparence, mais un fond blanc seulement.
    Du coup, je me rend compte que G'MIC ne sait apparemment pas lire correctement les GIF avec de la transparence, ce qui est gênant effectivement. Je vais corriger ça pour la prochaine version.

  • [^] # Re: Avatars sépia

    Posté par  (site web personnel) . En réponse à la dépêche C'était mieux avant !. Évalué à 10.

    Oui, dans les faits, 'gmic' peut remplacer ImageMagick (pour ma part, je n'utilise quasiment plus les outils fournis avec IM, alors que je le faisais au quotidien auparavant).
    IM est quelquefois meilleur sur les entrées-sorties, pour charger/sauver certains formats d'image (le GIF notamment !), mais quand G'MIC n'arrive pas à charger une image en natif, il essaye de toute façon de passer par une conversion via ImageMagick, donc au final c'est transparent pour l'utilisateur. Par contre, au niveau traitements et visualisation proprements dits, je trouve G'MIC bien plus complet.

    Mais cela dit, mon avis est probablement biaisé !

  • [^] # Re: Avatars sépia

    Posté par  (site web personnel) . En réponse à la dépêche C'était mieux avant !. Évalué à 10. Dernière modification le 02 avril 2013 à 09:29.

    Oui normalement G'MIC sait faire ça avec des GIFs (animés ou non).
    Exemple :

    $ gmic 412.gif -resize 50%,50%,1,3,2 -o resized_412.gif,25
    [gmic]-0./ Start G'MIC parser.
    [gmic]-0./ Input file '412.gif' at position [0] (32 images [0] = 150x150x1x3, ..,[31] = 150x150x1x3).
    [gmic]-32./ Resize images [0,..,31] to 50%x50%x1x3, with moving average interpolation, dirichlet boundary conditions and alignment (0,0,0,0).
    [gmic]-32./ Output images [0,..,31] as animated file 'resized_412.gif', with 25 fps.
    [gmic]-32./ End G'MIC parser.
    
    

    Source : img

    Résultat : img

    Et du coup, rien n'interdit de mettre un effet 'old photo' en passant :

    gmic 412.gif -old_photo -resize 50%,50%,1,3,2 -o oldphoto_412.gif,10
    [gmic]-0./ Start G'MIC parser.
    [gmic]-0./ Input file '412.gif' at position [0] (32 images [0] = 150x150x1x3, ..,[31] = 150x150x1x3).
    [gmic]-32./ Apply old photo effect on images [0,..,31].
    [gmic]-32./ Resize images [0,..,31] to 50%x50%x1x3, with moving average interpolation, dirichlet boundary conditions and alignment (0,0,0,0).
    [gmic]-32./ Output images [0,..,31] as animated file 'oldphoto_412.gif', with 10 fps.
    [gmic]-32./ End G'MIC parser.
    
    

    Résultat : img

  • # Avatars sépia

    Posté par  (site web personnel) . En réponse à la dépêche C'était mieux avant !. Évalué à 10.

    toutes les images de sections de télégrammes et d'avatars converties avec un filtre sépia
    d'ImageMagick, mais nous avons eu des soucis sur les images comportant de la transparence

    Alors qu'il suffit d'utiliser G'MIC et sa commande -sepia, quel dommage ;)
    Voire même la commande -oldphoto :

    img

    Pour l'année prochaine peut-être ?

  • [^] # Re: Copain

    Posté par  (site web personnel) . En réponse au journal Meilleurs vœux : suis-je un sociopathe ?. Évalué à 8.

    Donc si on a la chiasse, ça va plutôt bien finalement !
    Ca coule de source !

  • [^] # Re: Amélioration

    Posté par  (site web personnel) . En réponse à la dépêche G’MIC Online, le traitement d’image en ligne. Évalué à 4.

    Utilises-tu Chrome ?
    Nous avons un problème avec Chrome pour le switch des images, c'est effectivement un peu lent, par contre sous Firefox ou IE ça turbine.

  • # Amélioration

    Posté par  (site web personnel) . En réponse à la dépêche G’MIC Online, le traitement d’image en ligne. Évalué à 10.

    Sébastien a déjà mis en place quelques améliorations du site, avec :

    • La possibilité de pipeliner les traitements : une image de sortie pouvant servir de nouvelle entrée pour un nouveau filtre.
    • La possibilité de 'bouger' la preview quand le traitement est en vue locale, afin de voir l'effet d'un filtre à plusieurs endroits différents.
    • La taille limite des images passe à 1280 px de haut ou de large.

    Je trouve la proposition du commentaire précédente très pertinente, on va voir si c'est possible à faire.

  • [^] # Re: PIV

    Posté par  (site web personnel) . En réponse à la dépêche G’MIC Online, le traitement d’image en ligne. Évalué à 3.

    L'algo d'estimation de déplacement de G'MIC est exactement celui là (G'MIC est basé sur CImg..).
    Donc à priori, on peut utiliser G'MIC pour l'appeller depuis la ligne de commande.

  • [^] # Re: PIV

    Posté par  (site web personnel) . En réponse à la dépêche G’MIC Online, le traitement d’image en ligne. Évalué à 3.

    Oui, il faudrait que je puisse voir le type des données d'entrées, et ce que tu veux en faire exactement. Je pourrais aviser ensuite. Effectivement on peut continuer en e-mail :p

  • [^] # Re: PIV

    Posté par  (site web personnel) . En réponse à la dépêche G’MIC Online, le traitement d’image en ligne. Évalué à 3.

    Oui je pense que c'est possible, G'MIC possède des outils d'estimation de déplacement local entre deux images, en 2D et en 3D.

  • # ZArt

    Posté par  (site web personnel) . En réponse à la dépêche G’MIC Online, le traitement d’image en ligne. Évalué à 10. Dernière modification le 14 juillet 2024 à 20:08.

    A noter qu'il existe aussi une autre interface a G'MIC : ZArt, développé également par Sébastien Fourey (quel contributeur actif!) permettant de jouer avec les filtres de G'MIC sur les images provenant de la webcam. C'est très intéressant notamment pour faire des démonstrations lives d'opérateurs de traitement d'image à des étudiants, ou lors d'occasions telles que la fête de la science.

    Honte à moi pour cet oubli !

    Voici une copie d'écran de ZArt en action :

    ZArt

  • [^] # Re: libgmic

    Posté par  (site web personnel) . En réponse au journal Nouvelles du projet G'MIC : Version 1.5.1.2. Évalué à 6.

    Ce que est important in fine, c'est d'avoir le choix.

    Personne n'utilise des outils de la même façon. Pour remplacer une expression dans un fichier texte, je suis de ceux qui trouve que sed est très pratique (je ne me vois pas apprendre perl juste pour faire ça).
    De la même manière, quand je vois le plug-in Lua pour GIMP, je suis bien content de pas faire du lua pour traiter mes images. J'écris la même chose en une ligne alors qu'en lua, il en faut 20 (au moins sur l'exemple du screenshot de l'url que je t'ai donné).

    Je crois pas que ça soit du gachis d'avoir le choix.

  • [^] # Re: X11

    Posté par  (site web personnel) . En réponse au journal Nouvelles du projet G'MIC : Version 1.5.1.2. Évalué à 4.

    On peut tout à fait enlever la dépendance à libX11, il suffit de compiler en commentant les lignes suivantes dans le Makefile :

    X11_CFLAGS = -Dcimg_display=1 -Dcimg_appname=\\\"gmic\\\" -I/usr/X11R6/include #-Dcimg_use_xrandr
    X11_LDFLAGS = -L/usr/X11R6/lib -lX11 -lpthread #-lXrandr
    
    
  • [^] # Re: libgmic

    Posté par  (site web personnel) . En réponse au journal Nouvelles du projet G'MIC : Version 1.5.1.2. Évalué à 3.

    Note qu'un plug-in permettant de coder en LUA pour faire des traitements d'images en GIMP existe déjà : http://pippin.gimp.org/gluas/

    Le but de G'MIC, ce n'était pas de faire une bibliothèque de traitement d'images accessible depuis un langage de script. C'est plutôt d'essayer de définir un langage de script minimal et surtout concis pour faire des opérations sur les images (et pour ne faire que ça). C'est assez différent dans l'esprit.
    Je suis bien conscient que le résultat ne te plait pas trop (voir les précédents journaux sur G'MIC, où tu me poses souvent la même question), mais je le redis, ça n'a pas pour vocation d'être un langage généraliste tel que Python ou Lua. A la limite, on pourrait comparer ça au 'langage' utilisé dans 'sed'. Ca a une fonction bien précise, c'est pas forcément très clair, mais c'est concis et c'est prévu pour faire de la manipulation de données (d'images pour gmic, de texte pour sed).

  • [^] # Re: libgmic

    Posté par  (site web personnel) . En réponse au journal Nouvelles du projet G'MIC : Version 1.5.1.2. Évalué à 2.

    La libgmic contient l'implémentation de l'interpréteur G'MIC, qui lui même est basé sur CImg (mais aussi sur d'autres choses).

  • [^] # Re: coeur ?

    Posté par  (site web personnel) . En réponse au journal Nouvelles du projet G'MIC : Version 1.5.1.2. Évalué à 2.

    Sur une image c'est généralement possible de faire un calcul distribué pour différentes parties de l'image, c'est là dessus qu'on se base.

  • [^] # Re: coeur ?

    Posté par  (site web personnel) . En réponse au journal Nouvelles du projet G'MIC : Version 1.5.1.2. Évalué à 4.

    On essaye de se mettre tout doucement à OpenMP dans CImg pour multi-threader les opérations.
    Je ne suis pas trop spécialiste, mais c'est une solution pas trop intrusive qui a l'air prometteuse.

  • # Liens

    Posté par  (site web personnel) . En réponse à la dépêche Valorisation de logiciels produits dans les laboratoires et PLUME à Caen. Évalué à 4.

    Quelques remarques, peut-être qu'un modérateur peut corriger :

    1. Le lien Thémamap ne fonctionne pas (parenthèse fermante dans l'URL)
    2. Le lien sur G'MIC est http://gmic.sourceforge.net, et pas ma page perso.

    Merci.

  • # Photivo

    Posté par  (site web personnel) . En réponse au journal Logiciels de développement des fichiers RAW sous Linux. Évalué à 7.

    Il y a aussi Photivo : http://photivo.org/photivo/start

    qui a l'air pas mal.

    Photivo is a free and open source (GPL3) photo processor. It handles your RAW files as well as your bitmap files (TIFF, JPEG, BMP, PNG and many more) in a non-destructive 16 bit processing pipe with gimp workflow integration and batch mode.

  • [^] # Re: en tant que dino du xterm...

    Posté par  (site web personnel) . En réponse au journal [GIMP] Une alternative libre au plug-in Fractalius. Évalué à 10.

    Je voulais juste dire qu'il suffit d'installer 'gmic' (la version ligne de commande de G'MIC), pour pouvoir générer de tels rendus dans des scripts ou à partir du shell.

    dtschump@nf310:~$ gmic -h rodilius
    
     gmic : GREYC's Magic Image Converter (Sep 29 2011, 12:19:59).
    
            Version 1.5.0.4 (beta), Copyright (C) 2008-2011, David Tschumperle 
            (http://gmic.sourceforge.net)
    
        -rodilius        0<=_amplitude<=100,_0<=thickness<=100,_sharpness>=0,_nb_orientations>0,_offset,_color_mode={ 0=darker | 1=brighter } 
    
            Apply rodilius (fractalius-like) filter on selected images.
            Default values : 'amplitude=10', 'thickness=10', 'sharpness=300', 'nb_orientations=5', 'offset=0' and 'color_mode=1'.
    
            Example(s) :  image.jpg --rodilius ,
    
    

    On voudra éventuellement bidouiller un peu le contraste avant ou après pour mieux faire ressortir l'aspect fibreux du rendu :

    gmic image.jpg -rodilius 12,10,300,10 -normalize_local 10,6 -o output.jpg
    
    

    G'MIC est une alternative aux outils ligne de commande de ImageMagick pour tout ce qui est manipulation d'image (ça fait bien 2 ans que je n'ai plus utilisé 'convert' par exemple).

  • [^] # Re: merci

    Posté par  (site web personnel) . En réponse au journal [GIMP] Une alternative libre au plug-in Fractalius. Évalué à 8.

    J'ai 308 filtres car j'ai activé les 'filtres additionnels' (section 'A propos / Additional Filters'). Ces filtres sont proposés et hébergés par des contributeurs extérieurs. G'MIC possède un système d'update assez sympa qui permet en effet à d'autres personnes de proposer leur propres filtres à tout le monde (sous réserve d'activer explicitement une 'source externe'). Cela peut-être des filtres très spécifiques ou en cours de développement (comprendre "à la finition pas toujours top moumoute) que les concepteurs de filtres peuvent tout de même faire partager pour les tester à plus grande échelle. Il y a encore assez peu de développeurs de filtres additionnels, mais j'espère que c'est quelque chose qui va évoluer par la suite.

  • [^] # Re: gmic

    Posté par  (site web personnel) . En réponse à la dépêche Petites brèves : MediaGoblin, CloudStack, Walt Disney et G'MIC. Évalué à 4.

    Oui effectivement, mais Krita se développe de telle façon que son architecture ne va probablement pas proposer d'API simple pour la création de plug-ins externes, ce qui implique que pour ajouter des fonctionnalités telles que celles proposées par G'MIC, il faudrait devenir un contributeur direct du projet Krita, et le rendre peut-être dépendant de G'MIC, ce qui ne me semble pas vraiment souhaitable (ni les développeurs de Krita d'ailleurs, ils utilisent déjà leur propre bibliothèque donc ça ferait des fonctionnalités doublons, et puis cela demanderait un temps important de développement sans être sûr qu'il soit finalement intégré au projet).
    Je trouve que le système de plug-in est idéal, car G'MIC forme un ensemble indépendant et complet qu'on peut donc théoriquement utiliser un peu partout (il suffit d'adapter les entrées-sorties des logiciels concernés).
    J'avais demandé à tout hasard sur la liste de dev de Krita, mais les quelques liens qu'ils m'ont donné me laisse l'impression que ça n'allait vraiment pas être facile, ni perenne, vu qu'ils sont en train de changer pas mal de choses sur leur architecture.
    J'ai essayé aussi de voir si je pouvais pas envisager de faire un plug-in pour Pinta, mais c'est du C#, et c'est pareil , ils n'ont pas vraiment prévu d'API pour faire des plug-ins.

  • [^] # Re: gmic

    Posté par  (site web personnel) . En réponse à la dépêche Petites brèves : MediaGoblin, CloudStack, Walt Disney et G'MIC. Évalué à 5.

    C'est déjà le cas. Le plug-in travaille de manière interne avec des images flottantes. Le goulot d'étranglement provient du fait que les entrées-sorties de données images de/vers GIMP doivent se faire en 8 bits (limitation de l'API de GIMP). Tous les traitements effectués par les filtres de G'MIC utilisent donc des flottants, et peuvent même gérer des images volumiques.

  • [^] # Re: Il y a un point que tu ne sembles pas avoir compris

    Posté par  (site web personnel) . En réponse au journal Non-confession d'un flibustier. Évalué à 5.

    Je ne suis pas sûr que culpabiliser les pirates comme tu le fais serve à grand chose. Au final, ce ne sont pas eux les responsables du bordel ambiant sur l'orientation des réseaux (juste des coupables faciles à faire rentrer dans la tête des gens).

  • [^] # Re: G'MIC

    Posté par  (site web personnel) . En réponse à la dépêche Petite actu des outils d’analyse numérique. Évalué à 10.

    Oui, les fonctionnalités sont décrites dans la doc de référence. En particulier, pour le calcul et la visualisation, je conseille de regarder les sections :

    Ca permet par exemple d'utiliser G'MIC comme une calculatrice pas trop basique :

    dtschump@xxx:$ gmic -e "{a=pi/3;cos(a)^2+sin(a)^2}"
    
    [gmic]-0./ Start G'MIC instance.
    [gmic]-0./ 1
    [gmic]-0./ End G'MIC instance.
    

    (ici '-e' est équivalent à '-echo' et affiche juste le résultat sur la console).

    Quelques opérateurs d'opérations matriciels sont disponibles ici, par exemple pour inverser une matrice :

    dtschump@xxx:$ gmic "(0,1,0;0,0,1;1,0,0)" -invert -p
    
    [gmic]-0./ Start G'MIC instance.
    [gmic]-0./ Input image at position [0], with values '(0,1,0;0,0,1;1,0,0)' (1 image 3x3x1x1).
    [gmic]-1./ Invert image [0].
    [gmic]-1./ Print image [0].
    
    image [0] = '(unnamed)': this = 0xa7f403c, size = (3,3,1,1) [36 b], data = (float*)0xa7f2318..0xa7f233b (non-shared) = [ 0 0 1 ; 1 0 0 ; 0 1 0 ], min = 0, max = 1, mean = 0.333333, std = 0.5, coords(min) = (0,0,0,0), coords(max) = (1,2,0,0).
    
    [gmic]-1./ End G'MIC instance.
    

    (une matrice est simplement définie comme une image, i.e. un tableau de valeurs). Ici on lit que l'inverse de [0,1,0;0,0,1;1,0,0] est [0,0,1;1,0,0;0,1,0].

    Pratique pour visualiser des données (en particulier '-plot' pour les courbes 1d). Par exemple,

    dtschump@xxx:$ gmic -plot "'x^2*cos(x)'",1024,1,0,0,100
    
    [gmic]-0./ Start G'MIC instance.
    [gmic]-1./ Plot image [0] = 'x^2*cos(x)'.
    
    x^2*cos(x): this = 0x93a8bec, size = (1024,1,1,1) [8 Kb], data = (double*)0x93ae3e0..0x93b03df (non-shared) = [ 0 0.0094913 0.0374217 0.0821735 0.141094 0.210557 0.286054 0.362302 ... 2517.3 3439.99 4333.45 5189.03 5998.41 6753.65 7447.34 8072.6 ], min = -9476.38, max = 8880.45, mean = -53.0707, std = 3123.35, coords(min) = (997,0,0,0), coords(max) = (965,0,0,0).
    
    [gmic]-0./ End G'MIC instance.
    

    Titre de l'image

    • Après, si on combine quelques commandes entres elles, on peut avoir des choses assez sympas 'facilement', pour la visu de fonctions :

    dtschump@xxx:$ gmic 128,128 -f "X=(x-64)/6;Y=(y-64)/6;90*exp(-(X^2+Y^2)/30)*abs(cos(X)*sin(Y))" --n[-1] 0,255 -map[-1] 5 -elevation3d[-1] [-2] -rm[-2] -o3d 0.4
    
    [gmic]-0./ Start G'MIC instance.
    [gmic]-0./ Input black image at position [0] (1 image 128x128x1x1).
    [gmic]-1./ Fill image [0] with expression 'X=(x-64)/6;Y=(y-64)/6;90*exp(-(X^2+Y^2)/30)*abs(cos(X)*sin(Y))'.
    [gmic]-1./ Normalize image [0] in range [0,255].
    [gmic]-2./ Map jet color LUT on image [1].
    [gmic]-2./ Create 3d elevation of image [1], with elevation map [0].
    [gmic]-2./ Remove image [0] (1 image left).
    [gmic]-1./ Set opacity of 3d object [0] to 0.4.
    [gmic]-1./ Display 3d object [0] = '(unnamed)*' (16384 vertices, 16129 primitives).
    [gmic]-1./ Selected 3d pose = [ 2.51969,0,0,-160,0,2.51969,0,-160,0,0,2.51969,-104.929,0,0,0,1 ].
    [gmic]-1./ End G'MIC instance.
    

    Titre de l'image

    ou encore :

    dtschump@xxx:$ gmic 64,1,1,20,"X=x/w;cos(0.2*X*c+?(0.01*c))" -dg 800,600,0,4,0,1,-1,1 512,1,1,1,"X=x/w;3*sinc(20*X)" -dg[1] 800,600,2,0,0,1,-1,1 -+
    
    [gmic]-0./ Start G'MIC instance.
    [gmic]-0./ Input image at position [0], with values 'X=x/w;cos(0.2*X*c+?(0.01*c))' (1 image 64x1x1x20).
    [gmic]-1./ Render graph plot from data of image [0].
    [gmic]-1./ Input image at position [1], with values 'X=x/w;3*sinc(20*X)' (1 image 512x1x1x1).
    [gmic]-1./ Render graph plot from data of image [1].
    [gmic]-2./ Add images [0,1].
    [gmic]-1./ Display image [0] = '(unnamed)*'.
    (unnamed)* (800x600x1x3): this = 0xbfbd910c, size = 1 [5625 Kb], data = (CImg<float>*)0x93ff5c4..0x93ff5db.
      [0]: this = 0x93ff5c4, size = (800,600,1,3) [5625 Kb], data = (float*)0xb6077008..0xb65f5407 (non-shared) = [ 220 220 220 220 220 220 220 220 ... 220 220 220 220 220 220 220 220 ], min = 0, max = 255, mean = 243.949, std = 31.8313, coords(min) = (412,594,0,2), coords(max) = (783,583,0,2).
    
    [gmic]-1./ End G'MIC instance.
    

    Titre de l'image

    Si on se penche ensuite vraiment sur la syntaxe du langage, on peut faire des choses assez sophistiquées, en combinant rendus 2d et 3d par exemple, en très peu de lignes.