2009-12-01 2 views
2

Je veux trouver un algorithme qui peut trouver des lignes brisées ou des formes dans un bitmap. Considérons une situation dans laquelle j'ai un bitmap avec seulement deux couleurs, arrière et blanc (Images utilisées dans les livres à colorier), il y a quelques courbes et lignes qui devraient être connectées les unes aux autres, mais en raison de certaines erreurs de numérisation des noirs. Comment devrais-je les détecter? (Après ce travail, je veux convertir les bitmaps en fichiers vectoriels, je veux travailler avec un algorithme Potrace).Comment détecter et corriger des lignes brisées ou des formes dans un bitmap?

Si vous avez une idée, s'il vous plaît faites le moi savoir.

Répondre

2

Voici un algorithme simple pour guérir les petites lacunes:

d'abord, utiliser un filtre qui crée un pixel noir lorsque l'un de ses huit voisins est noir. Cela va développer votre plan général.

Ensuite, utilisez un filtre amincissant qui supprime le contour supplémentaire, mais laisse les vides remplis seuls.

Voir cet article pour certains filtres et paramètres: Image Processing Lab in C#

1

L'approche la plus simple est d'utiliser une technique appelée morphologique closing. Cela ne fonctionnera que si les écarts dans les lignes sont assez faibles par rapport à la distance entre les différentes lignes.

La manière dont vous choisissez l'élément structurant pour effectuer la fermeture peut également améliorer les performances, voire les améliorer. L'article de Wikipédia est très théorique (ou mathématique), alors vous pouvez vous tourner vers Google ou n'importe quel livre sur le traitement d'image pour obtenir une meilleure explication sur la façon dont cela est fait.

1

Peut-être Hough Transform peut vous aider. Bonus: vous obtenez les paramètres de lignes pour votre fichier vectoriel.

Questions connexes