remplissage des trous d'une image

remplissage des trous d'une image - Algo - Programmation

Marsh Posté le 03-04-2006 à 18:37:02    

bonjour
je devrais faire un algorithme de remplissage des trous de mes images du cerveau. s'il vous plait de l'aide. et encore mieux si quelqu'un sait le faire avec le code en matlab. j'apprends a utiliser matlab, et c'est pas évident.
merci

Reply

Marsh Posté le 03-04-2006 à 18:37:02   

Reply

Marsh Posté le 03-04-2006 à 19:14:36    

> je devrais faire un algorithme de remplissage des trous de mes images du cerveau.
[:rofl]
 
sérieux, tu peut être plus explicite, voire donner un exemple d'image?

Reply

Marsh Posté le 03-04-2006 à 19:42:57    

bonsoir
je vous remercie de m'avoir repondu aussi rapidement. voici un exemple de mes image:http://brainvisa.info/doc/html/brainvisa/images/brainmask1.jpg
j'ai fait un seuillage pour avoir que le cerveau, mais il y a plein de trous !! ça donne a peu pres ça: http://brainvisa.info/doc/html/brainvisa/images/brainmask2.jpg
est ce que ça te donne une idée?
merci

Reply

Marsh Posté le 03-04-2006 à 19:44:00    

cette image est prise de l'internet, mes images sont sans le contour et sans les yeux.

Reply

Marsh Posté le 03-04-2006 à 19:58:44    

oui,  dans ce cas, en général, on fait une moyenne de la couleur des pixels des coins, que l on prends comme couleur de référence.
 
ensuite, on définit une zone de pixels à retirer, qui ne contient au début que les quatre pixels de coin (on peut faire plus élaboré en démarrant avec un ensemble vide).
 
on aggrandit successivement la zone en y ajoutant pour tous les pixels déjà présents les pixels adjacents dont la couleur est suffisamment proche de la couleur de référence.
 
par suffisamment proche, on entends abs(gris1-gris2)<delta.
 
quand la zone ne s aggrandit plus on a fini.

Reply

Marsh Posté le 03-04-2006 à 19:59:52    

ça c est l algo, mais je n ai jamais utilisé mathlab.

Reply

Marsh Posté le 03-04-2006 à 20:03:47    

désole, mais je n'ai pas compris grands choses. est ce que tu peux me réexpliquer plus simplement?
merci

Reply

Marsh Posté le 03-04-2006 à 22:00:51    

tu commence par les coins, et tu rognes l image pixel par pixel jusqu a ce que tu tombe sur des pixels blancs. quand ya plus rien à rogner tu as fini.

Reply

Marsh Posté le 03-04-2006 à 22:12:40    

:)


Message édité par nargy le 03-04-2006 à 22:13:28
Reply

Marsh Posté le 04-04-2006 à 11:15:14    

je te donne la même chose en language algo:
 

Code :
  1. type Couleur:=Entier 0..255
  2. type Image:=tableau [][] de Couleur
  3. type Coordonnee:=Structure( Entiers x,y )
  4. type Zone:=Liste de Coordonnee
  5. fonction rogner(Image i) retourne Image
  6. debut
  7. /* on fait une moyenne de la couleur des pixels des
  8. coins, que l on prends comme couleur de référence. */
  9.   Couleur reference:=moyenne(i[0][0],
  10.     i[0][hauteur(i)],
  11.     i[largeur(i)][0],
  12.     i[largeur(i)][hauteur(i)]);
  13. /* on définit une zone de pixels à retirer, qui ne
  14. contient au début que les quatre pixels de coin */
  15.   Zone zone:=( (0,0),
  16.     (0,hauteur(i)),
  17.     (largeur(i),0),
  18.     (largeur(i),hauteur(i)) );
  19.   Image rognage[largeur(i)][hauteur(i)]:=Couleur(0);
  20. /* quand la zone ne s aggrandit plus on a fini. */
  21.   tant que taille(zone)>0
  22.   faire
  23. /* on aggrandit successivement la zone en y ajoutant
  24. pour tous les pixels déjà présents les pixels
  25. adjacents dont la couleur est suffisamment proche
  26. de la couleur de référence. */
  27.     Zone nouvelleZone:=()
  28.     pout tout element p de zone
  29.     faire
  30.       pour toutes les coordonnée adj adjacentes à p
  31.       si rognage[adj.x][adj.y]==0
  32.         et couleurIdentique(i[adj.x][adj.y], reference)
  33.       alors
  34.         nouvelleZone.ajouter( (adj.x, adj.y) )
  35.         rognage[adj.x][adj.y]:=255
  36.     fait
  37.     zone:=nouvelleZone
  38.   fait
  39.   retourne rognage;
  40. fin
  41. /* par suffisamment proche, on entends
  42. abs(gris1-gris2)<delta. */
  43. Entier delta:=32 // changer ici le seuil selon image
  44. fonction couleurIdentique(Couleur c1, Couleur c2) retourne Booleen
  45. debut
  46.   retourne abs(c1-c2)<delta;
  47. fin


Message édité par nargy le 04-04-2006 à 13:50:24
Reply

Marsh Posté le 04-04-2006 à 11:15:14   

Reply

Marsh Posté le 04-04-2006 à 11:57:20    

c'est tres gentil, merci beaucoups de m'avoir donné le code.
bonne journée

Reply

Marsh Posté le 04-04-2006 à 13:49:42    

attends, je viens de me rendre compte qu il y a une erreure

Reply

Marsh Posté le 04-04-2006 à 13:50:35    

corrigé

Reply

Marsh Posté le 04-04-2006 à 14:15:09    

la quelle? au fait, j'ai déja seuillé mon image, donc maintenant j'ai une image en noir et blanc, tel que le fond est noir, et mon cerveau est blanc

Reply

Marsh Posté le 04-04-2006 à 14:27:31    

non, c était pas ce seuillage là qu il fallait faire, mais celui que je t ai indiqué.

Reply

Marsh Posté le 06-04-2006 à 13:32:00    

Excusez-moi de mon ignorance mais à quoi sert l'algo ? j'ai pas trop compris. :)


---------------
On commence à fumer pour montrer qu'on est un homme. Vingt ou trente ans plus tard, c'est pour la même raison qu'on essaie de s'arrêter.
Reply

Marsh Posté le 06-04-2006 à 14:54:30    

il me semble que touriste25 veut extraire de limage ci dessus le cerveau uniquement, sans les bords noirs.
 
l algo qu il utilisait récupère les parties grises et blanches, ce qui faisait des trous.
 
l algo que je propose sert à récupérer le centre de l image et éliminer les bords noirs. ça ressemble à la baguette magique dans les logiciels de retouche photo.

Reply

Marsh Posté le 06-04-2006 à 14:59:35    

bonjour
oui, c'est ça

Reply

Marsh Posté le 06-04-2006 à 15:03:22    

tiens, salut :)
alors ça marche?

Reply

Marsh Posté le 06-04-2006 à 15:08:06    

bin, non !! mon responsable ne m'a pas laissé finir l'alg!! il m'a dit d'utiliser la methode BET, ou brain(fsl) que je ne connais pas dutout !! donc je fais de la recherche pour voir comment segmenter avec l'une de ses 2 methodes !!
merci

Reply

Marsh Posté le 06-04-2006 à 15:44:54    

http://www.fmrib.ox.ac.uk/fsl/
mais j ai pas réussi à le downloader
(du coup je suis curieux de connaître leur algorithme)

Reply

Marsh Posté le 06-04-2006 à 16:05:46    

merci, j'ai réussi a le telecharger, mais c'est en anglais !! et c'est le grand pb !! je n'y comprends rien.

Reply

Marsh Posté le 06-04-2006 à 19:36:37    

d'où l'a tu téléchargé?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed