web-dev-qa-db-fra.com

Quel est le meilleur algorithme "godet-remplissage"?

Je suis assez nouveau au traitement de l'image et je travaille actuellement sur une application de peinture qui comportera un godet-remplissage. Cependant, je n'ai aucune idée de ce que le meilleur algorithme pour un godet-remplissage est.

J'ai mis en place un exemple que j'ai trouvé à partir de ce site , cependant, il a rencontré des problèmes de boucle infinis lorsqu'un utilisateur a essayé de remplir une zone qui avait déjà été rempli de la même couleur.

Je travaille actuellement autour de ce problème en remplissant la gauche, à droite, en hausse puis bas; Cependant, je l'ai fait pour que une fois qu'un pixel soit rempli à gauche, il ne peut pas remplir à droite, ce qui signifie des formes telles que:

Example

ne sera pas rempli correctement si l'outil de seau est utilisé au point rouge.

Par conséquent, j'espère que quelqu'un connaît un algorithme ou un lien avec celui qui résoudra toutes ces questions.

Informations supplémentaires: Ceci sera mis en œuvre à l'aide de JavaScript comme outil de peinture. Il sera utilisé en ligne utilisant l'élément de toile.

16
Ivan

On dirait que tu cherches réellement ce qu'on appelle un algorithme de remplissage d'inondation. C'est peut-être la raison pour laquelle vous n'avez pas trouvé de tonnes d'exemples pour cela. Il y a plusieurs méthodes de remplissage d'inondations énumérées sur la page page Wikipedia pour l'algorithme . Je recommande vivement l'une des méthodes non récursives, "en file d'attente".

21
GrandmasterB