Günstige IP-Kameras vom Discounter erkennen und melden zwar Bewegungen, doch die Fehlerrate fällt dabei recht hoch aus. Eine selbst entwickelte Bewegungserkennungssoftware für den RasPi beseitigt das Problem.
Zwischen Gemüse und Waschmitteln finden sich heute beim Discounter gelegentlich auch IP-Kameras mit Bewegungserkennung für weniger als 60 Euro. Sie funktionieren zwar bei Tag und Nacht und melden per E-Mail, doch zeigt die Erfahrung, dass die Kamerasoftware im Außenbereich Bewegungen nicht zuverlässig erkennt. Sonne und Schatten sowie der Wechsel zwischen Tag und Nacht verursachen zahlreiche Fehlmeldungen.
Als Alternative kommt der Raspberry Pi infrage: Mit den Kameras und entsprechender Software ausgestattet, mutiert er zum verlässlichen Überwachungssystem. Dabei laden eine oder mehrere Kameras die Bilder via FTP auf den RasPi hoch. Der verarbeitet die übertragenen Aufnahmen, prüft deren Abfolge auf Bewegungen hin und verschickt bei einem positiven Ergebnis eine E-Mail an zuvor konfigurierte Adressen, mit den fraglichen Bildern als Attachment.
Die Software läuft als Dienst im Hintergrund und lässt sich über Ini-Dateien konfigurieren. So können Sie die Parameter gegebenenfalls verändern, ohne die Anwendung neu starten zu müssen. Damit Unbefugte nicht die Passwörter für FTP- und Mailserver aus der Konfiguration auslesen können, gibt es die Möglichkeit, diese zu verschlüsseln.
Architektur
Da der Raspberry Pi nicht gerade zu den schnellsten Computern gehört, galt der Effizienz des Programms besonderes Augenmerk. Bevor die eigentliche Bildbearbeitung beginnt, lassen sich Masken über das Bild legen. Damit nehmen Sie Bildteile von der Erkennung aus, etwa eine viel befahrene Straße vor der Haustür oder den Zugang zum Nachbarhaus.
Zu diesem Zweck spezifizieren Sie in der Ini-Datei ein Schwarz-Weiß-Bild, das die Software mit jeder Aufnahme kombiniert und dabei schwarze Bereiche ignoriert. Solche Filter-Bilder erstellen Sie mit einem beliebigen Bildbearbeitungsprogramm, wobei das Format identisch zur Auflösung der Kamera sein muss.
Den Ablauf der Bildbearbeitung verdeutlicht das Flussdiagramm aus Abbildung 1. Die erste Stufe dient der groben Einschätzung, ob das aktuelle Bild sich vom vorherigen unterscheidet. Dazu ermittelt die Software einen Durchschnitt über alle Pixel des Bilds und vergleicht ihn mit dem Durchschnitt der vorhergehenden Aufnahme. Nur Bilder mit Unterschieden fließen in die weitere Analyse ein. Diese erste, relativ grobe Filterung steigert die Leistung des Programms maßgeblich.

Abbildung 1: Der Ablauf der Bewegungserkennung als Flussdiagramm. Für die Bildbearbeitung kommt Libvips zum Einsatz.
Die nächste Stufe der Bearbeitung kompensiert die Tatsache, dass die im Aufbau benutzte Kamera über einen Infrarot-Scheinwerfer verfügt, der sich bei Nacht automatisch einschaltet. Dadurch ergeben sich während der Dämmerungsphasen für aufeinanderfolgende Bilder oft sehr unterschiedliche Durchschnitte, weil das Kameralicht sich zwischen den Bildern ein- oder ausschaltet. Ein (im Code gesondert dokumentierter) Filter vermeidet hier unnötige Fehlmeldungen.
Das System nutzt die letzten 10 Bilder (diese Anzahl können Sie anpassen), um ein verbundenes Maskenbild für die weitere Bearbeitung zu kreieren. Dazu konvertiert es die zur Analyse herangezogenen Aufnahmen einzeln in ein Schwarz-Weiß-Bild. Danach entfernt es mit einem Gauß-Blur-Filter das Rauschen. Danach betont es die Schwarz-Weiß-Kanten (“Edges”) mit einem Faltungsfilter (“Convolution-Filter”). Im vorletzten Schritt konvertiert die Software dann die Bilder von einer Grau-Skala zu reinem Schwarz-Weiß und invertiert sie. Für das verbundene Maskenbild (“Composite image”) führt das System dann letztlich alle verarbeiteten Bilder zusammen (Abbildung 2).

Abbildung 2: Beispiel eines verbundenen Maskenbilds. Hier sehen Sie in der oberen rechten Ecke die Auswirkung des Filter-Bilds.
Zur Bewegungserkennung greift die Software wieder auf die letzten 10 Bilder zurück, die es dazu ähnlich wie das Maskenbild nach Schwarz-Weiß konvertiert und mit einem Faltungsfilter bearbeitet, um die Schwarz-Weiß-Übergänge zu betonen. Das Ergebnis speichert das System dann als Bewegungsbild ab, um es gegebenenfalls per E-Mail verschicken zu können. Die eigentliche Bewegungserkennung erfolgt dann über einen Vergleich mit dem verbundenen Maskenbild (im Code: vips::VImage::ifthenelse()), um Bewegungen zu entdecken. Ein Gauß-Blur-Filter entfernt aus dem daraus entstandenen Bild wieder das Rauschen.
Den errechneten Beleuchtungsdurchschnitt vergleicht die Software anschließend mit einem in der Ini-Datei festgelegten Schwellwert. Übersteigt der Durchschnitt diese Schwelle, wertet das System die Veränderung als Bewegung (Abbildung 3) und bereitet den Versand einer E-Mail vor. Die dazu nötigen Daten (E-Mail-Adresse, SMTP-Zugangsdaten) holt sich das Programm aus der Ini-Datei. Die E-Mail erhält folgende Attachments:
- das Bewegungsbild, anhand dessen Sie erkennen, wo im Bild die Bewegung stattgefunden hat,
- mehrere Bilder vor und nach der Bewegungserkennung, deren Anzahl (Voreinstellung *5) Sie in der Ini-Datei vorgeben, sowie
- optional das Maskenbild.

Abbildung 3: Hier hat das Überwachungsprogramm eine Bewegung erkannt, das Bewegungsbild erscheint in Schwarz-Weiß.
Das System kommt dabei mit mehr als einer Kamera zurecht, in der Praxis beim Autor etwa mit zwei verbundenen Kameras. Die Bewegungserkennung erfolgt für jede davon in einem eigenen Thread. Ein Haupt-Thread überwacht dabei die jeweiligen Threads und meldet Probleme via E-Mail.
Die Ini-Datei
Als Anwender konfigurieren Sie das Programm über die Ini-Datei, in der Sie die Spezifika für die individuelle Installation eintragen. Diese Textdatei bearbeiten Sie mit einem beliebigen Editor. Die Beispieldatei auf der Heft-DVD listet alle Einstellungsmöglichkeiten auf. Die Abschnitte der Ini-Datei und die wichtigsten Settings fasst die Tabelle “Ini-Datei: Sektionen und Einstellungen” zusammen.
Bei allen Einträgen kommt es auf die Groß- und Kleinschreibung an: QWERT ist also nicht dasselbe wie qwert. In mehreren Fällen gibt es Standardeinstellungen, die Sie unverändert übernehmen können. Kritische Einträge (etwa Benutzer- und Anmeldedetails sowie Passwörter) verschlüsseln Sie bei Bedarf mithilfe des beigefügten Programms passwordCrypto (siehe Kasten “Verschlüsselung”).






