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.
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.
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
Antworten:
Warum nicht einfach einen einfachen 2D-FFT-Hochpassfilter (Guassian) verwenden?
Ich habe das ganz schnell mit MATLAB gemacht
Shard # 1 mit Hochpass-FFT:
Das gleiche wird auf # 2 gemacht.
Shard # 2 mit Hochpass-FFT:
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?
quelle
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:
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.
quelle