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:
Natürlich können sie auch einen anderen Maßstab haben, wie aus dieser Familie hervorgeht:
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.
Und natürlich gibt es als großes Finale die eindeutige Möglichkeit dieses "extremen" Szenarios:
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).
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?