pb d'Algo - Programmation
Marsh Posté le 13-08-2001 à 14:50:42
 tj pas de reponse
 tj pas de reponse  
meme pas des idees 
mais bon que 10 lectures  
 
Marsh Posté le 13-08-2001 à 16:35:58
on vas arriver a 25% de programmeurs ne sachant pas resoudre ce pb   
   
  
ca fait peur pourtant ca pas l'air d'etre compliqué 
Marsh Posté le 13-08-2001 à 16:48:33
si tu pouvais balancer un exemple ... 
 
en attendant, si ton fond est tout noir, tu peux y aller 'brute force' : ie tu analyse ton image séquentiellement, et dès que tu tombes sur un pixel non fond (non beau noir parfait) tu appliques un floodfill (voir l'algo récursif magique sur google). sauf que le floodfill ne s'occupe pas de remplir une plage uniforme d'une autre couleur uniforme, mais de calculer la valeur de la couleur moyenne, justement. il faut aussi qu'il update un buffer copie de l'image en marquant les pixels qu'il a 'floodfillés' comme déjà traités. 
 
après ce premier floodfill, tu continues le parcours de ton image pixel par pixel jusqu'à ce que tu tombes sur un pixel non traité ou non 'beau noir parfait'. et hop ... tu auras le nombre de tâches et leur couleurs moyennes. 
[edtdd]--Message édité par youdontcare--[/edtdd]
Marsh Posté le 13-08-2001 à 17:01:33
 une reponse qui vas peut etre m'aider
 une reponse qui vas peut etre m'aider  
  
  youdontcare.astuce > 35% des informaticiens
 youdontcare.astuce > 35% des informaticiens  
  
 reste plus ka voir si ca marche 
 
je te tien au courant  
 
Marsh Posté le 13-08-2001 à 17:05:54
Tu peux m'envoyer un exemple zippé par mail ? 
 
tfj57@yahoo.fr 
 
A+ 
Marsh Posté le 13-08-2001 à 17:21:03
oki je crois ke je vias mettre l'image a traiter en ligne sur le forum ou aux != mails  
 
mais bon vas il y avoir d'autres pb ki vont si greffer (noir pas parfait(avec de legeres variations,et points se cevauchant normalement impossible mais javais une image a traiter et il se chevauchaient parfois,mais le cahier des charge a change   )
 ) 
Marsh Posté le 13-08-2001 à 23:46:08
faut faire une croissance de région (si j'ai bien compris ce que tu voulais faire, càd, trouver le niveau moyen en RVB des tâches...?) 
 
   donc, pour ça, tu tries tes pixels dans l'ordre décroissant (en NdG, car j'ai jamais travaillé en RVB) puis, en partant du pixele ayant le + grand NdG, tu recherches autour tous les pixels supp à un autre NdG, ici, 0 puisque le fond est noir... 
Marsh Posté le 14-08-2001 à 10:07:43
il me faut bien la valeur moyenne RVB de chaque taches 
 
pour l'instant la solution retenue est le floodfill  
mais vas merder si le font nest pas parfait (mais pouras donner une tolerance pas un pb) mais si la tolerance bouffe les points  on verras bien comment ca se presenterras
 on verras bien comment ca se presenterras 
 
par contre le grand pb c'est quand 2 taches se chevauchent legerement ben le floodfill il vas se planter en beautée  
 
 
pour l'image a traiter elle a 150km de chez moi  
  
donc la diffuserais par mail dim soir ou avant si je trouve sur le net 
 
 
en fait ce chti pb est con mais chaud a la fois a ce que je voit 
  
  
 
donc si vous avez des methode plus radicales faite men part  
 
Marsh Posté le 14-08-2001 à 11:07:48
à part tritouiller les niveaux de tolérance à la main, je vois pas bien de solution magique ... 
 
enfin je remarque que dans ton premier post tu précisais que les taches étaient 'bien séparées'  
 
 
si tu n'as pas l'exemple sous la main, ça ressemble à quoi ? c'est une manip connue ? c'est peut-être trouvable sur le net ... (avec l'algo au passage). 
Marsh Posté le 14-08-2001 à 11:17:37
| koulip31 a écrit a écrit  : par contre le grand pb c'est quand 2 taches se chevauchent legerement ben le floodfill il vas se planter en beautée   | 
 
 
LeE problème c'est que déja c'est pas clair, comment toi tu fais même "à la main" pour différentier le pixel qui appartiennent à une tache et ceux qui appartiennent à l'autre.  
Imagine si tu as un tache bleu et un tache vert qui se chevauchent au milieu tu auras des pixels jaunes. 
Marsh Posté le 14-08-2001 à 14:20:17
bon je reprend tout clairement en mettant le pb dans son integralitee 
 
les données: 
-je recoit une photo/image (qualite des couleurs mediums donc variation legeres(l'arriere plan.... mais reste noir a l'oeil)) 
-sur celle ci on voit des taches de differentes couleurs et intensitees et couleurs organisée en tableau (ecartement entre 2 taches en X toujour ou presque identique de meme qu'en Y) 
 
le but du prog: 
-donc le but est de recuperrer la valeur moyenne RVB de chaque tache et de la stoquer un tableau dans le but de faire des moyennes entre plusieurs images  
 
pb: 
-dans la pratique il se peut que les taches se chevauchent (elles ne se melange pas) 
-les images ne sont pas de tres bonne qualitées 
-l'ecartement des taches n'est pas parfait du tout  donc peux pas se baser dessus pour chopper les taches
 donc peux pas se baser dessus pour chopper les taches 
-c'est des taches ... donc c'est patatoidale (en forme de patate  )
) 
-et bien sur trouver le nombre de taches en x et y pour definir notre tableau 
 
pour plus d'info: 
-l'image a analyser decoule de prelevements sur de l'ADN contenus dans un chromosome et sert a voir l'evolution des genes... jen avais une photo dans mon livre de BIO de ce truc ....  
si kkn se rapele du nom exact ce serrait cool pour aller chercher une image sur le net avant dim (jour oou je pourrais diffuser l'image   )
 ) 
Marsh Posté le 14-08-2001 à 14:30:43
_________________________________________________________ 
Imagine si tu as un tache bleu et un tache vert qui se chevauchent au milieu tu auras des pixels jaunes. 
_________________________________________________________ 
 
il se chevauchent mais se melangent pas!!!!  
  
 
a l'oeil nu ca se voit clairement... mais si japlique un floodfil ben il vas seplanter car avec ce chevauchement il vas traiter les 2 taches d'un coup donc tout fausser  
 
Marsh Posté le 14-08-2001 à 14:46:26
Ben c'est simple tu fais un floodfill avec une tolérence 0. 
Théoriquement un floodfill ça ne remplis que une couleur donnée. 
Donc que la tache soit entourée par le fond ou par une autre tache sa pose pas de problème. 
Certain floodfill accepte une valeur de tolérence mais dans ton cas il faut mettre se valeur à 0. 
Marsh Posté le 14-08-2001 à 14:55:51
| koulip31 a écrit a écrit  : pb: -dans la pratique il se peut que les taches se chevauchent (elles ne se melange pas) | 
 
 
Bin, je vois pas de problème: 2 taches qui se chevauchent=1 tache 
Marsh Posté le 14-08-2001 à 15:15:02
--------------------------------------------------------------- 
Certain floodfill accepte une valeur de tolérence mais dans ton cas il faut mettre se valeur à 0.  
--------------------------------------------------------------- 
et des qu'il y a une otute petite variation de mon ariere plan il la considere comme une tache ... donc faut que je lui assigne une tolerance (de plus une tache ets constitué d'une couleur et d'une diff d'intensitee) donc des ke l'intensite vas changer le floodfil vas deconner non la meilieur sol reste celle de youdontcare faire un floodfil inverse (tout ce ki nest pas noir ou preske est une tache) 
 
---------------------------------------------------------------- 
Bin, je vois pas de problème: 2 taches qui se chevauchent=1 tache  
---------------------------------------------------------------- 
ben en fait chaque tache == une donnée biologique  
donc: 
 2 taches == 2 données 
 et si tu reduit ca a 1 tache ben ca vas etre jolie les resultat d'annalyse .....    
   
 
Marsh Posté le 14-08-2001 à 15:19:49
En gros il faut que tu fasse de la reconnaissance de forme. 
Donc c'est plus un algo que tu veux c'est un programme d'intelligence artificiel. Parce qu'il y a que ce genre de programme qui peut dicerner des formes aléatoire sur un support non uniforme. 
Ou alors il faut que tu acceptes certaines approximations 
Marsh Posté le 14-08-2001 à 15:25:52
| koulip31 a écrit a écrit  : ---------------------------------------------------------------- Bin, je vois pas de problème: 2 taches qui se chevauchent=1 tache ---------------------------------------------------------------- ben en fait chaque tache == une donnée biologique donc: 2 taches == 2 données et si tu reduit ca a 1 tache ben ca vas etre jolie les resultat d'annalyse .....     | 
 
 
OK, mais is tes taches sont de formes patatoïdes et qu'elles ne sont pas monochromes, ça va être coton pour les différencier. 
 
Sinon, tu peux toujours dire que c'est un mutant ou un OGM  
 
Marsh Posté le 14-08-2001 à 15:26:39
c'est comme la selection avec photoshop.. faut une tolérence 
 
tu peux aussi faire des opération sur les zone de pixel en cas de seuil critique. 
 
du style une tache rouge 84% et une autre de 81% là tu fait une opération en ajoutant du vert pour bien séparer les deux taches 
Marsh Posté le 14-08-2001 à 15:32:38
| Citation :    | 
 
ben ouias pkoi c'est pourkoi jen appele a vous  
  
pourtant dans l'absolut ca pas laire complexe .... 
 
je vais regarder du cote des filtres....  
 
| Citation :   | 
 
 
ouais mais pas top  
 
me faudrais le nom exacte pour choper une photo 
un topic chasse aux mutant dans bla-bla ![[:daydream] [:daydream]](https://forum-images.hardware.fr/images/perso/daydream.gif) 
 
Marsh Posté le 14-08-2001 à 15:36:48
| Citation :   | 
 
 
oki la je suis daccord mais pour leur assigner une couleur respective pour les differencier.... 
 ben faut arriver a les chopper et les separrer pour les colorer donc tu tourne en rond   
 
Marsh Posté le 14-08-2001 à 16:23:38
tient si tu veux qq liens sur les couleurs 
 
http://www.easyrgb.com/index.htm 
 
http://www.efg2.com/Lab/Library/Color/Science.htm 
 
 
 
c'était dans mon grenier.... 
Marsh Posté le 14-08-2001 à 23:24:03
solution avec un minimum d'interface utilisateur : 
 
j'ai parlé avant d'un buffer copie de l'image qui serait updaté par le floodfill, afin qu'il puisse détecter quels pixels ont déjà été traités et que tu puisses détecter dans ta boucle de parcours de l'image si le pixel est déjà traité. 
 
tu peux étendre un minimum l'algo : le floodfill ne traîtera qu'une tâche à la fois, et remplira le buffer copie avec le numéro de la tâche traitée. une fois le floodfill terminée, il updatera le tableau des 'couleurs de tâche' avec la couleur moyenne trouvée. après le traitement, il faudra que tu parses ce buffer copie et que tu l'affiches par-dessus l'image. si buffercopie[y*with+x] = 0 tu n'affiches rien, sinon tu affiches tableauDesCouleursDeTache[buffercopie[y*width+x]]. tu auras alors la tronche des tâches traitées avec leurs couleurs moyennes. 
 
et si je comprends bien, ça foirera sur certaines tâches vu certains problèmes de tolérance : il faut que tu prévoies une mini interface utilisateur qui permette de tracer des segments qui serviront de délimitation entre les tâches.  
 
ie 
* tu lances l'algo, il t'affiche le résultat 
* tu vois que deux tâches ont été traitées comme une seule 
* tu traces une frontière entre ces deux tâches  
* cette frontière sera initialisée dans le buffer de copie à 0xffffff par ex, ce qui empêchera le floodfill d'aller plus loin, toi d'appeler un floodfill là-dessus. tu rajouteras juste un cas dans l'affichage de l'image, if buffercopie[xxx] = 0xffffffff alors affiche du blanc, par ex. 
 
au fait je parlais de tolérance dans le floodfill, si une tolérance par pixel ne suffit pas, tu peux essayer une tolérance aux voisins : ie voir si la valeur des pixels adjacents (les 4, les 8, ...) dépasse ta valeur seuil. 
Marsh Posté le 16-08-2001 à 09:56:45
je crois ke t viens de resoudre le pb   
  
 
serrieusement le floodfil est le plus simple et le plus effiace a mettre en oeuvre . 
on mavais proposé de faite de la detection de contours mais plus chaud a mettre sur pied.  
 
affaire conclue  
 
Marsh Posté le 13-08-2001 à 14:37:09
jai une image celle ci est parsemee de taches de couleurs
les taches sont bien separees mais peuvent etre de toute formes
comment choper la valeur moyenne RVB de chaque taches?