1

-

2

-

3

Mhhh, ce n'est pas évident, ce que tu demandes ...
En effet, il faut faire le bon compromis entre représenter les nuances de la couleur prédominante, et ne pas oublier les couleurs peu représentées mais chromatiquement éloignées de la dominante.

Tout d'abord, il faut que tu fasses une table donnant, pour chacune des Y couleurs de départ, le nombre de pixels de cette couleur, afin d'éliminer toutes les couleurs à 0, et avoir une idée de la dominante. Ensuite, pour réduire le nombre de couleur en perdant le minimum de qualité, je te conseille de passer du codage RGB au codage YUV (luminance-chrominance).
Luminance :
Y = 1 x (0.299 R + 0.587 G + 0.114 B)
Chrominance (codée sur deux vecteurs) :
U = 0.492 x (B - Y) V = 0.877 x (R - Y)
Pour U et V, il faut faire attention au fait que l'on peut avoir une valeur négative, il faut donc les coder sur des variables plus grandes (words au lieu de bytes, ou dwords au lieu de words).

Ensuite, pour chacune des Y couleurs, il faut que tu donnes une note en fonction du nombre de pixels de cette couleur et d'autres critères, comme la distance du plus proche voisin ( DYUV 1-22 = (Y1-Y2)2 + (U1-U2)2 + (V1-V2)2 ), ainsi que des choses plus subtiles et tordues fou.
Enfin, tu sélectionnes les X couleurs ayant les plus hautes notes (ou plus basses, ça dépend comment tu attribues les notes), et pour les Y-X couleurs restantes, tu les remplaces par leur plus proche voisin (toujours en codage YUV).

Voilà, j'espère t'avoir donné quelques pistes et idées ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

4

Il peut faire une diffusion pour remplacer les couleurs restantes (mélanges de couleurs pour approcher la couleur d'origine, vu de loin).
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

5

-

6

Ben... thinkons... I'm thinking...
Heu...
Alors :
Un pixel est codé par trois composantes.
Pixel d'origine Co : composantes Ro, Go, Bo
Pixel réduit Cr : Rr, Gr, Br

Pour chaque "pixel restant", on calcule la moyenne avec 3 pixels qui l'entourent (tant pis s'ils étaient codable par une couleur exacte).
On obtient un pixel Co (composantes Ro, Go, Bo) qu'il faut maintenant approcher en combinant plusieurs couleurs. On doit se démerder avec 4 couleurs.

L'algo bourrin : on teste toutes les combinaisons possibles des couleurs disponibles et on garde la meilleure.
L'aglo rapide :
DMC
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.