Detektion

Detektion

Motivation

Das Ziel der Teilgruppe Detektion war es, Schlieren in Unterwasseraufnahmen zu erkennen und zu visualisieren. Innerhalb des Projektes erhielten wir die Möglichkeit, durch die anderen Teilgruppen unser Detektions-Tool mit nachgestellten Aufnahmen von Schlieren zu testen. Diese wiesen keine oder nur minimale Störquellen wie Verunreinigungen auf, wodurch wir unser Programm schon im Anfangsstadium testen konnten.

Die anderen Gruppen erhielten so ebenfalls eine Rückmeldung, ob ihre Resultate vergleichbar mit unseren Ergebnissen aus echten Unterwasseraufnahmen waren. Dadurch konnten wir ihnen hilfreiche Verbesserungsvorschläge liefern, inwiefern sie die eigentlichen Schlieren besser hervorheben könnten.

Erster Ansatz

Bevor wir mit den eigentlichen Videos arbeiteten, beschlossen wir, mit einer vorgegebenen Sequenz von Einzelbildern zu beginnen. Unser erster Ansatz bestand darin, dass wir einen PIV-Algorithmus, mittels dem man Geschwindigkeitsfelder zwischen zwei Einzelbildern erzeugen kann, nutzten. Wir nutzten dafür die PyPIV library, welche vom Institut für Geophysik von der Georg-August Universität Göttingen entwickelt wurde. Basierend auf dem Geschwindigkeitsfeld haben wir dann versucht die Schlieren zu lokalisieren.

Geschwindigkeitsfeld zwischen zwei Einzelbildern
Geschwindigkeitsfeld zwischen zwei Einzelbildern

Erkenntnisse

  • Schwierigkeiten bei der Differenzierung von Verschiebungsarten untereinander
  • Unterschätzung der Störfaktoren, wie Kleinstlebewesen, Mineralien, Beleuchtungsunterschiede und der Kamerabewegung
  • Die Erkenntnis, dass das PyPIV zu anfällig für die oben genannten Störfaktoren ist

Algorithmus

Nachdem klar wurde, dass die PyPIV library für unsere Verwendung nicht geeignet ist, sind wir nach einiger Recherche bei dem Horn-Schunck Algorithmus geblieben.

Gründe für den Wechsel

Einer der Hauptgründe für den Wechsel von der PyPIV library zum Horn-Schunck Algorithmus war die geringere Empfindlichkeit vom Horn-Schunck Algorithmus. Da beide Algorithmen für die Nutzung unter guten bis perfekten Bedingungen konzipiert wurden und diese in der Tiefsee nicht gegeben sind, mussten wir Bildverarbeitungsfunktionen anwenden, die viele Störquellen beseitigen und so das Ergebnis verbesseren konnten.

Der andere Hauptgrund war die Performance. Wie im Diagramm gut zu sehen ist, erreicht der Horn-Schunck Algorithmus in bedeutend weniger Zeit ein möglichst gutes Ergebnis, was besonders für Livestream und Nutzungskomfort wichtig ist.

Performance Vergleich - das Diagramm zeigt dass mit dem Horn-Schunck Algorithmus mit deutlich weniger Rechenzeit gute Ergebnisse erzielt werden können
Performance Vergleich

Verarbeitungsschritte

Wir starten mit zwei hintereinander folgenden Originalbildern.

Originalbild

Diese werden in Graustufen umgewandelt und es wird die CLAHE-Funktion darauf angewendet, um den Kontrast zu erhöhen. Das sorgt später für stärker außgeprägte Ergebnisse beim Horn-Schunck Algorithmus und erleichtert damit quasi das finden der Schlieren.

nach CLAHE

Als nächstes verwenden wir einen Blockmatching-Algorithmus, um eine grobe Verschiebung zwischen den Bildern herauszufinden. Auf Basis dieser Information, wählen wir Bereiche der Bilder, die miteinander verglichen werden können und lassen den Horn-Schunck Algorithmus Bewegungen finden, die auf Hydrothermalquellen hindeuten können.

Die Ergebnisse werden dann segmentweise ausgewertet - je nach Gesamtstärke der Bewegungen innerhalb eines Segments, wird dieses unterschiedlich stark (oder auch gar nicht) markiert.

Gruppierung

Zum Schluss werden die Segmente gefärbt und transparent über das Originalbild gelegt.

Result

Auswertungsvideos Tiefsee

Schlechte Lichtverhältnisse

Dieses Video zeigt auf, wie unser Programm mit schlechten Lichtverhältnissen in der Tiefsee umgeht. Damit ist gemeint, dass die interessanten Gebiete nicht großzügig ausgeleuchtet sind. Trotzdem scheint unser Programm auch in diesen Gebieten eine gute Trefferquote zu haben.

Gute Lichtverhältnisse

In diesem Video sieht man mehrere Szenen mit fast perfekt ausgeleuchteten Schlieren. Wie man sieht, werden diese gut erkannt.

Video ohne Schlieren

Hier soll verdeutlicht werden, dass das Programm bei nicht zu starker Bewegung in Gebieten ohne Schlieren auch nichts, beziehungsweise nur herumschwebende Mikroorganismen oder Mineralien findet.

Auswertungsvideos Projekt

Es folgen interessante Videos, die zeigen, wie unser Algorithmus mit den gegebenen Materialien der anderen Teilgruppen umgegangen ist.

Experiment

Wie hier gut zu sehen ist, werden ‘Ground Truth’ Experiment-Schlieren von Beginn an gut erkannt.

Simulation

Bei diesem Simulationsvideo mit Rasterhintergrund, sieht man, dass die simulierten Schliereneffekte an den Linien gut erkannt wurden.

Hier sieht man, dass die simulierten Schliereneffekte durch den Tiefseehintergrund gut erkannt wurden. Allerdings fällt auch auf, dass wie auch bei normalen Tiefseeaufnahmen, das Meer Störfaktoren hervorruft.

Schwierigkeiten in der Tiefsee

Bei der Bildverarbeitung von Aufnahmen in der Tiefsee treten gewisse Probleme auf:

  • Generell dunkle Aufnahmen, insbesondere der Hintergrund
  • Schattenbildung am Meeresgrund, durch die am ROV angebrachten Lichtquellen
  • Unerwünschte Veränderungen in Bilderfolgen, aufgrund der Eigenbewegung des ROVs, sowie der Kamerabewegung und Zoom
  • Im Wasser herumschwimmende Partikel und Bakterien sorgen für zusätzliche Bewegung im Bild

Diese haben auch für unseren Algorithmus das Erkennen von Schlieren erschwert. Außerdem ist uns aufgefallen, dass Schlieren, die sich in Gebieten befanden, wo nur das Meer im Hintergrund zu sehen war, kaum erkannt worden. Eine mögliche Lösung hierfür wird im folgenden Abschnitt erläutert.

Um unsere Probleme mit der generellen Dunkelheit zu minimieren, haben wir eine Funktion benutzt, die den Kontrast auf adaptive Weise erhöht. So konnten wir die Effektivität von beinahe allen bildverarbeitenden Funktionen, die wir bis dahin verwendet hatten, erheblich verbessern.

Die Schattenbildung lässt sich durch Bildbearbeitung nur schwer bis gar nicht zu einem akzeptablen Maße verringern. Diesbezüglich werden im folgenden Abschnitt mögliche Lösungen vorgestellt.

Bezüglich der Eigenbewegung des ROVs und der Kamera haben wir eine Funktion benutzt, die diese grob herausrechnen soll. Außerdem haben wir einen Schwellwert eingebunden, wodurch im besten Fall nur noch die Regionen mit Schlieren im Algorithmus berücksichtigt werden.

Um Fehler zu entfernen, die bei zu starker Bewegung auftreten, verglichen wir zwei Folgeergebnisse auf gleiche Ergebnisregionen. Leider funktionierte dies nicht so gut wie gewünscht. Diese Fehler entstanden hauptsächlich, wenn sich die Perspektive zwischen den Bildern geändert hat und wenn gezoomt wurde.

Optimierungsvorschläge

Im letzten Abschnitt haben wir darüber gesprochen, was für Probleme entstehen können, wenn man versucht gute Tiefseeaufnahmen zu machen.

Hier wollen wir Lösungsansätze liefern, welche diese Probleme präventiv verhindern, beziehungsweise minimieren könnten.

  • Um genannte Schattenstörfaktoren zu verhindern oder sie sich zu Nutze zu machen, könnte man ein LED-Ringlicht um die Kamera positionieren. Somit würden die Schatten hauptsächlich hinter dem Schlierenobjekt geworfen werden. Das könnte dazu führen, dass die Wahrscheinlichkeit für die Schlierenregionen, von unserem Algorithmus gefunden zu werden, steigt.
  • Wir haben herausgefunden, dass ein statischer Hintergrund am besten funktioniert, um die Schlieren mit unserem Algorithmus zu erkennen. Deshalb könnte es die Ergebnisse weiter verbessern, wenn man eher von schräg oben filmt. So wäre die Wahrscheinlichkeit höher, Meeresbodenstrukturen hinter den Schlierenobjekten zu haben.

Graphische Oberfläche

Um die Verwendung unserer Detektionssoftware einfach zu gestalten, gibt es eine Graphische Benutzeroberfläche (GUI).

Screenshot der Graphischen Benutzeroberfläche

Mit dieser kann man einfach den Input einer Kamera oder von beliebig vielen Videodateien auswerten lassen. Bei einer Kamera wird live berechnet - allerdings nur so viele Bilder wie die Software in der Zeit schafft. Die Ergebnisse bei Videodateien sind entsprechend genauer.

Handbuch

Um den Einstieg in die Nutzung der GUI zu erleichtern, haben wir ein Handbuch erstellt, welches die grundlegenden Funktionalitäten der GUI erklärt.

Screenshot des Handbuchs

Es enthält außerdem einen Installationsguide für Linux und System-Anforderungen und Empfehlungen.

Handbuch herunterladen (Englisch)