OpenStreetMap

Georeferenzierte Bilder aus Videos extrahieren – Low-Cost VIS

Posted by Nakaner on 12 December 2015 in German (Deutsch)

Videoaufname-Ausrüstung in einem Talent 2

Zur Erfassung von Eisenbahndaten (insbesondere Signale) haben sich in den vergangenen zwei Jahren selbst aufgenommene Videos als eine sehr gute Quelle herausgestellt. Man fährt die Strecke zwei- bis dreimal ab und kann dann daheim in aller Ruhe das Video auswerten. Somit kann man mit einer Reise kreuz und quer durch Deutschland in kurzer Zeit viele Daten erfassen. (Erfahrungsgemäß braucht man für 5 km 1 Stunde Arbeitszeit zum Auswerten, in Bahnhöfen mit vielen Gleisen und Signalen entsprechend länger)

Auf elektrifizierten Strecken erfolgt die Georeferenzierung anhand der Oberleitungsmasten. Man sieht sie markant im Video und ihren Schattenwurf auf den Bing-Bildern. Dabei zählt man die Oberleitungsmasten ab einem markanten Punkt (z.B. Bahnübergang, Brücken oder andere markante Objekte neben der Strecke). Zwischen zwei Masten wird interpoliert oder – bei Signalen mit hoher Bauhöhe – ist der Schattenwurf des Signalmastens auf dem Luftbild sichtbar.

Auf nicht elektrifizierten Strecken und Strecken, deren Oberleitungsmasten auf den Bing-Luftbildern verschattet sind, gibt es keine leichte Möglichkeit aus den Bildern Positionen abzuleiten. Hier muss man sich mit der Vegetation neben der Strecke und den Schattenwürfen der Signale behelfe. Kleine Signaltafeln neben der Strecke sieht man aber nicht auf Bing (ausgenommen Bilder mit 15 cm Auflösung).

Wenn man während des Filmens einen GPS-Track aufnimmt, kann man einzelne Frames (je nach Geschwindigkeit alle ein bis drei Sekunden) extrahieren und diese mit dem GPS-Track georeferenzieren. Zur Extraktion der Frames habe ich folgenden ffmpeg-Befehl verwendet:

ffmpeg -i km144.4--Abzw-Ribbeck--Rathenow--km228.4.mts -vf yadif,fps=1 -qscale:v 2 extracted_frames/img_%05d.jpg

Der obige Befehl extrahiert ein Frame pro Sekunde und schreibt es als img_00001.jpg in das Verzeichnis extracted_frames/ (bei den weiteren Dateien wird nur die Nummer hochgezählt). Das verwendete Video wurde interlaced aufgenommen, also im Zeilensprungverfahren. Deshalb wird noch ein Deinterlace-Filter verwendet. Wer diesen nicht braucht, kann yadif, weglassen. -qscale:v 2 legt die JPEG-Kompressionsstufe fest, wir haben uns für die zweithöchste Qualitätsstufe entschieden, damit auch kleine Signalnummern noch entziffert werden können. Die resultierenden Frames sind dann etwa 350 kB und 1920x1080 Pixel groß (das ist vom Video bzw. der Kamera abhängig).

Die extrahierten Frames können in JOSM genutzt werden und/oder auf Mapillary hochgeladen werden.

Mapillary stellt zur Vorverarbeitung einige Skripte auf Github bereit. (Es wird Python 2.x verwendet)

  1. Mit python add_fix_dates.py extracted_frames/ '2015-08-23 14:05:01' 1 setze ich den Zeitstempel. 1 steht für ein Bild pro Sekunde.
  2. Mit python geotag_from_gpx.py extracted_frames/ my_gps_track.gpx 0 setze ich dann im EXIF die Position und die Blickrichtung. Letztere wird aus der Position des Bildes und des nächsten Bildes ermittelt.

Anschließend kann man die Bilder in JOSM laden (die Blickrichtung wird dort angezeigt!) oder auf Mapillary hochladen.

Ich habe auch den Video-Upload von Mapillary gestern Abend ausprobiert. Aber bis heute Mittag ist das Video nicht online, meine Fotos haben hingegen nur wenigen Minuten gebraucht, bis sie online waren.

Beim Blick nach hinten oder vorne genügt bei einer Fahrtgeschwindigkeit zwischen 160 km/h und 200 km/h (IC-Reisegeschwindigkeit auf Aus- und Neubaustrecken) eine Framerate von 1 Bild pro Sekunde. Bei 100 km/h genügen 0,5 Bilder pro Sekunde. Beim Blick nach schräg zur Seite heraus ist eine Framerate von 1 Bild pro Sekunde bei 120 km/h gerade noch so brauchbar.

Momentan verwendet meine Toolchain noch für das gesamte Video die gleiche Framerate. Wenn das Video jedoch von einem Bahnhof zum nächsten reicht, ist das ungeschickt, weil man in Bahnhofsnähe langsamer fährt.

Screenshot Foto zur Seite raus

Screenshot JOSM Foto nach hinten

In Anspielung auf das Video-Informations-System (VIS) von DB Netz nenne ich diesen Ablauf Low-Cost-VIS. Das VIS zeigt die Strecken von DB Netz aus der Lokführerperspektive. Die Bilder werden mit Messzügen alle paar Meter aufgenommen und sind georeferenziert. [1] Sie haben jedoch eine geringe Auflösung (deutlich niedriger als HD), was aber durch den geringeren Abstand der Bilder wieder aufgefangen wird. (Messzüge fahren 80 km/h) Würde man statt Smartphones oder Garmins genauere GNSS-Empfänger einsetzen, könnte man auch genauere Koordinaten erhalten. Eine Kombination aus GNSS-Empfänger und einer Consumer-Camcorder samt Akkupack könnte man auch unabhängig von Messzügen einsetzen und dann mit normalen Zügen über das Netz schicken.

[1] Siehe dazu auch "Der neue Lichtraummesszug LIMEZ III der Deutschen Bahn AG" von Holger Wirth, erschienen in der ZfV 3/2008.

Comment from imagico on 12 December 2015 at 15:46

Bei Messzügen gibt es übrigens wohl auch 'ne hochwertigere Variante:

http://www.mermec.com/diagnostics/tunnel-inspection-/82/1/t%E2%80%A2sight-5000.php

;-)

Für die Aufnahme in seitlicher Richtung ließe sich die Bildqualität durch eine lichtstärkere Optik und entsprechend kürzere Belichtungszeiten vermutlich steigern, die Frage ist dabei natürlich in wie fern das für die manuelle Auswertung überhaupt einen Gewinn bringen würde, d.h. ob sich das mehr an Informationen mit vertretbarem Aufwand auswerten ließe.

Login to leave a comment