matique
Messages postés18Date d'inscriptionsamedi 4 février 2006StatutMembreDernière intervention12 avril 2006
-
6 févr. 2006 à 18:07
msaidani
Messages postés3Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention19 septembre 2008
-
19 sept. 2008 à 15:11
Bonjour,
Je souaiterais convertir une image en restreignant sa palette de couleurs à une palette de couleurs que j'ai definit.
Par exemple : j'ai une image en couleur vraie et je veux qu'elle soit recalculée en utilisant les couleur bleu vert et rouge.
Pour chaque pixel cette fonction chercherait ainsi si la couleur du pixel est plus proche du rouge, du bleu ou du vert !
C'est en fait la meme chose que de convertir une image en 256 couleurs (cas du gif par exemple) sauf que c'est moi qui donne les couleurs !
Merci beaucoup pour cette aide precieuse qui va me servir a calculer la couleur dominante d'une image de maniere fiable !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 févr. 2006 à 09:07
Hello,
oui, tu peuxc t'en sortir avec les fonctions GD, mais à mon avis, ça ne va pas être facile.
Dans les fonctions GD, tu as la comparaison de couleurs, tout un tas de fonctions pour ça. Tu peux aussi récupérer la couleur d'un pixel spécifique. Tu peux aussi modifier un index de couleur dans la palette...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 févr. 2006 à 09:35
Non, il veut par exemple savoir si 245, 135, 248 est plus proche du rouge, du vert, ou du bleu (là, c'est du bleu par exemple). C'est pas franchement difficile à calculer.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 7 févr. 2006 à 10:00
bah RGB donc 255 /255 /255 c'est blanc
255 /0 /0 c'est rouge
0/ 255 /0 c'est vert
0 /0 /255 c'est bleu.
A toi de faire des pourcentages en mixant ensuite les couleurs primaires pour avoir une bonne précision. (tu pourras ainsi calculer le porcentage de rouge pur, de vert pur, etc...) A partir de ces couleurs de base tu peux calculer le pourcentage de jaune pur, etc...
Ensuite tu compares simplement tes valeurs pour déterminer la couleur secondaire dominante (car bon couleur primaire c'est pas vraiment précis à mon goût, secondaire non plus mais c'est déjà moins pire).
matique
Messages postés18Date d'inscriptionsamedi 4 février 2006StatutMembreDernière intervention12 avril 2006 7 févr. 2006 à 12:20
Pour ce qu'il est de la distance entre des couleur je faisait allusion a un algo mathematique qui calcul la distance entre des mot (nb d'erreur). Il existe sans doute la meme chose pour les couleurs !
Autrement oui je pense que je vais essaer avec les pourcentages en ayant préalablement convertit mon image en 256 couleurs.
Ceci dit, il faut que je fasse une petite etude sur le fonctionnement des couleur.
Par exemple, pour du gris il faut que R V B.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 févr. 2006 à 13:27
Heu;..GD, comme je te le disais, te donne les couleurs, aavec leurs 3 composantes. Pourquoi tu t'emmerdes? Et GD te permet de calculer la distance entre les couleurs aussi (bon, pour une image, mais c'est anecdotique ça ).
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 févr. 2006 à 14:13
Je crois qu'on ne s'est pas compris.
En parcourant la palette de couleurs d'une image (imagecolorstotal), et en récupérant chaque index de sa palette de couleur (imagecolorsforindex), tu peux facilement voir de quelle composante cette couleur est la plus proche : je rappelle que cette fonction renvoie la valeur des 3 composantes dans un tableau : array ('red' => ??, 'green' => ??, 'blue' => ??). Et de là, réallouer avec imagecolorset.
Je suis sûr que dans les commlentaires d'une de ces fonctions, il y a déjà un script montrent un exemple pour faire ça (sur php.net).
matique
Messages postés18Date d'inscriptionsamedi 4 février 2006StatutMembreDernière intervention12 avril 2006 7 févr. 2006 à 18:34
Merci pour ton conseil ! ;)
En fait, je souhaitais simplement convertir mon image en 16 couleurs, palette que j'ai moi meme défini préalablement. Et donc pour chaque pixel trouver la couleur la plus proche parmi cette palette donnée.
Je comptais effectivemment me baser sur le meme principe que toi malalam sauf que je vais faire un algo de calcul de distance entre deux couleur en m'inspirant de celui de levenstein.
Puis, ensuite j'analyserais chaque pixel ou je mettrais les résultats de distance dans une table de hashage pour savoir laquelle est la plus proche.
Voila en gros ce que je vais faire !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 8 févr. 2006 à 07:57
la distance de levenstein pour une distance entre 2 couleurs, quand tu en as les 3 composantes primaires ?
Ma foi, si tu veux...mais je n'en vois pas du tout l'utilité. Le code va en effet déjà être assez lourd comme ça sans lui ajouter des trucs pour le sport ;-)
matique
Messages postés18Date d'inscriptionsamedi 4 février 2006StatutMembreDernière intervention12 avril 2006 9 févr. 2006 à 18:10
Merci pour ta remarque !
Je l'avais carrement oublié dans mes corrections !
Je suis en plein dans mes test et je me rend compte que fonction ImageColorAt fonctionne bizzaremment.
Elle me renvoi 0 soit la couleur noir au lieu de la couleur orange !
orange.gif est une image d'un pixel de couleur orange
Voici mon code de test :
$imageSource = ImageCreateFromGif('orange.gif');
$pixel = ImageColorAt($imageSource,0,0);
echo $pixel; // renvoi 0 ???????