C'était l'image obtenue après le filtrage de Gabor ... Existe-t-il un moyen de supprimer les lignes à l'intérieur de l'image à l'exception du défaut arrondi blanc brillant.
J'ai essayé une autre orientation du filtre gabor pour obtenir le résultat suivant:
Après seuillage: ce qui est correct mais pas génial
Après filtrage médian:
Merci d'avance
Réponses:
Si la sortie de votre filtre Gábor est fiable et que la variation de vos données d'image n'est pas si élevée que le résultat semble complètement différent, alors vous pouvez utiliser l'approche suivante (certaines parties de celle-ci ont déjà été mentionnées):
Binarisez votre deuxième image avec n'importe quel algorithme de seuillage automatique. La gamme de seuils qui fonctionnera est grande comme vous le verrez.
Utilisez un algorithme d'étiquetage des composants pour étiqueter chaque région de pixel connectée avec une valeur unique.
Calculez pour chaque composant de votre image une propriété qui décrit la proximité de votre objet avec un cercle plein. Pour cela, vous pouvez utiliser par exemple la compacité . J'ai utilisé ci-dessous la fraction de pixels dans le rayon de disque équivalent . Ce rayon est le rayon d'un disque avec la même zone que votre objet aurait.
Pour voir qu'une binarisation automatique devrait fonctionner, voici les résultats pour un seuil très bas et très haut:
Mettre à jour l'étiquetage des composants
Le choix de l'étiquetage des composants n'est pas critique pour votre application. Je suggérerais, si vous devez l'implémenter par vous-même, d'utiliser une méthode très simple. La version en un seul passage du site Wikipedia est très simple. Fondamentalement, vous parcourez votre image binaire et lorsque vous rencontrez un pixel qui est blanc et n'est pas déjà étiqueté, vous utilisez une nouvelle étiquette pour cet objet et commencez par ce pixel.
Le processus d'étiquetage de cet objet avec une étiquette est fondamentalement similaire à un remplissage d'inondation. C'est sur le site Wikipedia les étapes internes 1-4 de l'algorithme. Vous commencez avec ce pixel étiqueté et mettez tous ses voisins sur une pile (ils ont utilisé un vecteur ). Pour un pixel sur la pile, vous vérifiez s'il est au premier plan et n'est pas déjà étiqueté. Si vous devez l'étiqueter, vous remettez tous ses voisins sur la pile. Faites-le jusqu'à ce que votre pile soit vide.
Ensuite, vous poursuivez votre numérisation à travers l'image. Contrairement à la description sur le site Wiki, vous n'avez pas à supprimer un pixel de votre image d'origine, vous sautez simplement lorsque vous avez une valeur différente de 0 dans votre image d'étiquette.
la source
Quelques idées:
EDIT: après votre étape de filtrage médian, vous y êtes presque. Bon travail! Le point 2 que j'ai suggéré ci-dessus (fermer, puis étiquetage de la région) est une technique pour vous emmener le reste du chemin.
la source
Vous pouvez essayer des contours actifs. Bien qu'il soit peut-être lent, il peut gérer des cas compliqués comme celui-ci.
Ou vous pouvez utiliser certaines connaissances préalables pour traiter cette image. Par exemple, vous savez que le blob est «gros» et «connecté». Ainsi, lorsque vous comptez le nombre de chaque région connectée, vous pouvez le trouver.
la source