Re: Autre problème graphisme
Sujet: Re: Autre problème graphisme De: julien.wiesel (l' arobase) gmail.com (LeWiZ) Groupes: fr.comp.algorithmes
Organisation: http://groups.google.com
Date: 13. Sep 2007, 18:02:09
Bonjour,
Il existe plusieurs algorithmes pour réduire le nombre de couleurs
dans une image.
La plus rapide est de ne garder que les bits les plus significatifs
dans les trois composantes, par exemple 3 pour le rouge, 3 pour le
vert et 2 pour le bleu et de former une palette de 256 couleurs avec
ça. Dans ce cas la palette est fixe (elle ne dépend pas de l'image).
L'avantage c'est que la conversion est très rapide.
Une autre méthode est de prendre les n couleurs les plus représentées.
Mais sur des images avec beaucoup de nuances de couleur différentes
c'est un choix qui risque de ne pas être très pertinent.
Une méthode plus complexe mais qui offre de meilleurs résultats
visuels est la méthode du "découpage médian". En gros, le principe
consiste à subdiviser le nuage de point des couleurs de ton image dans
un espace colorimétrique par des plans médians successifs. On commence
par positionner chaque couleur de l'image dans un espace
colorimétrique RGB en trois dimensions. On cherche ensuite selon
quelle direction le nuage de point est le plus large, et on coupe en
deux le nuage selon cette direction à la médiane (autant de points
d'un côté que de l'autre). Sur chacune des parties du nuage de point
que l'on obtient, on recommence l'opération : trouver la direction la
plus large, et couper en deux selon cette direction à la médiane. Au
bout de 8 itérations tu auras découpé ton nuage en 2^8 = 256 zones. Il
suffit alors d'associer à chaque zone la couleur moyenne des points
qui la composent et on obtient une réduction de couleurs tout à fait
satisfaisante.
Il existe enfin une dernière méthode usuelle : la méthode des octrees.
Un octree est un arbre dans lequel chaque noeud peut compter jusqu'à 8
enfants. Cet objet est particulièrement bien adapté à la
représentation tridimensionnelle des couleurs. Si on découpe chaque
dimension en deux dans l'espace colorimétrique RGB, on obtient 8 zones
que l'on peut à nouveau découper en 8, etc. Après 8 itérations, on a
couvert l'ensemble de l'espace colorimétrique habituel de 24 bits
(3^8). Pour la réduction de couleur, l'idée est la suivante. On
travaille avec notre octree de profondeur 8 dont chaque feuille
représente une couleur sur 24 bits. Pour l'implémentation, il vaut
mieux le construire au fur et à mesure ! On parcourt l'ensemble des
couleurs de notre image et on la place dans sa feuille correspondante
de l'octree. On continue jusqu'à ce que l'on ait n feuilles occupées
(n=256 par exemple). Lorsque l'on cherche à placer une couleur et que
l'on a déjà n feuilles occupées, il faut fusionner un groupe de
feuille dans un noeud parent pour réduire le nombre de feuilles
occupées. On supprime les feuilles et on mets dans le noeud parent
(qui devient feuille) la moyenne des couleurs enfants. On choisit
généralement le groupe de feuille le plus profond de l'octree car les
couleurs qui le constituent sont les plus semblables. En cas d'égalité
entre plusieurs groupe, il y a plusieurs écoles. On peut soit choisir
le plus petit groupe pour minimiser l'erreur, ou bien choisir le plus
gros pour éviter les cassures de couleurs sur les grosses plages plus
ou moins uniformes de l'image. Une fois que l'on a balayé l'ensemble
des couleurs de l'image, on obtient la palette en prenant l'ensemble
des feuilles de notre octree. Il est tout à fait possible que l'on
obtienne un peu moins que n couleurs car on a parfois fusionné plus de
2 couleurs pour la remplacer par une.
En espérant t'avoir apporté quelques pistes,
LeWiZ.
|
| actualité |
TC Electronic PowerCore 6000 dispoPc Music - 6 nov 2008Rappelons pour mémoire que la PowerCore 6000 combine une interface PowerCore avec des algorithmes issus du prestigieux System 6000 de la marque, ... |
|
| source |
|