Segmentation d'un matériau semi-transparent, par exemple du verre

11

Je suis totalement coincé sur un problème de segmentation des objets vitreux. J'ai besoin d'obtenir l'objet aussi précis que possible. Mes approches étaient différentes. Au début, j'ai essayé de supprimer l'arrière-plan, de sorte qu'il ne reste que quelques contours nets. Mais cela ne fonctionne que pour les objets qui ont des bords / gradients nets. Sinon, l'objet lui-même est également supprimé. J'ai posté deux images différentes.

image 1 image 2

J'ai essayé de supprimer l'arrière-plan via des opérations morphologiques, comme une dilatation en niveaux de gris et une division dessus. mais cela n'a pas beaucoup aidé. après cela, j'ai essayé un k-means avec k = 3 pour obtenir l'arrière-plan modifié séparé des valeurs de gris et de noir du verre. Cela n'a pas réussi dans certains cas, mais pas dans l'ensemble / en moyenne. J'ai également essayé de faire une détection de bord rusé avec un filtre global estompé, mais cela conduit à des résultats plus faibles sous forme de contours ouverts, beaucoup de bruit, etc.

Canny avec des résultats de seuil automatiques:

testimg = imread('http://i.imgur.com/huQVt.png');  
imshow(testimg)
imedges = edge(testimg,'canny');
imshow(imedges);

Il en va de même pour la deuxième image.

sortie n ° 1 sortie n ° 2

Comme vous pouvez le voir, il y a beaucoup de bruit à l'intérieur et à l'extérieur et des bords doublés à partir de la bordure en verre. Même il y a des lacunes dans les bords.

J'ai donc besoin de vos conseils pour obtenir une approche générale pour traiter ce problème des matériaux semi-transparents, pas seulement pour ces deux images.

1) D'autres idées pour supprimer l'arrière-plan sans endommager l'objet?

2) D'autres méthodes de segmentation pour séparer l'objet de l'arrière-plan?

Si c'est possible, alors avec Matlab, IPT ou des conseils de boîte à outils statistiques. Tout autre indice est également le bienvenu!

Merci d'avance pour votre réponse. Cordialement

mchlfchr
la source
Le fond est-il toujours identique?
endolith
presque, diffère un peu plus sombre / plus clair.
mchlfchr
1
Bien soustraire l'arrière-plan de chaque image serait un début, le rendant plus uniforme: imgur.com/9WhcB
endolith
1
Que voulez-vous dire? Avez-vous une photo de l'arrière-plan sans verre?
endolith
1
@DennisJaheruddin Je sais qu'un bord n'est PAS une ligne noire. Un bord est défini comme un changement d'intensité / fréquence, ce qui signifie que ses valeurs de gris changent plus ou moins rapidement. Néanmoins, comme vous pouvez le voir hors du contexte, la méthode Canny ne sera pas l'arme de choix ici, en raison de l'arrière-plan, je recevrai beaucoup de bruit (avec Canny). Et je ne peux pas prédire le seuil / sigma automatique. J'ai donc besoin d'une méthode qui élimine l'arrière-plan, mais pas l'objet lui-même.
mchlfchr

Réponses:

3

Pourquoi ne pas simplement utiliser un simple filtre passe-haut 2D FFT (guassien)?

J'ai fait ça très rapidement en utilisant MATLAB

Éclat n ° 1 utilisant la FFT passe-haut:

http://i47.tinypic.com/rbjxnd.jpg

La même chose se fait sur # 2.

Éclat n ° 2 utilisant la FFT passe-haut:

http://i45.tinypic.com/209kms0.jpg

Comme vous pouvez le voir, l'arrière-plan et la zone de verre sont effacés et seuls les bords sont tracés. Je n'y ai pas passé de temps, mais vous pouvez seuiller la sortie filtrée HP pour avoir des bords plus nets ou pousser la coupure HP plus haut.

Est-ce plus les résultats que vous cherchez à obtenir?

Ariel Bentolila
la source
1

Ce n'est pas une tentative de répondre à toute la question, mais j'ai une idée de "nettoyer l'image" .

Vous avez dit que vous avez déjà essayé des opérations morphologiques , et ceci est une variation de l'idée, je l'espère une mise à niveau.

Cet article: A. Vichik, R. Keshet, D. Malah: La morphologie auto-duelle sur les demi-réseaux d'arbres et les applications propose un moyen d' améliorer les opérateurs morphologiques classiques d'une manière qui peut leur ajouter des propriétés plus souhaitables.

L'article suggère de choisir une représentation hiérarchique d'une image en fonction des propriétés souhaitables, puis propose une méthode pour définir des opérateurs tels que l' érosion, la dilatation, l'ouverture, le chapeau haut de forme sur cette représentation . Dans leurs propres mots:

Nous avons présenté un cadre général pour la production de nouveaux opérateurs morphologiques (...)

J'ai expliqué ces structures hiérarchiques en forme d'arbre dans la deuxième partie de cette réponse ( approches sémantiques ) , à laquelle vous pouvez ajouter Extrema-Watershed Tree mentionné dans l'article que j'ai lié ici (et encore) .

Il s'agit d'une mise à niveau (citant les auteurs) de "morphologie mathématique en niveaux de gris traditionnelle" car les opérations conservent les propriétés souhaitables des représentations . Par exemple, si votre représentation hiérarchique est auto-dual, vos opérateurs seront vraiment auto-dual (par exemple, comparez avec une quasi -auto -double ouverture-fermeture par reconstruction qui n'est pas vraiment auto-dual.)

L'article lié présente également certains résultats pour filtrer le bruit - vous pouvez comparer leurs résultats de l'article (et de la thèse référencée dans l'article) à ce dont vous avez besoin (au moins visuellement) et voir si cela fonctionnerait pour vous avant de commencer programmer.

Ainsi, tout en choisissant l'arbre de représentation le plus simple (max- / min-) produira exactement les opérations classiques, choisir un arbre auto-dual qui convient le mieux à vos besoins pourrait vous donner une approche suffisamment robuste.

Pénélope
la source