cs_stockley81
Messages postés24Date d'inscriptionlundi 21 avril 2003StatutMembreDernière intervention24 août 2005
-
15 juil. 2003 à 17:23
cs_S12
Messages postés5Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention24 novembre 2005
-
13 oct. 2005 à 13:29
Bonjour
j'ai recupere toutes les valeurs des pixels d'une image stockees dans des tableaux et je souhaite realiser un histogramme de l'image. C'est dire que je veux connaitre la recurrence de chacune des couleurs de l'image (en realite je veux juste connaitre la plus utilisee).
Les couleurs ont 3 composantes Rouge, Vert et Bleu, chacune pouvant prendre une valeur entre 0 et 255. Ce qui fait plus de 16millions (255^3) de couleurs differentes.
cs_payen
Messages postés252Date d'inscriptionmercredi 25 octobre 2000StatutMembreDernière intervention 1 mai 2005 15 juil. 2003 à 19:59
a priori dans ton cas, on fabrique poutot un histogramme pour chacune des composantes couleur de l'image. si ca te convient, alors, c'est pas tres complique :
- tu declares 1 tableau [2][256]
- tu initialises la 1ere ligne : 0, 1, 2, 3, 4, 5 ... et la deuxieme a 0 pour tous les elements
- tu parcoures chacune des composantes pixel par pixel
- tu incrementes l'element du tableau qui correspond a la valeur du pixel : histo[1][valeur]++;
cs_stockley81
Messages postés24Date d'inscriptionlundi 21 avril 2003StatutMembreDernière intervention24 août 2005 15 juil. 2003 à 21:35
Pour chacun des pixels, j'ai une combimaison Rouge,Vert,Blue. Et cette combinaison forme une couleur. Et je doit absolument faire un histogramme sur ces combinaisons et non sur chacune des 3 composante. C'est bien la le probleme.
Sur une couleur c'est effectivement pas tres dur mais sur les trois ca devient costaud.
J'ai essaye une methode qui mqrche mais qui est tres bourrin et qui consiste a balayer toutes les couleurs possibles les unes apres les autres et les chercher dans l'images (ca fait plus de 16millions d'iterations).minute pour une image 50*50pixels. Je travaille avec des images 512*512 voir plus. C inacceptable comme traitement.
cs_payen
Messages postés252Date d'inscriptionmercredi 25 octobre 2000StatutMembreDernière intervention 1 mai 2005 15 juil. 2003 à 21:50
et bien plutot que de balayer toutes les couleurs possibles de l'image, tu devrais balayer l'image et incrementer chaque valeur de ton histogramme des que tu rencontres une couleur donnee ...
bref, comme je te l'ai propose dans le precedent post, mis en ayant un tableau plus grand (histo[2][16M], a declarer en dynamique, ca m'etonnerait que ca marche sinon ...). avec ca, ton histo sera construit en balayant l'image une seule fois, ce qui devrait grandement ameliorer ton temps de calcul ...
si ca convient pas, j'ai encore un peu de temps, sinon, merci de me le dire ...
courage, tchô
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_stockley81
Messages postés24Date d'inscriptionlundi 21 avril 2003StatutMembreDernière intervention24 août 2005 15 juil. 2003 à 22:45
j'avais pense a cette methode. Mais j'ai eu peu de mal avec l'allocation dynamique de memoire et la maitrise de pointeurs c'est pourquoi j'essayait d'envisager d'autre possibilites.
efetel
Messages postés5Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention16 juillet 2003 15 juil. 2003 à 23:45
Effectivement travailler sur les trois dimensions est ardu voir impossible ...
je serais toi si je voulais travailler sur les trois couleurs (RVB)en meme temps je calculerais d'abord des classes de couleurs dans l'espace a trois dimension soit par des cut-offs soit par des algorithme plus specialises comme les nuees dynamiques (ou moving centers) et je formerais un histogram grossier
et ensuite je rafinerais a l'interieur de la(ou des) classes les plus importantes avant de trouver la couleur la plus representee.
Enfin une autre procedure pour ameliorer le calcul est de ne travailler que sur un sampling de ton image obtenue par tirage aleatoire.
si tu as besoin d'aide n'hesite pas
Cordialement
E.