Wie entferne ich einen bestimmten Hintergrund aus dem Bild?


11

Orange

Dies war das Bild, das nach der Gabor-Filterung erhalten wurde ... Gibt es eine Möglichkeit, die Linien im Bild zu entfernen, mit Ausnahme des hellweißen, abgerundeten Fehlers?

Habe versucht eine andere Ausrichtung des Gabor-Filters zu folgendem Ergebnis:

Geben Sie hier die Bildbeschreibung ein

Nach dem Schwellenwert: Was in Ordnung genug ist, aber nicht großartig

Geben Sie hier die Bildbeschreibung ein

Nach der Medianfilterung:

Geben Sie hier die Bildbeschreibung ein

Danke im Voraus


2
Gute Arbeit mit dem Medianfilter. Du bist gut auf dem Weg.
Rethunk

Dies scheint ein gutes Szenario für die Anwendung eines Diffusionsfilters zu sein. Versuchen Sie auch, zu fragen: <br/> dsp.stackexchange.com/ <br> photo.stackexchange.com/ <br>
Danny Varod

Haben Sie den Medianfilter nach dem Schwellenwert angewendet? Wenn ja, versuchen Sie es ohne den Schwellenwert.
Danny Varod

Ja, ich habe es nach dem Schwellenwert versucht und ich habe fast das gleiche Ergebnis
erzielt,

Antworten:


12

Wenn die Ausgabe Ihres Gábor-Filters zuverlässig ist und die Variation Ihrer Bilddaten nicht so hoch ist, dass das Ergebnis völlig anders aussieht, können Sie den folgenden Ansatz verwenden (Teile davon wurden bereits erwähnt):

  1. Binarisieren Sie Ihr zweites Bild mit einem beliebigen automatischen Schwellenwertalgorithmus. Wie Sie sehen werden, ist der Bereich der Schwellenwerte, die funktionieren, groß.

  2. Verwenden Sie einen Komponentenbeschriftungsalgorithmus, um jeden verbundenen Pixelbereich mit einem eindeutigen Wert zu kennzeichnen.

  3. Berechnen Sie für jede Komponente Ihres Bildes eine Eigenschaft, die beschreibt, wie nahe Ihr Objekt an einem gefüllten Kreis liegt. Hierfür können Sie beispielsweise die Kompaktheit nutzen . Ich habe unterhalb des Pixelanteils innerhalb des äquivalenten Plattenradius verwendet . Dieser Radius ist der Radius einer Festplatte mit derselben Fläche wie Ihr Objekt.

    1. Der Bereich zählt einfach die Anzahl der Pixel Ihres Objekts
    2. Die Berechnung des Radius eines Kreises aufgrund seiner Fläche sollte ebenfalls überschaubar sein
    3. Für das Pixel innerhalb dieses Radius benötigen Sie die Mitte jedes Bildobjekts, dies ist jedoch nur der Mittelwert aller Positionen der Objektpixel. Wenn Sie Physiker sind, kennen Sie den Schwerpunkt mehrerer Punktmassen. Das ist gleichwertig.
    4. Jetzt berechnen Sie für jedes Pixel jedes Objekts den Abstand von seiner Mitte und prüfen, ob es kleiner als der Kreisradius ist oder nicht. Wenn Sie die beiden Zahlen teilen, erhalten Sie den Bruchteil der inneren und äußeren Pixel.
  4. Nimm das Objekt mit dem höchsten Anteil. Hinweis: Objekte mit nur einem Pixel erhalten den Wert 1. Sie sollten also einen Größenschwellenwert festlegen und nur Objekte verwenden, die größer sind, z. B. 10 Pixel.

Um zu sehen, dass eine automatische Binärisierung funktionieren sollte, sind hier die Ergebnisse für einen sehr niedrigen und einen sehr hohen Schwellenwert:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Komponentenbeschriftung aktualisieren

Die Wahl der Komponentenkennzeichnung ist für Ihre Anwendung nicht kritisch. Ich würde vorschlagen, wenn Sie es selbst implementieren müssen, eine sehr einfache Methode zu verwenden. Die One-Pass-Version von der Wikipedia-Site ist sehr einfach. Grundsätzlich durchlaufen Sie Ihr Binärbild und wenn Sie auf ein Pixel treffen, das weiß ist und noch nicht beschriftet ist, verwenden Sie eine neue Beschriftung für dieses Objekt und beginnen mit diesem Pixel.

Das Beschriften dieses Objekts mit einem Etikett ähnelt im Wesentlichen einer Flutfüllung. Dies ist auf der Wikipedia-Seite die inneren Schritte 1-4 im Algorithmus. Sie beginnen mit diesem beschrifteten Pixel und legen alle seine Nachbarn auf einen Stapel (sie haben einen Vektor verwendet ). Für ein Pixel auf dem Stapel prüfen Sie, ob es im Vordergrund steht und noch nicht beschriftet ist. Wenn Sie es beschriften müssen, legen Sie erneut alle Nachbarn auf den Stapel. Tun Sie dies, bis Ihr Stapel leer ist.

Dann setzen Sie Ihren Scan durch das Bild fort. Im Gegensatz zur Beschreibung auf der Wiki-Site müssen Sie kein Pixel aus Ihrem Originalbild entfernen. Sie überspringen nur, wenn Sie einen anderen Wert als 0 in Ihrem Etikettenbild haben.


Auf welchen Komponentenbeschriftungsalgorithmus beziehen Sie sich hier?
Vini

1
@vini, ich habe meinen Beitrag aktualisiert. Phonon, danke. Wir verwenden viele morphologische Maßnahmen und vor allem die Kompaktheit war vor einiger Zeit sehr nützlich.

yup great got it :)
vini

6

Ein paar Ideen:

  1. Filtern Sie Kanten basierend auf der Dichte der Kantenstärken heraus. Ermitteln Sie anhand einer Näherung eines kreisförmigen Kernels die mittlere Kantenstärke (oder ein anderes Maß). Durchlaufen Sie alle Kanten bei oder über dem Schwellenwert und setzen Sie alle Kanten unterhalb des Schwellenwerts auf Schwarz.
  2. Verwenden Sie eine morphologische "Schließ" -Operation (Dilatation, gefolgt von Erosion), um das Bild zu bereinigen, und verwenden Sie dann einen Regionsbeschriftungsalgorithmus (auch als verbundene Komponente, Blobs bezeichnet), um alle Blobs zu finden. Filtern Sie die Blob-Daten nach Größe, Verhältnis von Haupt- zu Nebenachse usw.
  3. Versuchen Sie es mit Gaußscher Unschärfe, suchen Sie einen Binärisierungsschwellenwert, um Licht von Dunkelheit zu segmentieren, und filtern Sie dann Blobs wie in Schritt 2 oben beschrieben. (Für eine schnelle Annäherung an eine Gaußsche Unschärfe drücken Sie die Augenlider größtenteils zu und blinzeln Sie auf das Bild.)
  4. Probieren Sie einige Filter in Photoshop oder GIMP aus.

BEARBEITEN: Nach Ihrem mittleren Filterungsschritt sind Sie den größten Teil des Weges dorthin. Gut gemacht! Punkt 2, den ich oben vorgeschlagen habe (schließen, dann Regionsbeschriftung), ist eine Technik, die Sie den Rest des Weges führt.


yup wird versuchen, dass Sie wissen, was passiert
vini

1

Sie können aktive Konturen ausprobieren. Obwohl es vielleicht langsam ist, kann es komplizierte Fälle wie diesen behandeln.

Oder Sie können Vorkenntnisse verwenden, um dieses Bild zu verarbeiten. Zum Beispiel wissen Sie, dass das Blob-Ding "groß" und "verbunden" ist. Wenn Sie also die Nummer jeder verbundenen Region zählen, können Sie sie finden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.