Hallo wach!

Bewegungen erkennen mit Motion

Überfällt eine bis an die Zähne bewaffnete Bande das feudale Anwesen eines Linux-Benutzers, um diesen auszuplündern, kann auch die freie Software Motion [1] von Jeroen Vreeken und Kenneth Jahn Lavrsen wenig tun. Sie hilft Ihnen aber, die eigenen Geschäfts- und Privaträume im Blick zu behalten, während Sie zu Hause friedlich schlafen, und ersetzt die Installation einer kostspieligen Alarmanlage. Motion nimmt nur dann Fotos und Videos auf, wenn auch wirklich etwas passiert. Auf Wunsch sendet der angeschlossene Rechner dann auch gleich eine E-Mail oder SMS, die das Foto- und Videomaterial enthält und Ihnen im Falle eines Einbruchs als Beweismittel dient.

Motion lässt sich lokal installieren, aber auch über eine Web-Oberfläche fernsteuern (Abbildung 1). Wahlweise behält die Software auch gleich mehrere Kameras im Blick.

Abbildung 1

Abbildung 1: Lassen Sie Motion auf einem entfernten Server laufen, können Sie der Kamera über eine Weboberfläche Befehle erteilen.

Erste Schritte

Die Installation verläuft unter Ubuntu recht unspektakulär: "Feisty Fawn" und "Edgy Edge" bringen Version 3.2.3 der Software als Teil des Universe-Repositories mit. Zusätzlich müssen Sie die Pakete Ffmpeg und Nasm einspielen. Benutzern von Ubuntu "Edgy" und "Dapper", Debian "Sid" und Fedora Core 4 stehen zudem Pakete mit der neueste Version 3.2.7 von Motion auf unserer Heft-DVD zur Verfügung. Anwender mit Ubuntu "Feisty" kompilieren den Quellcode – falls sie die neueste Version wünschen. Vertreter der Suse-Fraktion (Suse Linux 10.1 und Open Suse 10.2) kompilieren Motion auf jeden Fall selbst, wie es der Kasten "Motion aus dem Quellcode" beschreibt.

Motion aus dem Quellcode

Nutzer von Suse 10.1 binden über YaST das Repository von Packman [2] als zusätzliche Paketquelle ein (Software | Installationsquelle wechseln) und installieren ffmpeg, libffmpeg0-devel, nasm, libjpeg, libjpeg-devel, mysql, mysql-devel, postgresql, postgresql-devel sowie checkinstall. Zum Übersetzen des Quellcodes brauchen Sie auch die Build-Umgebung: Rufen Sie in YaST den Punkt Software | Software installieren oder löschen auf und wählen Sie im Dropdownmenü neben Filter den Eintrag Selektionen. Dann setzen Sie ein Häkchen neben C/C++ Compiler und Werkzeuge und klicken auf Übernehmen.

Zunächst entpacken Sie nun auf der Konsole das Quellcode-Archiv von Motion, wechseln in das neue Unterverzeichnis und geben ./configure ein, um die Quellen zu konfigurieren. Fehlt kein wichtiges Paket, bestätigt das am Ende eine Erfolgsmeldung, die neben allen Abhängigkeiten YES ausgibt. Geben Sie make ein, um den Quellcode zu übersetzen. Abschließend bauen Sie mit Root-Rechten über die Eingabe des Befehls checkinstall gleich ein RPM-Paket. Bestätigen Sie alle Fragen von Checkinstall mit [Eingabe].

Das fertige Paket installieren Sie – noch immer als root – über rpm -Uhv /usr/src/packages/RPMS/i386/motion-3.2.7-1.i386.rpm. Anschließend kopieren Sie die Konfigurationsdatei /usr/local/etc/motion-dist.conf nach /usr/local/etc/motion.conf und bearbeiten sie, wie im Text besprochen. Zum Beispiel legen Sie über target_dir fest, in welchem Verzeichnis Fotos und Videos landen. Nach dem Start sehen Sie das Bild der Webcam im Browser über http://127.0.0.1:8081 (Abbildung 2). Die Kamera nimmt standardmäßig zugleich einen Film auf und schießt Fotos.

Abbildung 2

Abbildung 2: Das Bild der Kamera erscheint auch im Browser. Dafür müssen Sie allerdings in der Datei "motion.conf" den richtigen Port angeben.

Unter Open Suse 10.2 gehen Sie nach dem gleichen Schema vor – mit kleinen Abweichungen. Das Paket nasm brauchen Sie nicht und die Build-Tools installieren Sie, indem Sie in YaST Schemata | Grundlegende Entwicklung auswählen. Über Packman installieren Sie wieder Ffmpeg und Co., wobei sich YaST allerdings beschwert, dass es eine Abhängigkeit nicht auflösen kann: Das ignorieren Sie in diesem Fall ausnahmsweise.

Kamera läuft

Um Motion Detection zu nutzen, brauchen Sie natürlich zunächst eine Kamera – zum Beispiel eine Webcam. Motion selbst bringt keine Treiber für eine solche Kamera mit, Sie müssen diese also selbst installieren [3]. Ubuntu-Nutzer spielen im Regelfall die Pakete spca5xx-source oder gspca-source über Synaptic oder Adept ein, für Suse-Nutzer gibt es fertige RPM-Pakete [4]. Die müssen jeweils zu Ihrer Kernel-Version passen. Über uname -r erfahren Sie, welchen Kernel Sie verwenden.

Zunächst konfigurieren Sie aber die Software, sonst finden Sie womöglich die erzeugten Bilder oder Filme nicht. Haben Sie Motion selbst kompiliert, liegt die Konfigurationsdatei unter /usr/local/etc/motion.conf. Ubuntu-Anwender finden sie unter /etc/motion/motion.conf. In dieser Datei lagern alle wichtigen Angaben zur Steuerung der Kamera.

Öffnen Sie die Konfigurationsdatei mit einem Texteditor und suchen Sie den Eintrag target_dir. Fehlt der Eintrag, ergänzen Sie ihn. Direkt dahinter – getrennt durch ein Leerzeichen – tragen Sie den absoluten Pfad zu dem Ordner ein, in dem Motion Fotos und Videos ablegen soll, etwa /home/User/motion. Existiert der Ordner nicht, legen Sie ihn an. Dann suchen Sie nach dem Schlüsselwort webcam_port und schreiben eine als Portnummer die 8081 dahiner. Andernfalls zeigt der Browser später nicht das Kamerabild an. Nun stellt sich noch die Frage, wie viele Frames pro Sekunde die Kamera aufnimmt: Geben Sie framerate 25 ein, schießt die Kamera 25 Bilder pro Sekunde, was dem PAL-Standard entspricht. Die Option videodevice muss den richtigen Pfad zu Ihrer Videoschnittstelle enthalten, den xawtv -hwscan verrät – meist lautet der Gerätename /dev/video0.

Nun kann es losgehen: Speichern Sie die Änderungen, richten Sie die Kamera auf ein unbewegtes Motiv, öffnen Sie eine Konsole und geben Sie motion -n ein, um die Software als Dienst zu starten. Motion spuckt nun ein paar Zeilen aus, die letzte lautet: Started stream webcam server in port 8081 – mehr geschieht nicht. Kein Wunder: Solange sich nichts bewegt, bleibt Motion passiv – im Normalfall. Zeichnet die Software trotz eines statischen Motivs ständig Bilder auf, lesen Sie den Abschnitt "Bildstörungen maskieren" weiter unten.

Bilderzeugung

Rufen Sie nun im Browser die Adresse http://127.0.0.1:8081 auf, dann erscheint das von Ihre Webcam aufgezeichnete Bild (Abbildung 2). Halten Sie einmal kurz die Hand vor die Linse, dann schreibt Motion etwas auf die Konsole (Abbildung 3) – die Software zeichnet Bilder oder Filme auf.

Falls Sie die Ubuntu-Pakete aus dem Repository nutzen, dann nimmt Motion zunächst ausschließlich Bilder auf. In diesem Fall schreiben Sie die Option ffmpeg_cap_new on in die Datei motion.conf. Haben Sie Motion selbst übersetzt, erzeugt das Programm nicht nur Bilder, sondern schreibt die Daten auch zugleich in eine AVI-Datei und erzeugt einen Film – wahlweise im MPEG4- oder MSMPEG4-Format. Welches davon Sie bevorzugen, geben Sie über die Option ffmpeg_video_codec an. Das MSMPEG4-Format spielt auch Microsofts eingebauter Player ohne Extra-Codecs ab. Über [Strg]+[C] beenden Sie Motion wieder.

Abbildung 3

Abbildung 3: Wedeln Sie mit der Hand vor der Kameralinse, sollte Motion Bewegungen registrieren und das auf der Konsole melden.

Bildstörungen maskieren

Im Test begann Motion unter Ubuntu sofort nach dem Start den Zielordner wahllos mit Bildern zu füllen, obwohl sich das Motiv nicht vom Fleck rührte. Schuld daran waren Artefakte im Bild, die vermutlich der Webcam-Treiber erzeugte. So etwas kommt schon mal vor – insbesondere, wenn Sie eine Low-Budget-Kamera einsetzen. Auch ohne solche Artefakte stößt Motion mitunter auf Probleme: etwa, wenn Bäume und Autos den ruhigen Blick auf die Natur versperren. Damit Motion nicht jedes Mal sinnlos Alarm schlägt, maskieren Sie das Bild: Sie geben nur einen Ausschnitt an, in dem die Software nach Bewegungen sucht, zum Beispiel einen Türrahmen.

Dazu fertigen Sie mit Gimp ein Schwarz-Weiß-Bild im PGM-Format an (Abbildung 4). Die Fläche, die Motion beobachten soll, gestalten Sie in weißer Farbe, den zu ignorierenden Teil färben Sie schwarz. Wie groß das Bild sein muss, erfahren Sie, indem Sie in der Konfigurationsdatei nach den Parametern width und height suchen, die die Länge und Breite des Kamerabildes festlegen. Über den Menüpunkt Bild | Bild skalieren schrumpfen Sie das Schwarz-Weiß-Portrait auf die richtige Größe. Dann legen Sie das Bild zum Beispiel unter /home/User/motion_bild/ ab und tragen den vollständigen Pfad inklusive Bildnamen hinter der Option mask_file in die Datei motion.conf. Nach einem Neustart sucht Motion nur noch in bestimmten Ausschnitten nach bewegten Elementen.

Noch etwas ausgefeilter arbeiten Sie mit dem Schalter smart_mask_speed, dem ein Wert zwischen 1 und 10 folgt. Dabei handelt es sich um eine selbstlernende Maske, die automatisch Bereiche von der Beobachtung ausnimmt, die sich ständig bewegen, etwa Bäume oder Büsche bei starkem Wind. Tut sich eine Zeit lang in diesem Bereich nichts mehr, erhöht Motion die Empfindlichkeit wieder. Der Parameter eignet sich besonders für langfristige Überwachungsprojekte mit beweglichen und sich verändernden Motiven, wobei aber auch die Fehlalarme zunehmen. Alternativ müssen Sie die Maske regelmäßig anpassen.

Abbildung 4

Abbildung 4: Dieses Schwarzweiß-Bild im PGM-Format erstellen Sie mit Gimp. Dank der Maske registriert Motion nur Bewegungen in den weißen Bereichen.

Optionen en masse

Die sehr ausführliche Dokumentation im Wiki [5] von Kenneth Jahn Lavrsen erklärt recht detailliert und verständlich, was die zahllosen Optionen in der Konfigurationsdatei von Motion bewirken. Er versucht die Parameter im Abschnitt "Basic Features" [6] möglichst logisch zu gliedern und thematisch aufzuteilen. Dort finden Sie weiterführende Hilfe, wenn Sie mehr Features benötigen, als dieser Artikel beschreiben kann.

Unter der Überschrift "Image File Output" versammelt Lavrsen etwa Optionen mit Einfluss auf die Bildausgabe. Zu jedem Schalter gibt es eine Angabe dazu, welchen Wert er annehmen kann, wie der Standardwert lautet und dann folgt noch eine kurze, englischsprachige Erklärung, was der Parameter tut. So sorgt output_motion dafür, dass Motion eine spezielle Art von Grauton-Film erzeugt, der nur die Pixel anzeigt, die sich verändern. Es handelt sich um einen Boolschen Wert: Sie können als Argumente also nur on oder off verwenden, gewöhnlich steht dort off. Die nächste Option in diesem Bereich heißt output_normal. Einmal aktiviert, nimmt sie ein gewöhnliches JPEG-Bild auf, sobald etwas passiert (Abbildung 5). Die Option quality enthält einen Integer-Wert zwischen 1 und 100 und legt fest, in welcher Qualität Motion das Bild aufzeichnet.

Abbildung 5

Abbildung 5: Dank der Option output_normal on zeichnet Motion eine Serie von Bildern auf, sobald es Bewegungen entdeckt.

Videoeinstellungen

Wollen Sie die Bildqualität der angeschlossenen Kamera verbessern, hilft sicher der Abschnitt "Video4linux (V4L) devices" weiter. Hier regeln Sie die Helligkeit, die schon erwähnte framerate, den Kontrast und die Größe des Bildes. Manche Optionen gelten nur, wenn Sie statt einer USB-Kamera eine Videokarte einsetzen und über diese das Kamerasignal empfangen. Über norm stellen Sie ein, welche Fernsehnorm Motion verwendet. Die 0 ist der Standard und bezeichnet PAL. Eine interessante Option heißt rotate: Sie akzeptiert die Werte 0, 90, 180, 270 und dreht die Bilder nach der Aufnahme im entsprechenden Winkel.

Neben einer lokalen Videokamera erkennt Motion auch Bewegungen auf Kamerabildern, die es über das Internet empfängt. Für Experimente nutzen Sie zum Beispiel den herrlichen Ausblick auf eine Straßenkreuzung (Abbildung 6) in Schottland [7]. Die passenden Optionen versammelt der Abschnitt "Network Cameras". Voraussetzung ist, dass die Kamera auf der Webseite JPEGs oder einen rohen MJPEG-Stream anzeigt und diese nicht in eine HTML-Seite einbettet. Der Suchstring live view axis fördert bei Google übrigens viele solcher Kameras zu Tage. Sie klicken auf das Kamerabild, wählen View Image aus dem Kontextmenü und kopieren die URL. Die geben Sie dann in der Datei motion.conf hinter dem Parameter netcam_url an und kommentieren die Option videodevice aus.

Abbildung 6

Abbildung 6: Motion erkennt Bewegungen auch auf Bildern externer Webcams aus dem Internet – hier auf einer Kreuzung im schottischen Kilmarnock.

Bewegungsmelder

In punkto Feintuning interessieren vor allem die Parameter, die das Wiki unter "Motion Detection Settings" versammelt. Der Option despeckle übergeben Sie zum Beispiel verschiedene Parameter, die das Rauschen auf dem Bild verringern, was das Erkennen von Bewegungen erleichtert. So entfernen e und E so genannte Diamanten respektive Quadrate aus dem Bild, die Kombination eE filtert Kreise. Welche Buchstaben was bewirken und wie sie sich kombinieren lassen, bespricht neben dem obigen Wiki auch ausführlich eine externe Webseite [8]. Als guter Standardwert gilt EedDl.

Die Option gap nimmt einen Wert in Sekunden entgegen (Standard 60). Zeichnet die Kamera 60 Sekunden keine Bewegung auf, beginnt ein neues Ereignis (Event). Motion legt eine neue MPEG4-Datei an. Definieren Sie die Lücken allerdings zu groß, gibt es Probleme beim Umwandeln der fertigen Szenen in einen kompletten Film, was diesen unter Umständen zerstört. Motion begrenzt die Höchstlänge eines Films daher auf eine Stunde, der Schalter heißt max_mpeg_time 3600.

Über die Option minimum_motion_frames bestimmen Sie, wie viele Frames sich verändern dürfen, bevor Motion eine Bewegung erkennt. Die Empfehlung liegt bei einem Wert zwischen fünf und zehn Frames.

Rauschen und Schatten

Die Optionen noise_level und noise_tune widmen sich der Rauschempfindlichkeit. Nutzen Sie eine Billigkamera mit sehr verrauschtem Bild, müssen Sie die Werte so anpassen, dass die Software nicht bei jeder Störung gleich ein Bild schießt. Setzen Sie noise_tune ein, ignoriert Motion automatisch die Einstellung von noise_level. Das gilt entsprechend auch für threshold (Schwelle) und threshold_tune. Die letzte Option sticht die erste aus. Laut Wiki handelt es sich dabei um die wichtigsten Optionen zur Bewegungserkennung, da sie erst nach dem Maskieren, dem Filtern von Rauschen und dem Despeckle-Prozess einsetzen.

Für besonders dunkle Orte gibt es die Option night_compensate. Sobald sich das Motiv der Kamera verdunkelt, erzeugt diese mehr Artefakte und Rauschen. Schalten Sie diese gewöhnlich deaktivierte Option ein, senkt das die Rauschempfindlichkeit der Software. Allerdings erhöhen sich auch die Fehlalarme.

Nach Hause telefonieren

Auf Wunsch und mit den richtigen Parametern konfiguriert, sendet Motion während eines Vorfalles eine E-Mail oder SMS. Verschiedene Events lösen diese Reaktion aus, die Schalter erläutert die Sektion "External Commands" im Wiki. Schreiben Sie in die Datei motion.conf die Zeile on_event_start send_mail "%Y-%m-%d %T", führt Motion das Skript send_mail aus, sobald die Kamera ein Ereignis registriert. Ein Beispielskript, mit dem Sie E-Mails versenden, finden Sie ebenfalls im Wiki.

Fazit

Motion ist ein gelungenes und faszinierendes Stück Software, das sich mit einer lokalen Webcam, einer gewöhnlichen Kamera oder einem Webcam-Stream aus dem Internet nutzen lässt. Eine grafische Oberfläche fehlt allerdings bislang. Falls Sie ein Objekt längere Zeit überwachen wollen, sollten Sie ein wenig mit den Einstellungen experimentieren und sich mit den Filtern und Bewegungsoptionen beschäftigen.

Motion eignet sich aber auch für kleine Experimentalfilme: Über die Option ffmpeg_timelapse generieren Sie einen Film, der in bestimmten Intervallen Bilder aufnimmt und erhalten so Zeitrafferaufnahmen von ziehenden Wolken, sich leerenden Parkplätzen oder Sonnenuntergängen.

Glossar

PAL

Phase Alternating Line, in Europa verbreitete Fernsehnorm mit 625 Linien, 25 Bildern pro Sekunde und einer Halbbildfrequenz von 50 Hz.

Infos

[1] Motion-Webseite: http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome

[2] Packman-Repository: ftp://packman.iu-bremen.de/suse/suse10.1

[3] Webcam konfigurieren: Marcel Hilzinger, "Bitte lächeln!", LinuxUser 07/2007, S. 40, http://www.linux-user.de/ausgabe/2007/07/040-voip-headsets/index.html

[4] RPM-Pakete von Spca5xx und Gspca für Suse: http://home.scarlet.be/raoul.linux/rpm/webcam.html

[5] Motion-Wiki: http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome

[6] Basisdokumentation von Motion: http://www.lavrsen.dk/twiki/bin/view/Motion/MotionGuideBasicFeatures

[7] Webcam von Kilmarnock: http://cam1.east-ayrshire.gov.uk/mjpg/video.mjpg

[8] Despeckle-Effekt im Detail: http://emit.demon.co.uk/motion/

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare