Welche Bildverarbeitungstechniken sind ideal für diese spezielle Anpassung von verschiebungs- / skalierungsinvarianten Vorlagen?


17

Ein Problem, das ich ursprünglich hier besprochen hatte, hat sich entwickelt und könnte ein wenig einfacher geworden sein, als ich es in einigen weiteren Studien untersucht und neue Informationen erhalten habe.

Unterm Strich möchte ich in der Lage sein, dieses hier gezeigte Muster mithilfe von Computer-Vision- / Bildverarbeitungstechniken zu erkennen. Wie Sie sehen, besteht das ideale Muster aus vier "Pings". Die Objekterkennung sollte sein:

  • Invariante verschieben
    • Horizontal ist das Bild zyklisch. (dh nach rechts drücken, kommt links heraus und umgekehrt).
    • (Zum Glück) Vertikal ist es nicht zyklisch. (dh entweder nach oben oder unten drücken und es stoppt).
  • Skaleninvariante (Die Pings können, wie Sie sehen, in der Dicke variieren.)

Ich könnte weiter und weiter darüber reden, aber ich habe Bilder angehängt, die beschreiben, was ich meine, siehe unten:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Natürlich können sie auch einen anderen Maßstab haben, wie aus dieser Familie hervorgeht:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Und schließlich sind hier einige "realistische" Szenarien, die zeigen, was ich tatsächlich erhalte, wo es zu Rauschen kommt, die Zeilen nach unten "verblassen" können und das Bild natürlich viele unechte Linien und Artefakte aufweist , etc.

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Und natürlich gibt es als großes Finale die eindeutige Möglichkeit dieses "extremen" Szenarios:

Bildbeschreibung hier eingeben

Deshalb möchte ich noch einmal um eine Anleitung bitten, welche Computer-Machine-Vision-Techniken ich hier verwenden sollte, um das Auftreten meines Musters am besten zu erkennen , bei dem ich, wie Sie sehen können, verschiebungs- und skalierungsinvariant sein muss, und auch in der Lage sein, angemessene Ergebnisse für die realistischen Szenarien zu erhalten. (Gute Nachricht ist, dass ich es NICHT brauche, um rotatorisch invariant zu sein). Die einzige Idee, die ich bisher hatte, ist eine 2-D-Korrelation.

Ich sollte hinzufügen, dass ich in Wirklichkeit KEINE farbigen Bilder habe - ich werde nur einen Martix von Zahlen erhalten, also denke ich, dass wir über "Graustufen" sprechen.

Danke im Voraus!

PS: Für was es sich lohnt, werde ich wahrscheinlich open C V verwenden.

EDIT # 1:

Aufgrund der Kommentare habe ich die von Ihnen angeforderten Details hier hinzugefügt:

Für Merkmale, die die Daten definieren, können wir Folgendes annehmen:

  • Die horizontale Länge jedes Pings kann variieren, aber ich kenne die oberen und unteren Grenzen. JA für alles innerhalb dieser Schranke, NEIN für alles außerhalb. (Beispiel: Ich weiß, dass die Länge der Pings zum Beispiel zwischen 1 und 3 Sekunden liegen kann.)

  • Alle Pings müssen für YES 'sichtbar' sein, die letzte Zeile kann jedoch fehlen und möchte weiterhin 'YES' sagen. Sonst NEIN.

  • Die vertikale Länge (die "Dicke") jedes Pings kann variieren, aber auch hier kennen Sie die obere und untere Grenze. (Ähnlich wie in diesen Bildern). JA für alles innerhalb dieser Schranke. NEIN für irgendetwas draußen.

  • Die Höhe zwischen den einzelnen Pings sollte bei YES immer gleich sein. Wenn nicht, dann NEIN. (Beispiel: Sie können sehen, wie alle Pings die gleiche Höhe haben, ~ 110 auf der vertikalen Achse). 110 +/- 5 kann also ein JA sein, alles andere muss NEIN sein.

Ich denke, das ist alles - aber lassen Sie mich wissen, was ich noch hinzufügen kann ... (Außerdem sollte sich alles, was hier gezeigt wird, als JA registrieren, übrigens).


Was meinst du, wenn du sagst detect this pattern shown here? Sind Sie nur daran interessiert, rote / gelbe Linien zu isolieren, oder möchten Sie einen Ausdruck, der die Beziehung zwischen solchen Linien berechnet? Nur Linien zu finden, kann nur eine gewisse Schwellwertbildung oder Segmentierung erfordern. Was möchtest du wirklich?
Dipan Mehta

@ DipanMehta Sorry für die Verwirrung. Was ich tun möchte, ist Folgendes: Achten Sie zunächst nicht auf die Farben (es heißt nur, sie wurden geplottet). Was ich haben werde, ist nur eine Zahlenmatrix, also Graustufen. Zweitens, da es keine Farben gibt, kümmere ich mich nur um das 'Muster', das Sie dort mit den 4 Pings sehen, die Sie wiederholen. Der Detektor sieht also Varianten dieser Bildvorlage, wie in den obigen Bildern gezeigt, und sagt "Ja, dieses Muster existiert". Entschuldigen Sie die Verwirrung und lassen Sie mich wissen, ob ich noch etwas klarstellen kann. Vielen Dank!
Spacey

Ok, wenn ich das richtig verstehe, möchten Sie, da die erste Zeile oben ist, herausfinden, ob sich die Waage auch an derselben Stelle befindet. wenn ja, würden Sie schließen, dass Muster existiert! Richtig?
Dipan Mehta

@DipanMehta Ja, grundsätzlich können Sie erkennen, ob das oben gezeigte Muster existiert, robust genug, um mit Skaleninvarianz umzugehen, und robust genug, um mit Verschiebungsinvarianz umzugehen. Ist das sinnvoll? Vielen Dank
Spacey

1
Was ich bekomme, ist, ob Sie Zugriff auf die Quelldaten in dem System haben, an dem Sie gerade arbeiten. Wenn Sie dies tun, gibt es möglicherweise einen besseren Ansatz, bei dem die Originaldaten direkt verarbeitet werden, anstatt des Spektrogramm-Zwischenformats, auf das Sie sich festgelegt haben.
Jason R

Antworten:


6

Allgemein gesprochen gibt es zwei Hauptansätze zur Lösung dieses Problems:

ein. Template Matching oder
b. Matching mit einem parametrisierten Modell.

Ich persönlich würde angesichts der Einfachheit des Modells den zweiten Ansatz für dieses Problem vorziehen.

Schritt 1: Identifizieren Sie die Ping-Blobs

Als ersten Schritt extrahieren Sie die "Kästchen" - im Wesentlichen die gelb / blauen Quadrate. Eine einfachste Methode könnte hier darin bestehen, das Bild nur auf eine Schwelle zu setzen. Der Hintergrund scheint nicht sehr unterschiedlich zu sein, außer dass er mit zunehmendem Rauschen den Pings sehr ähnlich ist. Daher kann der Schwellenwert über das gesamte Bild hinweg global sein - und ich denke, Sie werden in der Lage sein, einen angemessenen Schwellenwert zu erhalten, der über alle Bilder hinweg funktioniert. Die Schwelle sollte jedoch intelligent sein, damit Sie so etwas wie Otsus Methode verwenden können. Siehe dies und das für mehr Referenz.

Verbesserung der Blöcke

Dies ist eine gute Möglichkeit, um störende Punkte zu entfernen, die dem Ping-Vordergrund ähneln, bei dem einige Pixel in den Pings ebenfalls blau sind. Sie benötigen hier eine morphologische Operation namens "Öffnen". Hier ist eine der Referenzen von HIPR . Für diese Art von Operationen ist eine intelligente Form erforderlich, mit deren Hilfe ähnliche Formen beibehalten und andere entfernt werden können. In Ihrem Fall können Sie horizontale Linien wählen. Am Ende haben Sie Hintergrund- und Vordergrundpixel, die die Pings sauber trennen, ohne sich zu berühren.

Schritt 2: Blöcke markieren / registrieren

Nachdem Sie die saubersten Blobs erhalten haben, können Sie diese mit 1,2,3,4 oder A, B, C, D usw. markieren. Dies wird normalerweise durch einen so genannten einfachen Algorithmus erreicht. Durchlaufen Sie jedes Pixel und erstellen Sie ein neues, wenn es einen markierten Bereich berührt und sich auch im Vordergrund befindet. Ordnen Sie es diesem Segment zu. Wenn Sie mehr als 4 wichtige Segmente finden, müssen Sie die relevantesten auswählen. Wenden Sie hier eher eine Heuristik als einen theoretischen Algorithmus an.

Schritt 3: Modellierung von Parametern

Sobald wir die wahrscheinlich besten 4 Kandidaten der 4 entsprechenden Pings erhalten haben, können Sie die Begrenzungsrahmen identifizieren - im Wesentlichen die oberen linken und unteren rechten Ecken (oder die linken und rechten Pixel sowie die oberen und unteren Reihen des Blobs). . Finden Sie den Begrenzungsrahmen, können Sie den Schwerpunkt jedes Ping-Rahmens mit einer Geldstrafe versehen.

Ci where i{1,2,3,4}C1C1

Daher können jetzt die Abstände zwischen den Schwerpunkten berechnet werden:

C1i[x,y]={C1[x]Ci[x],C1[y]Ci[y]}

Li where i{1,2,3,4}

Grundsätzlich haben Sie 8 Parameter Vecoter:

1.{C1[x],C1[y]}2..4C1i[x,y]5..8Li

Schritt 4: Klassifizierung
Im letzten Schritt müssen wir nun klassifizieren, ob es ein Ping-Muster gibt, ja oder nein.

Für so etwas kann man ein schönes Bayesianisches Klassifikator-Framework haben.

Sie haben zwei Hypothesen

H0: Das Ping-Muster existiert.
H1: Das Ping-Muster existiert nicht

C1,i[x]

Zunächst studieren Sie viele Bilder, von denen Sie wissen, dass sie zum Bild gehören. Jetzt können Sie verschiedene Histogramme zeichnen oder eine Methode zur Dichteschätzung anwenden. Lesen Sie Pattern Classification von Duda Hart.

C1,i[x]μ=20,σ=.1

C1,iH0P[C1,i[x]|H0]

Nun zu den Testdaten

P[H0|C1,i[x]=x1]C1[x]x1H0

Sie können also rechnen

P[H0 |C1,ich[x]]=P[C1,ich[x]|H0]P[H0]P[C1,ich[x]]

Sie müssen diesen Ausdruck für den Vektorausdruck kombinieren und viel Aufwand aufwenden, um die Parameterschätzung genau vorzunehmen. Aber ich überlasse Ihnen hier den grundsätzlichen Ansatz.

Bitte rechnen Sie selbst, dies ist zwar langwierig, sollte aber dennoch recht intuitiv sein.

P[H0|alle Parameter]>1/2

BEARBEITEN
Da Sie bereits die spezifischen Kriterien für 110 +/- 5 Pixel definiert haben, kann der letzte Schritt einfacher sein. Sie müssen wahrscheinlich nicht alle diese Wahrscheinlichkeiten berechnen, wenn Ihre Klassifizierungskriterien festgelegt sind.


Vielen Dank! Ich muss das verdauen und mich bei dir melden.
Spacey

3

Dieses Problem scheint mir das Problem der Impulsfolge-Intervallerkennung + -schätzung zu sein. Ich werde diese Antwort mit der Zeit entwickeln müssen, aber die Art von Algorithmen, die in diesem Problem gut funktionieren , ist die maximale Wahrscheinlichkeit für ein Gitter .


Danke, ja, ich werde froh sein, Ihre Gedanken dazu zu hören. In der Zwischenzeit werde ich über Ihren Link schauen.
Spacey

Peter, hattest du Zeit darüber nachzudenken, wie du erwähnt hast? Ich würde gerne Ihre Gedanken dazu hören.
Spacey

Habe gerade wieder angefangen zu basteln (April war eine Abschreibung). Ich könnte mich irren: Die Art und Weise, wie Clarkson das Problem formuliert, ist anders.
Peter K.
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.