Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

aide algorithme



  1. #1
    jasmina

    aide algorithme


    ------

    bonjour
    est ce que quelqu'un peu m'aider pour ecrire un algorithme. j'ai essayé plusieurs fois, mais je n'ai pas réussi. j'ai une image en noir(le fond) et blanc(mon objet qui se trouve presqu'au milieu), tel que dans mon objet, il y a des trous (noir)que je dois fermer et les mettre en blanc, comme mon objet.

    voici le principe de l'alg:
    mon image est repésentée en matrice, tel que le fond = 0, l'objet =255, et les trous se trouvant au milieu de l'objet =0.

    je dois partir de (x=0,y=0) qui est le pixel noir du fond, je le met a 255. je regarde ses voisins. Si un voisin est =0 je le mets dans une liste de voisins à analyser puis je le met a 255. Une fois que j'ai vu tous les voisins autour du pixel(0,0), je prends le premier pixel inséré dans ta liste. je regarde ses voisins : s'ils sont =0 je les ajoutes dans la liste et je les met a 255. Une fois fini, je prends le 2eme pixel de ma liste, etc, etc.

    donc, Tous les pixels de mon fond vont se peindre en blanc. Au final seuls les trous restent en noirs.

    Il suffit de faire l'inversion du ou exclusif entre l'image original et l'image ou le fond est blanc pour boucher les trous et me retrouver avec mon objet et les trous en blanc et le fond en noir.

    s'il vous plait de l'aide.
    merci

    -----

  2. Publicité
  3. #2
    overmind

    Re : aide algorithme

    Ben je vois pas trop où est ton problème, tu viens de le résoudre non? Si tu veux un exemple d'implémentation poste le language..

  4. #3
    Keorl

    Re : aide algorithme

    C'est dans quel language?
    Je n'ai pas le temps de te le faire ce soir en Caml (surtout que je suppose que tu ne connais pas ce language), mais il y a une idée (qui en plus réduit le temps d'exécution du programme):
    -tu parcours la matrice jusqu'à ce que tu trouve un point blanc (donc un point du contour de l'obet, en blanc)=255. tu sauves les coordonnée dans une liste.
    -ensuite, tu décales d'une colonne vers la droite. si le pixel rencontré est noir, on descent jusqu'à trouver un pixel blanc, dont on sauve les coordonnées. Si il est blanc (donc dans l'objet): soit le pixel du dessus est noir, donc le pxl courant est sur le mm ligne que le précedant, on ne sauve pas les coords; soit le pxl du dessus est blanc. On sauve ses coordonnées. Si la colonne suivante est entierement noire, on revient à la colonne du pixel testé précédemment, et on descent jusqu'au noir. Et ensuite, on va vers le gauche...
    -et on recommence autant de fois que necessaire.
    -Tu as à la fin de ce processus une liste de coordonnées de points du contour de l'objet dont il fait remplir les trous. (les points successifs d'une mm lignes n'étants pas prix en compte)

    pour chaque y, prends tous les couples qui y correspondent. normalment, il devrat y en avoir un nombre pair. Prends les deux par deux, ce qui te fais des segments d'ordonnée constante, et de deux abscisses différentes. (tu as (x,y) et (x1,y). Dans ta matrix, mets en blanc tous les éléments de la ligne y entre la colonne x et la colonne x1.

    Et voilà, c'est colorié.
    J'espère que tu auras compris le principe. C'est linéaire par rapport à la taille du contour de l'objet alors qu'un algo analysant tous les points serait quadratique.
    De plus, dans un algo analysant tous, on se heurte au probleme des "trous" de l'objet de plus d'un pixel: on ne peut pas simplement déterminer si un pixel est dans un trou (donc à mettre en blanc) simplement en vérifiant que les 8 autour sont blancs.

  5. #4
    JPL
    Responsable des forums

    Re : aide algorithme

    Citation Envoyé par aze555666
    C'est dans quel language?
    D'après ses autres messages jasmina utilise Matlab.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  6. A voir en vidéo sur Futura
  7. #5
    azt

    Re : aide algorithme

    Bonsoir,

    C'est du matlab, mademoiselle a recréé un topic pour poser la question.(cf question matlab pas très loin dans le forum). -rien de grave rassure toi-.

    Qu'est-ce qu'une case voisine pour toi ? et combien y en a t'il ? 4 ou 8 ? La différence a son importance.
    L'algorithme que tu proposes peut fonctionner à condition de prendre le bon nombre de cases voisines. Mais tu récupéres une seule forme blanche sans les détails intérieurs.
    Il faut aussi choisir correctement le seuillage en fonction de l'algorithme que tu vas utiliser ensuite.

    aze555666 : En fait, Jasmina veut partir d'un coin et colorier toutes les cases adjacentes -si j'ai bien compris-. On selectionne l'extérieur de la forme. A condition qu'il n'y ait pas de pixel blanc perdu dans cette foule de pixels noirs.
    Ton algorithme lui va être, à mon avis, fort dépendant du premier pixel appartenant au contour. Il y a le cas pas de chance, le premier pixel est seul. Il y a le cas de deux objets qui se touchent par un pixel, tu risque de n'en prendre qu'un. Bon, ici, pour une image de cerveau, on ne devrait pas avoir le problème.

    Si tu recherches d'autres méthodes pour boucher les trous pour ta segmentation, tu peux regarder les algorithmes de dilatation. C'est ce qu'on utilise généralement. Il y a aussi des algos basés sur les ondelettes, mais il faut un bon niveau en mathématiques.
    Nous sommes toujours de la taille de l'univers que nous découvrons. [Frédérick Tristan]

Discussions similaires

  1. algorithme
    Par carop89 dans le forum Mathématiques du supérieur
    Réponses: 15
    Dernier message: 29/10/2007, 18h06
  2. algorithme
    Par sensor dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 30/11/2006, 18h14
  3. aide en algorithme
    Par maribel dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 31/08/2006, 22h31
  4. algorithme
    Par maribel dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 25/06/2006, 16h29
  5. Algorithme
    Par Herbiti dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 26/02/2006, 18h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.