Common nouns | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Index Berger's Works
Proper nouns A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z| HOME DICCAN


Colors

NP Gray21 H2
Promenade dans l'espace des formes,
des couleurs et de l'esthétique

avec Roxame NP Gray22 H1
1. Utiliser Roxame
H3
Roxame ne parle que l'anglais NP Gray23 H1
2. Formes de base NP square forms.c En tapant forms.c vous aurez quelques exemples des principaux types de formes que Roxame sait générer. Il suffit de taper leur nom. Vous noterez que toutes ces formes sont linéaire, non pleines, à peu-près au centre, et couleur terre-de-sienne... Vous pouvez changer cela en utilisant différentes paramètres. Pour chacun d'eux, vous avez la liste des valeurs de base en tapant le nom suivi de .c . Quelques observations : - les valeurs de paramètres doivent toujours être tapées avant le nom de la forme (ce peut être sur la même ligne de commande ou sur des lignes consécutive) - position (position) : place le centre de la forme. SPL et SPR sont les "points forts" à droite et à gauche, HLC, HRC, LLC et LRC sont les quatre coins, position.rd tire une position au hasard. Valeur par défaut : center. - orientation (orient) : est importante surtout pour tracer une ligne, qui peut monter (ascend) ou descendre (descend). Valeur par défaut : ascend. - creux/plein (modeg) , fournit une forme linéaire (draw) ou pleine (paint). Valeur par défaut : draw. - taille (size) donne la dimension globale de la forme (diagonale du rectangle où elle s'inscrit) ; noter que bord_a_bord étend la forme d'un bout à l'autre de l'image, soit horizontalement, soit verticalement, en fonction de la proportion. Valeur par défaut : big. - proportion (prop) donne les proportions de la forme, depuis horizontal jusqu'à vertical . Valeur par défaut : isocele indique que hauteur et largeur sont identiques (sauf exception). isocele rectangle est équivalent à square, et isocele ellipse à circle. - épaisseur (e) ; very_thin donne une épaisseur de 1 pixel ; very-thick de 10pixels; Valeur par défaut : thin. - style (style) tente d'aller plus loin que le mode courant , rigid . sensitive tente de recréer les hésitations de la main du dessinateur (l'effet n'est sensible que si Roxame n'est pas d'humeur cold, mais un peu échauffée, ce que vous obtenez avec alive ou drunk, par exemple). soft fait varier l'épaisseur en donnant une sorte de coupure. Dans ce domaine, l'imagination pourrait aller beaucoup plus loin. - couleur (color) ; essayez olive, par exemple, pour vous changer. - mode de mélange (blend) vous propose trois valeurs. imperative pose la forme en écrasant ce qu'il y avait précédement ; additive et subtractive (attention à l'orthographe de ce mot, l'anglais ne mettant pas de s après sub) font les deux types de mélange. - clipping (clip) n'a vraiment d'effet utile que sur une image segmentée ; valeur par défaut clip_touch, qui reporte seulement la forme engendrée ; Vous pouvez toujours revenir aux valeurs par défaut avec one. Vous pouvez aussi tirer hasard l'ensemble des paramètres avec any, ou la valeur d'un paramètre déterminé en faisant suivre son nom de .rd , par exemple forms.rd . Attention : dans certains cas, il ne se passera rien, par exemple si le hasard ajoute une forme blanche en mélange soustractif. Mais Roxame sait dessiner d'autres formes que les quelques exemples donnés par forms.c . Pour les découvrir, il faut procéder en deux étapes. Avec form_.c vous obtenez une liste des différentes types de formes disponibles. Attention à l'orthographe, pour éviter des ambiguïtés, les noms de types comportent souvent un caractères souligné à la fin. Pour chacun de ces types, vous obtenez les formes en tapant ce type suivi de .c par exemple, line_.c. Attention à l'orthographe, pour éviter des ambiguïtés, les noms de types comportent souvent un caractères souligné à la fin. Nota : une bonne partie de ces forme ont un intérêt mineur pour une utilisation en ligne. elles sont en revanche assez pratique pour varier les constructions automatiques de Roxame. Quelques commentaires sur ces types : line_ : line est la ligne simple, lines une série de quatre lignes, h et v tracent des horizontales ou des verticales bord à bord, hhhh et vvvv répètent l'opération quatre fois triangle_ : triangle trace un triangle à peu près quelconque ; la série triangle_up, triangle_down, triangle_left, triangle_down trace des triangles toujours appuyés sur une ligne de base (définie par les paramètres ci-dessus) et complète par un triangle dont le sommet est en bord d'image, respectivement en haut, en bas, à gauche et à droite ; arrow_ : la série arrow_left, roof, arrow_right, stake donne aussi une série de triangles, ceux-ci isocèles et avec une base verticale ou horizontale rectangle_ : juste rectangle, comme plus haut, et square quadrilateral_ (quad_) quad trace un quadrilatère à peu près quelconque (mais convexe) ; la série quad_up, quad_down, quad_left, quad_right trace des quadrilatères comme les séries précédentes : appuyées sur la ligne de base, et se prolongeant jusqu'à un des bords. myQuad est définit par les coordonnées de ses quatre sommets ; vous pouvez les modifier vous-mêmes en changeant la définition de myQuad dans le dictionnaire (troisième colonne); polygon_ : pentagon, hexagon, octagon, octagon_regular ellipse_ : ellipse, circle . circle est équivalent à isocele ellipse pixel_ : nous n'avons pas implémenté le pixel unique ; pixels crée un nuage de pixels sur toute l'image, à la densité de 1% ; pixelsn fait de même, à la densité indiquée par le nombre précédent ; par exemple 100 pixelsn couvre toute l'image de la couleur en cours. pixel_cloud fait un petit nuage de pixels (à améliorer). Les deux types suivants sortent du concept normal de formes, mais peuvent être utiles ou amusant. write_ : letters fait un semis de lettres, phrases un semis de phrases CF_ : CF_portrait et CF_landscape tracent des cadres pour une bande dessinée (pour s'en servir aisément, il faut ensuite segmenter, voir le chapitre ad hoc). Nous vous proposons une promenade au royaume des couleurs, en partant du plus simple. Vous pouvez toujours aller voir ce dictionnaire en tapant dico (On revient dans le programme avec TAB). Vous pouvez aussi avoir quelques explications sur n'importe quel mot existant, en tapant ce mot suivi de .c Pour tester les résultats, nous avons mis quelques images à votre disposition : (un peu plus compliqué si vous voulez mettre les vôtres) Couleurs et palettes Une couleur, en première analyse, c'est la donnée de trois nombres entiers compris entre 0 et 255, correspondant aux trois composantes des écrans : rouge, vert bleu (RGB, en abrégé) . Pour Roxame, un certain nombre de couleurs portent des noms. Vous en avez la liste en tapant color.c Vous pouvez voir les valeurs correspondantes en tapant sur un nom de couleur suivi de .c. Par exemple, black.c vous indiquera que le noir correspond aux trois valeurs 0,0,0. Si vous voulez voir l'effet d'une couleur déterminée, vous frappez le nom de couleur puis filler. Par exemple red filler . . Vous pouvez mélanger deux couleurs, mais la syntaxe n'est pas géniale. - Chargez une couleur : mauve filler - Mettez la de côté dans une zone de services en tapant tabix - Chargez une autre couleur : ochre filler. - Mélangez : tabim3. En l'occurrence, vous avez fait le mélange le plus traditionnel en peinture, un mélange soustractif, chaque pigment filtrant sélectivement une partie du spectre. Il y a un autre mode classique de mélange, dit additif, qui correspond par exemple à l'effet obtenu en éclairant un écran avec deux projecteurs. Pour tester, remplaces la dernière ligne précédente par tabim4. (Si vous êtes plus hardi) vous pouvez créer vos propres couleurs. - Ouvrez le dictionnaire dico - Libérez une ligne du dictionnaire F4 - tapez myColor (ou un nom de votre choix) dans la première colonne - tapez color dans la deuxième colonne - tapez vos trois valeurs dans la troisième colonne, par exemple 128 128 255 - Revenez à la page normale avec TAB - Tapez myColor filler, et admirez votre travail. (Votre exemplaire du logiciel Roxame conservera ces valeurs dans le fichier dico.txt. Ce dictionnaire peut être édité avec un logiciel de type bloc-notes, qui n'introduit aucun code de mise en pages. ) Palette : un ensemble de points Pour des raisons aussi bien pratiques qu'artistiques, on recourt souvent à des palettes. Les plus simples sont des ensembles de couleurs. Pour Roxame, les palettes aussi ont des noms. Vous pouvez voir la liste des palettes disponibles avec palette.c Une des plus classiques, conçue dans les années 1970 pour les écrans et logiciels rudimentaires de l'époque, est l'ensemble des 16 couleurs VGA. C'est très peu par rapport aux quatre millions de couleurs permises par le modèle RGB, mais cela permettait déjà de bien s'amuser. Vous pouvez avoir la liste des couleurs en tapant VGA.c. Pour en apprécier l'effet, mettez en place la palette, chargez une image (liste en images.c, par exemple Park) , et ramenez là aux couleurs de la palette : - VGA.pl (Vous pouvez choisir une quelconque des palettes de la liste). - Paris (photo mise à disposition pour vos tests, nous vous indiquerons plus loin comment en mettre d'autres à la disposition de Roxame) - palign (Cette opération, que nous appelons ici "alignement", se fait par un calcul de distance : on mesure la distance de la couleur d'origine à chaque couleur de la palette, et on prend la plus proche. Vous constaterez parfois des anomalies dues aux imperfections des algorithmes de Roxame). On peut aussi apprécier l'effet d'une palette sur une couleur déterminée en tapant le nom de la couleur suivi de pfiller (toute l'image est recouverte de la couleur rabattue sur la palette). Roxame a sa propre palette de prédilection, comportant aussi 16 couleurs, choisies d'après la boite d'aquarelles de son papa, Pierre Berger. Ici encore, liste des couleurs en roxame_palette.c, et examen des effets avec roxame_palette.pl Paris palign. Les autres palettes (lites en tapant palette.c) - tifine, inspirée par une peintre normande - quadri , juste quatre couleurs (inspiré par les quatre couleurs de la quadrichromie typographique, mais l'effet est différent, car ici il n'y a pas de mélange - juste le noir et le blanc. BW (Ce n'est pas une palette à proprement parler, ne tapez pas .bl). Le résultat est en général médiocre sauf à préparer l'image au préalable. On peut considérer aussi poster comme une palette, ou plus exactement (dans Roxame) comme un ensemble de palettes obtenu en divisant également chacune des trois couleurs RGB. Vous pouvez l'appliquer directement à une image en tapant simplement poster précédé d'un nombre, qui indique combien de valeurs on prend pour chaque composant R G B. Le plus brutal est obtenu avec 2 poster. A partir de 30, le résultat devien peu visible. Et vous pouvez constituer votre propre palette, en faisant comme pour une couleur - ouvrez le dictionnaire en tapant dico, libérez une ligne avec F4 - mettez myPalette en première colonne (ou un nom de voire choix) - list en deuxième colonne - la liste des couleurs que vous choisissez en troisième colonne. - si vous êtes consciencieux, ajoutez une ligne de commentaire, avec votre nom de palette suivi de .c en première colonne, comment en deuxième colonne et vos explications en troisième colonne - revenez dans le programme avec TAB et tapez myPalette.pl. Note théorique : par construction, tout modèle digital a toujours un nombre fini de couleurs. Mais, passé certaines valeurs, et en particulier pour le modèle RGB 255, on est au-dela des capacités de différenciation de l'oeil, et l'on retrouve une impression d'espace continu. Des points aux lignes, surfaces et volumes Ces palettes sont évidemment très "réductrices". Le mot même de palette est un peu trompeur. La palette d'un peintre ne comprend qu'un petit nombre de couleurs, mais il peut les mélanger et les diluer, ce qui n'est pas le cas ici, où une couleur n'est qu'un point dans l'espace à trois dimensions des couleurs. Pour retrouver cette impression de "continuité", une des méthodes de base est de réduire l'espace des couleurs non pas à un certain nombre de points, mais à un certain nombre de lignes, de surfaces voire de sous ensembles volumiques. Mais il est assez peu intéressant de faire ces projections dans l'espace "technologique" qu'est le cube RGB. Il vaut mieux opérer mais dans un espace mieux lié à notre psychologie de la vision: l'espace HSV : hue (pour ton), saturation et valeur (approximativement, luminosité). Nota : il existe d'autre espaces, par exemple HSL. Chacun a ses avantages et inconvénients. Il s'agit encore d'un espace à trois dimensions, donc on peut passer de manière déterministe et sans perte ("biunivoque") de l'un à l'autre, au moyen de fonctions appropriées. Si vous avez sous la main un logiciel comme Gimp ou Photoshop, vous pouvez manipuler ces deux espaces avec le "color chooser". Alors que l'espace RGB est un cube, l'espace HSV est un cône (ou une pyramide à base hexagonale, mais en pratique on l'utilise comme un cône). L'axe du cône est celui des valeurs (luminosités), de 0 à 255. Autour de cet axe, nous avons deux coordonnées ("polaires"), la distance au centre pour la saturation (de 0 à 1000) et l'angle (en degrés) pour le ton (hue). Ce dernier point correspond à une caractéristique de la vision humaine, pour qui les couleurs forment une "roue". Cela oblige souvent le programmeur à prendre des précautions. D'une part les opérations de comparaison, de différence, d'augmentation doivent toujours se faire "modulo 360". D'autre part, quand on transforme une couleur RGB en HSV, la saturation zéro est obtenue quand les trois valeurs R, G, B sont égales entre elles. Dans ce cas, il faut considérer que le ton n'est pas défini. Roxame le met à zéro, mais c'est dangereux, car si l'on fait ensuite un changement de saturation, on obtiendra du rouge, effet qui en général n'était pas recherché (cas des dégradés, par exemple). De plus, le modèle ne correspond pas complètement à nos idées naturelles, puisque sur la base du cône, (valeurs 255), on retrouve les couleurs "vives" (saturées, saturation 1000) sur le tour de la base, et le blanc au centre, que notre oeil perçoit comme plus lumineux,. Tapez color_wheel pour en avoir une illustration avec deux coupes de ce cône, l'une au milieu de l'axe des valeurs, l'autre à la base (255). Projection sur une ligne L'exemple le plus simple est le passage au grisé (tapez graying à partir d'un document chargé) qui projette toutes les couleurs sur l'axe des luminosités, depuis 0 pour le noir jusqu'à 255 pour le blanc. Noter que sur cet axe, à saturation zéro, le ton n'a pas de sens. On peut imaginer un grand nombre de telles lignes. Il suffit pour cela - soit de fixer la valeur de deux des trois paramètres et de n'en laisser jouer qu'un . ci dessus, on a fixé sat à 0, hue n'a pas de sens, on ne joue que sur val . on peut fixer sat et hue, et ne jouer que sur val ; on a une ligne qui va du sommet à un point de la base (pas testé) ; en général, pas très bon résultat sur parce qu'on n'a pas de blanc ; . on peut fixer val et hue, ne jouer que sur sat (pas testé) ; on a une ligne qui part de l'axe central, lui est perpendiculaire et va à une extrémité . on peut fixer val et sat, et jouer sur hue . - soit de se donner deux équations reliant les trois variables ; mais cela permet d'avoir des résultats plus riches que le simple rabattement sur une valeur ; comparez par exemple graying avec smart_graying , qui vise à retrouver la chaleur des tirages argentiques sur papier légèrement crème (quelquefois, l'effet est excessif). Il en va de même pour les camaïeux, ou toning (liste en toning.c), dont quelques uns sont assez satisfaisants, par exemple blue_toning ou sepia_toning (ils rappellent les "virages" pratiqués dans les années 30 ) d'autres plus bizarres, comme green_mauve_toning, ou mériteraient d'être améliorés, comme sienna_toning. toning.rd applique un de ces filtres choisi au hasard. helix_l est une ligne hélicoïdale avec le ton proportionnel à la luminosité, partant d'une valeur aléatoire pour val =0 et faisant un tour complet jusqu'à val 255. Résultats peu intéressants. Plusieurs lignes Pour l'expérience, nous avons créé la fonction ralign, qui réduit à un ensemble de lignes qui conservent la valeur du pixel d'origine, mais s'alignent sur le ton et la saturation de la couleur donnée dans la palette. On peut tester sur une seule couleur avec rfiller Le résultat n'est pas satisfaisant pour les couleurs claires, car alors la saturation est trop forte en général. Nous avons fait un essai en réduisant les saturations dans les valeurs claires, avec salign et sfiller Nous avons tenté un essai plus ambitieux en construisant une série de lignes définies par quatre points : le noir, le blanc et deux couleurs intermédiaires, une plus claire et une plus foncée, choisies dans la palette complète de Roxame. L'objectif était de contourner certaines zones déplaisantes de l'espace des couleurs (jaune vif foncé). Pour faire fonctionner : - chercher la liste des palettes de tubes avec tubeset.c - charger une palette de tubes avec le nom de cette palette suivi de .tb - voir les valeurs d'un des tubes de cette palette en tapant le nom du tube suivi de .sh - charger une image et appliquer la palette de tubes en tapant talign A ce jour, les résultats ne sont pas convaincants, mais rien n'empêcherait de poursuivre les recherches. Il est assez facile de créer de nouveaux tubes et de nouvelles palettes en s'inspirant des palettes existantes dans le dictionnaire. Il n'est pas nécessaire d'intervenir sur le code proprement dit. Surfaces On conserve deux des valeurs d'origine. La réduction d'espace est encore moins forte que sur une ou plusieurs lignes. Le résultat est donc moins "stylisé". Quelques exemples : plate_f , précédé d'un nombre, projette sur le plan de la valeur correspondante (tout est noir si le nombre est zéro, on est au maximum des valeurs si le nombre est 255). plate_hf précédé d'un nombre, projette sur le demi-plan correspondant au ton choisi (nombre entre 0 et 360). On a le même type de résultat en frappant d'abord le nom d'une couleur (par exemple green) suivi de coulref_f. hplane (toujours précédé d'un nombre entre 0 et 360) projette non pas sur le demi-plan correspondant au ton, mais sur le plan complet du ton et de son complémentaire. les résultats sont parfois assez jolis. qalign conserve la valeur, mais aligne en ton et saturation sur la couleur la plus proche dans la palette en cours. On peut tester sur une couleur déterminée avec qfiller helix.f on projette sur une surface hélicoïdale (comme helix.l ci-dessus, mais en ne fixant pas la saturation) le hue étant proportion de la valeur. Le résultat n'a pas un grand intérêt, mais est nettement plus plaisant que la projection sur une ligne. Plusieurs surfaces Projection sur des surfaces melon_f précédé d'un nombre entre 0 et 360, par exemple 60 . découpe le volume par une série de tranches Un volume shrink_f précédé d'un nombre réduit l'espace dans toutes ses dimensions. Sans intérêt en général. Comme il est souvent déconseillé, aux aquarellistes par exemple, d'éviter les noirs absolus, nous proposons blacksupp qui remonte proportionnellement toutes les luminosités pour ne pas avoir de valeur inférieure au nombre indiqué juste avant. Au delà Roxame comporte de nombreuses fonctions permettant d'agir sur les couleurs, notamment sur les luminosités (liste en tapant val_filter.c) ou les saturations ( sat_filter.c) . Au delà, l'action sur les couleurs dépasse les transformations point par point dans l'espace des couleurs, et prend en compte par exemple la position dans l'image, pour obtenir des dégradés. 3. Filtres filter.c vous donne une liste de types de filtres. Les trois premiers types sont "simples", on pourrait dire "du premier ordre" : ils traitent chaque pixel indépendamment de ses voisins et de l'ensemble de l'image. Les autres tiennent compte de l'environnemnet à des degrés divers. Filtres simples hue_filter.c liste les filtres agissant essentiellement sur le ton negative est classique (il inverse la valeur et passe le ton à la complémentaire ; d'autres solutiosn seraient possibles) hue_rotation fait une rotation dans l'espace des tons (voir le chapitre consacré aux couleus), du nombre de degrés indiqués, par exemple 90 hue_rotation. Vous pouvez apprécier l'effet sur une image normale, mais on voit directemnet l'effet angulaire en chargeant color_wheel. pour BW, graying et smart_graying voir le chapitre consacré aux couleurs sat_filter.c : la saturation est réduite légèrement avec sat- plus fortement avec sat-- ; on peut doser l'effet en tapant un nombre suivi de sat-num (effet maximum avec 0 sat-num, qui est équivalent à graying) La saturation est augmentée légèrement avec sat+, plus fortement avec sat++ ; on peut doser l'effet comme ci-dessus avec sat+num (effet maximum avec 1000 sat+num) neg_sat est laissé à titre de curiosité ; la saturation est inversée ; effet en général sans intérêt. val filter.c assombrissement ou éclaircissement avec darken darken+ ligtten lighten+ contrast augmente le contraste Filtres plus complexes fuzz crée un léger flou ; on peut répéter l'opération, par exemple comme une forme simpliste d'antialiasing. L'opération fait, sur chaque pixel, la moyenne avec les pixels voisins. L'opération peut être répétée pour obtenir des résultats plus forts. ranfuzz n'est pas exactement un algorithme de flou. il remplace chaque pixel par un pixel tiré au hasard dans un environnement carré plus ou moins grand. Il donne des résultats intéressants ; on peut le paramétrer en précédant le mot par un nombre (qui est par défaut, et au minimum, de 10 ; ce nombre donne le côté du carré dans lequel s'opère la sélection). ranfuzzh et ranfuzzv n'appliquement l'opération que dans le sens, respectivement, horizontal et vertical. median donne aussi l'impression d'un certain flou, mais est plus subtil ; il prend pour chaque pixel la valeur médiane du rectangle entourant le pixel ; sur des images simles (draw square, par exemple), les résultats peuvent être déroutants et sans intérêt. Les filtres précédents tendent plutôt à lisser l'image, à fondre les pixels. Ceux qui suivent, au contraire, accentuent les differences. sharpen rend l'image plus "nette", plus "crisp" ; on peut l'utiliser à répétition : les résultats sont assez vite un peu bizarres, mais intéressants. gradient remplace l'image par ses variations ; le résultat en lui-même est rarement plaisant, mais donne des bases utiles à d'autres traitements ; on peut améliorer par exemple en faisant suivre par sharpen darken contours comme son nom l'indique, réduit l'image à des contours ; le résultat sur une image naturelle n'est pas toujours plaisant ; on a un exemple parfait avec (sur un fond uni) paint square contours . On peut parfois améliorer le résultat avec les opérations morphogéométriques ci-dessous, notamment x . Ou en faisant précéder l'opération par une simplification, par exemple median (ci-dessous) ou par une segmentation suivie de segapla (qui colore chaque région dans la couleur moyenne de cette région dans l'image d'origine. Atention, cette opération est longue). Voir aussi le chapitre suivant, certaines opérations géométriques pouvant être considérées comme des filtres. 4. Opérations géométriques Morphogéométrie Roxamedispose d'une panoplie élémentaire de fonctions "morphogéométriques", c'est-à-dire appliquant un motif déterminé à chaque pixel. Les résultats peuvent être assez suprenants, mais utiles. Les fonctions de base sont conçues pour travailler sur fond blanc. On n'obtiendra en général rien d'intéressant avec une photographie. Commencer par se ramener à des contours ou au moins à une image noir et blanc avec BW. On a des résultats intéressants aussi en passant par quadri.pl X et Z remplacent le pixel par le losange (respectivement le rectangle) qui le contiennent. On a donc un grossissement des zones non blanches. x et z remplacent par le même losange ou rectangle, mais creux. Ce qui donne en pratique des effets de contours, ou de contours multiples. XXX et ZZZ répètent trois fois l'opération. Les mêmes fonctions avec un 2 ajouté in fine (par exemple x2, X2...) donnent les mêmes résultats, mais avec expansion des blancs au dépit des couleurs. Symétries Des symétries (liste en sym.c) sont disponibles en trois séries, chacune avec une variante verticale, horizontale et diagonale : sym_h , sym_v et sym_d opèrent autour du milieu de l'image. symG_h, symG_v, et symG_d opèrent autour du nombre d'or. symR_h, , symR_v et symR_d opèrent autour de lignes choisies au hasard. Ces symétries ne sont pas un simple "flip", mais mélangent l'image et l'originale et sa symétrique, en mode additif ou soustractif selon la densité de l'image. 5. Classes et régions Classes Une classe est un sous-ensemble de l'image, contenant tous les points partageant une caractéristique commune. On peut par exemple considérer l'ensemble des couleurs comme un ensemble de classes ; mais, en général, cela n'aura pas beaucoup d'intérêt, et l'on cherche des classifications plus restrictives. Une partie des opérations que nous avons montrées à propos des couleurs créent par nature des classification (toutes les palettes, en particulier). On peut aussi chercher des classifications "significatives". Par exemple celle que nous proposons avec classify, construite pour reconnaître les types de "sujets" : campagne, ville, intérieur, tête, nu. Noter que - les pixels appartenant à une classe peuvent être répartis dans toute l'image, sans êre jointifs. - certains pixels peuvent appartenir à plusieurs classes. Quand Roxame classe les pixels, elle le fait en créant un tableau d'entiers de même taille que l'image, et en notant pour chaque point les classes auxquelles il appartient. On peut supprimer une classification existante avec declass Régions Une région est un sous-ensemble connexe de pixels présentant une caractéristique commune (en pratique, pour Roxame, la couleur). La détermination des régions, ou segmentation, s'obtient aussi en notant pour chaque point la région à laquelle il appartient. Attention : la segmentation prend beaucoup de temps (souvent plus d'une minute sur une image de 640.480 pixels). On peut segmenter une image brute sans autre préparation, avec segment0 Mais, sutout avec une image "naturelle", on aura presque autant de régions de que de points et l'opération est sans intérêt. Il y a donc intérêt à procéder préalablemnet à une classification ou à une réduction du nombre des couleurs. Roxame peut utiliser à cet effet toute sa panoplie de palettes et ses fonctions de classification. segment1 utilise la fonction classify ci-dessus, à caractère un peu sémantique. segment2 a un caractère plue neutre, basée sur une partition en 8 classes, définies pour chaque image par une division équitable des trois pararmètre ton, saturation et valeur. Cette dernière fonction ne donne en général pas de bons résultats avec une image en à-plats. Un grand intérêt créatif des régions est que l'on peut ensuite appliquer des opérations à chaque région, notamment des filtrages, dégradés et applications de formes géométriques. Le résultat de la segmentation est affiché, avec des couleurs arbitraires, dans la deuxième petite icone en dessous de l'image principale. On peut supprimer une segmentation existante avec deseg (ou bien en faisant une autre segmentation). 6. Evaluation et critique Roxame dispose d'un système de mesure, et s'en sert dans différentes phases de ses processus La plus utilisée est la "complexité" (nom de code difg) prise ici dans un sens tout à fait élémentaire mais, à l'expérience, fort efficace : le nombre de pixels qui sont différents du pixel à gauche et/ou du pixel au dessus. difh int the proportion of pixels differing from the upper one difv int the proportion of pixels differing from the left one dgen est le nombre de points non blancs dnsR, dnsG et dnsB donnent le pourcentage de points comportant un peu de chacune de ces couleurs ; noter que, pour une image blanche, ces trois valeurs sont de 100 dsat est la valeur moyenne de la saturation (ssat) dval est la valeur moyenne de la luminosité (vval) Toutes ces valeurs peuvent être affichées (à gauche) en tapant affeval . Bien qu'il ne s'agisse pas à proprement parler d'une mesure, on lit aussi le nombre de régions, qui a son importance pour l'évaluation d'une image. 7. Le dictionnaire de Roxame Vous pouvez étudier directement l'usage que Roxame fait des mots, soit en vous plongeant dans le dictionnaire (taper dico, puis déplacez-vous avec les touches UP, DOWN, HOME, END, RIGHT, LEFT, PAGE UP, PAGE DOWN (malheureusement, pour l'instant, Roxame ne répète pas automatiquement quand on garde la touche enfoncée). F1 trie le dictionnaire sur la première colonne (termes), F2 sur les catégories, F3 sur les définitions. Revenez au fonctionnement normal avec TAB. Le dictionnaire est un fichier .txt des plus simples. Il peut être plus commode d'y accéder avec un éditeur quelconque. Attention dans ce cas à ne pas y faire de modifications intempestives. Techniquement, les mots sont interprétés par deux fonctions, Ddo et List, dont vous pouvez directemnet étudier le code (onglet ZDdo). Analyse des suites de mots Pour l'instant, Roxame est très faible en grammaire et ne sait pratiquement qu'interpréter les mots les uns après les autres. Les mots sont mis dans une pile, dont on peut voir le fonctionnement en bas et à droite de l'écran (quand l'image n'occupe pas toute la surface, évidemment). Elle sait cependant : - décomposer une suite de mots figurant dans sa partie "définition" (troisième colonne du dictionnaire) ou tapée au clavier, de manière à les interpréter les uns après les autres ; ce travail est fait essentiellement par la fonction Rread. - isoler un suffixe qui, actuellement, comprend obligatoirement deux caractères reliés au mot principal par un point ; dans ce cas, elle adapte son comportement à ce suffixe et revient au dictionnaire proprement dit. - convertir les nombres entiers en une variable de type entier. Le traitement de la définition dépend principalement de la "catégorie" (deuxième colonne du dictionnaire) mais aussi, dans certains cas, du suffixe Analysons les différentes catégories. ( Noter la catégorie "routine" qui n'est pas très belle, qui regroupe un peu n'importe quoi, mais qui est bien pratique quand on développe et qu'on ne sait pas encore très bien où on va). types et suffixes. Listes et macros. Les catégories "list" et "macro_" on pour définition un ensemble d'autres mots du dictionnaire. Pour "macro_" , les mots sont lus et exécutés dans l'ordre donné. Noter que si le dernier mot de la macro est le nom même de cette macro, elle se recharge elle-même et tourne sans fin. La catégorie "list" est interprétée en fonction du suffixe : - si c'est un entier (deux chiffre après le point), le suffixe est un index et Roxame exécute le mot pointé (le dernier mot, si le nombre est plus grand que la longueur de la liste) - ".rd" tire au hasard dans la liste - ".tr" passe au mot suivant à chaque appel de la liste - ".sw" passe au mot suivant en fonction du numéro de l'oeuvre Action directe sur l'image : les catégories "form", "color", "filter", "geometry", "model" et quelques routines agissent directement sur l'image en cours. La définition comporte un ou plusieurs nombres, qui seront exploités par la fonction concernée, par exemple les valeurs RGB pour "color". Le nombre est souvent un simple index, envoyant sur un numéro de filtre ou de forme, par exemple. La routine "tabix" fait une copie de l'image en cours dans un fichier auxiliaire. Les fonctions "tabim0", "tabim3" et "tabim4" ramènent cette image auxiliaire sur l'image en cours, soit en l'écrasant (tabim0), soit en mode soustractif (tabim3), soit en mode additif (tabim4). Les fonctions "reload" rechargent (avec écrasement de l'image en cours) des images mises en réserve par les fonctions "reserve". "doc" charge directement l'image nommée ; Paramètres relatifs aux fonctions . "parameter", "position", "color" et les suffixes "pl" et "tb" modifient les parmètres, relatifs notamment aux couleurs et aux formes (voir plus haut). Accès aux ressources extérieures. "load" charge l'image dont le nom est en cours ; "next" passe à l'image suivante dans le répertoire en cours, "first" et "last" à la premièr et à la dernière image. "directory" change le répertoire de recherche des images. Fonctionnement. Un certain nombre de routines gèrent le fonctionnement de Roxame en autonome ou en interaction. Notamment les fonctions d'initialisation, de nomination, de sauvegarde. Evaluation. A l'inverse des autres, les fonctions d'évaluation génèrent du texte à partir de l'image en cours. Divers. "comment" explique le mot concerné. En principe, tout mot du dictionnaire est accompagné du mot suivi de ".c". En tapant le mot ainsi complété, on a en bas d'écran l'affichage du commentaire et du mot lui même avec sa catégorie et sa définition. d'autres catégories ne sont pas exploitées pour l'instant. 8. Hasard, autonomie, génétique, création Roxame in direct opposition with. speculative theory, romantic theory ** Extraits de Jean-Marie Schaeffer . L'âge de l'art moderne. Gallimard 1992/. "Dans la théorie spéculative de l'art, le discours de célébration usurpe la place d'une description analytique des faits artistiques, en même temps que l'expérience esthétique se voit réifiée en jugement apodictique. Il n'est pas sûr que la philosophie y ait gagné, mais il est certain que notre relation aux arts s'en est trouvée singulièrement appauvrie" p. 24 Sens 1 En termes d'école, un argument apodictique est un raisonnement démonstratif, suivant la signification grecque du mot. Sens 2 Dans la philosophie de Kant, qui obtient ou qui exprime l'adhésion la plus complète de l'esprit, et porte le caractère de la nécessité absolue. (Littré) "Chaque jugement de goût affirme être un exemple d'une règle universelle que l'on ne saurait énoncer conceptuellement" (p. 35) " Il n'existe pas de procédure permettant de réduire les prédicats esthétiques à des propriétés objectales conceptuellemnet descriptibles" (p. 43) "On ne peut déterminer a priori quel objet conviendra ou non au goût, il faut en faire l'expérience" (p. 43) La distinction entre art et non-art est fatalement une ligne de partage tracée à l'intérieur des pratiques artistiques : le geste d'exclusion est le complément de la sacralisation" (p. 84) "Le poète ordonne, fusionne, choisit, invente ... sans comprendre lui-même pourquoi il agit ainsi plutôt qu'autrement" (Novalis p.109)