Segmentierung von halbtransparentem Material, zB Glas

11

Ich bin total festgefahren in Bezug auf die Segmentierung glasartiger Objekte. Ich muss das Objekt so genau wie möglich machen. Meine Ansätze waren unterschiedlich. Zuerst habe ich versucht, den Hintergrund zu entfernen, so dass nur noch einige scharfe Konturen übrig sind. Dies funktioniert jedoch nur für Objekte mit scharfen Kanten / Verläufen. Andernfalls wird auch das Objekt selbst entfernt. Ich habe zwei verschiedene Bilder gepostet.

Bild 1 Bild 2

Ich habe versucht, den Hintergrund durch morphologische Operationen wie Graustufendilatation und eine Teilung darauf zu entfernen. aber es hat nicht viel geholfen. Danach habe ich ein k-Mittel mit k = 3 ausprobiert, um den modifizierten Hintergrund von den Grau- und Schwarzwerten des Glases zu trennen. Das war in einigen Fällen nicht erfolgreich, aber nicht insgesamt / im Durchschnitt. Ich habe auch versucht, eine knifflige Kantenerkennung mit einem insgesamt verwischten Filter durchzuführen, aber das führte zu schwächeren Ergebnissen in Form offener Konturen, viel Rauschen usw. pp.

Canny mit automatischen Schwellenergebnissen:

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

Gleiches gilt für das zweite Bild.

schlauer Ausgang # 1 schlauer Ausgang # 2

Wie Sie sehen können, gibt es innen und außen viel Lärm und doppelte Kanten von der Glasgrenze. Auch gibt es Lücken in den Kanten.

Ich brauche also Ihre Ratschläge, um einen allgemeinen Ansatz für die Behandlung dieses Problems halbtransparenter Materialien zu finden, nicht nur für diese beiden Bilder.

1) Andere Ideen zum Entfernen des Hintergrunds, ohne das Objekt zu beschädigen?

2) Andere Segmentierungsmethoden, um das Objekt vom Hintergrund zu trennen?

Wenn es möglich ist, dann mit Matlab, IPT oder statistischen Toolbox-Hinweisen. Alle anderen Hinweise sind ebenfalls willkommen!

Vielen Dank für Ihre Antwort im Voraus. Mit freundlichen Grüßen

mchlfchr
quelle
Ist der Hintergrund immer identisch?
Endolith
fast, unterscheidet sich ein bisschen in dunkler / heller.
mchlfchr
1
Das Subtrahieren des Hintergrunds von jedem Bild wäre ein Anfang, der es einheitlicher macht: imgur.com/9WhcB
Endolith
1
Was meinen Sie? Haben Sie ein Bild des Hintergrunds ohne Glas?
Endolith
1
@ TennisJaheruddin Ich weiß, dass eine Kante KEINE schwarze Linie ist. Eine Kante ist definiert als eine Änderung der Intensität / Frequenz, was bedeutet, dass sich die Grauwerte mehr oder weniger schnell ändern. Wie Sie vielleicht aus dem Zusammenhang heraus sehen, wird die Canny-Methode hier nicht die Waffe der Wahl sein, da ich aufgrund des Hintergrunds viel Lärm bekomme (mit Canny). Und ich kann die automatische Schwelle / das automatische Sigma nicht vorhersagen. Ich brauche also eine Methode, die den Hintergrund eliminiert, aber nicht das Objekt selbst.
mchlfchr

Antworten:

3

Warum nicht einfach einen einfachen 2D-FFT-Hochpassfilter (Guassian) verwenden?

Ich habe das ganz schnell mit MATLAB gemacht

Shard # 1 mit Hochpass-FFT:

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

Das gleiche wird auf # 2 gemacht.

Shard # 2 mit Hochpass-FFT:

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

Wie Sie sehen können, werden der Hintergrund und der Glasbereich ausgelöscht und nur die Kanten werden nachgezeichnet. Ich habe keine Zeit damit verbracht, aber Sie können die HP-gefilterte Ausgabe auf scharfere Kanten beschränken oder den HP-Cut-Off höher schieben.

Ist dies eher das Ergebnis, das Sie erzielen möchten?

Ariel Bentolila
quelle
1

Dies ist kein Versuch, die ganze Frage zu beantworten, aber ich habe eine Idee zum "Reinigen des Bildes" .

Sie sagten, Sie hätten bereits morphologische Operationen ausprobiert , und dies ist eine Variation der Idee, hoffentlich ein Upgrade.

Dieser Artikel: A. Vichik, R. Keshet, D. Malah: Die selbst-duale Morphologie von Baumhalbgittern und -anwendungen schlägt eine Möglichkeit vor, die klassischen morphologischen Operatoren so zu verbessern , dass ihnen wünschenswertere Eigenschaften hinzugefügt werden können.

Der Artikel schlägt vor , eine hierarchische Darstellung eines Bildes gemäß den gewünschten Eigenschaften auszuwählen , und schlägt dann eine Methode vor, um Operatoren wie Erosion, Dilatation, Öffnung und Zylinder auf dieser Darstellung zu definieren . In ihren eigenen Worten:

Wir haben einen allgemeinen Rahmen für die Erzeugung neuer morphologischer Operatoren vorgestellt (...)

Ich habe diese hierarchischen, baumförmigen Strukturen im zweiten Teil dieser Antwort ( semantische Ansätze ) erklärt , zu denen Sie den Extrema-Watershed Tree hinzufügen können, der in dem Artikel erwähnt wurde, den ich hier (und wieder) verlinkt habe .

Es ist ein Upgrade auf (unter Angabe der Autoren) der "traditionellen mathematischen Graustufenmorphologie", da die Operationen die gewünschten Eigenschaften der Darstellungen beibehalten . Wenn Ihre hierarchische Darstellung beispielsweise selbst-dual ist, sind Ihre Operatoren wirklich selbst-dual (z. B. vergleichen Sie das quasi- selbst-duale Öffnen und Schließen durch Rekonstruktion, die nicht wirklich selbst-dual ist).

Der verlinkte Artikel enthält auch einige Ergebnisse zum Herausfiltern des Rauschens. Sie können die Ergebnisse des Artikels (und der im Artikel genannten These) mit den Anforderungen vergleichen (zumindest visuell) und prüfen, ob sie für Sie funktionieren, bevor Sie beginnen zu codieren.

Wenn Sie also den Baum mit der einfachsten Darstellung (max- / min-) auswählen, erhalten Sie genau die klassischen Operationen. Wenn Sie jedoch einen Self-Dual-Baum auswählen, der Ihren Anforderungen am besten entspricht, erhalten Sie möglicherweise einen ausreichend robusten Ansatz.

Penelope
quelle