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 :
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].
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.
[^] # Re: G'MIC
Posté par David Tschumperlé (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 :
(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 :
(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,
Titre de l'image
Titre de l'image
ou encore :
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.