Raspberry Video Camera – Teil 4: Aufnahmeauslöser

Jede Videokamera braucht einen Auslöser um die Aufnahme zu starten. Bei einer Kamera, die ein Mensch in Händen hält, ist das einfach ein Knopf am Gerät. Bei einer fest installierten Kamera wird ein Mechanismus benötigt, der der Kamera sagt, wann die Videoaufzeichnung beginnen und wann sie enden soll. In Theorie sind hier viele Möglichkeiten denkbar, aber im Einzelfall gilt es abzuwägen, was für den jeweiligen Einsatz die beste Lösung darstellt. Dass diese Überlegung durchaus nicht trivial ist, zeigt sich gut anhand der Oachkatzl Video Cam, denn hier soll ein kleines schnelles Tier vor einem manchmal bewegtem Hintergrund erkannt und gefilmt werden. Automatisch versteht sich.


Und dann erkennt die Oachkatzl Cam nicht nur Eichhörnchen. Bei diesem Kameraden ist das aber keinesfalls von Nachteil. Mehr Videos gibts in meinem YouTube-Kanal.

Umfeld und Anforderungen

Im Video sieht man gut, wie das Umfeld aussieht. Da gibt es eine Stange, auf der Eichhörnchen gerne vorbei laufen. Mit einem Futterangebot lassen sie sich gerne an eine bestimmte Stelle locken, was die Erkennung schon mal vereinfacht. Dass die Nüsse auch andere Feinschmecker anziehen, wie diese Krähe, nehmen wir mal billigend in Kauf, der Fokus liegt aber auf Eichhörnchen. Davon gibt es in Mitteleuropa rotbraune und dunkelbraune Exemplare, was eine Erkennung nach Farben etwas erschwert. Den Hintergrund bietet eine mächtige Kiefer, dort herrschen grüne und braune Farbtöne vor. Die Äste der Kiefer sind allerdings nicht statisch, bei Wind bewegen die sich ordentlich, was Bewegungssensoren leicht irritieren kann.

Der Wunsch wäre nun, dass die Auslösung des Videos dann erfolgt, wenn ein Eichhörnchen die Szenerie betritt. Am besten wäre es, wenn das Video bereits einige Sekunden vor diesem Zeitpunkt startet. Die Aufnahme muss weiterlaufen, so lange sich das Tier im Blickfeld befindet, auch wenn es sich längere Zeit nicht bewegen sollte. Und wenn es den Schauplatz verlässt, soll die Aufnahme beendet werden. Fehlauslösungen – also Aufnahmen auf denen gar kein Eichhörnchen zu sehen ist – sollen natürlich möglichst vermieden werden, weil sie den Aufwand für die Sichtung der Aufnahmen hochtreiben. Und schließlich sollen durch die Auslösung nicht nur eine, sondern auch zwei oder mehr Kameras gesteuert werden können.

Zeitsteuerung

Wenn man denn wüsste, wann das Eichhörnchen kommt, dann könnte man die Kamera einfach zeitgesteuert laufen lassen und bräuchte nicht 24 Stunden lang Videos aufzeichnen (die eh niemand sichten kann). Und in der Tat, nach meinen Beobachtungen kann ich sagen:

  • Das Münchner Stadt-Eichhörnchen ist tagaktiv,
  • es hält keinen Winterschlaf und
  • es kommt gerne zur Morgendämmerung.

Aber halt nicht ausschließlich, bis Mittag kann schon mal was los sein am Futterschälchen.

Vorteile

Ein sehr einfaches und billiges Verfahren, den Sonnenaufgang könnte man berechnen und dann mit der Kamera einfach mal draufhalten.

Nachteile

Die Trefferquote ist gering. Das Verfahren ist besser, als sich selber mit der Kamera ans Fenster zu stellen und zu warten, aber die Auswertung der sehr langen Videos ist zeitaufwendig und der Speicherbedarf erheblich.

Lichtschranke

Ein möglicher Sensor wäre eine Lichtschranke: Tier unterbricht Lichtschranke = Video startet, Tier verlässt Lichtschranke = Video wird beendet. Wobei es ein kleines Zeitfenster geben muss, damit die Aufnahme weiter läuft, wenn das Eichhörnchen die Lichtschranke nur kurz freigibt, bei einem Sprung zum Beispiel. Möglich wäre es durchaus, auf der Stange einen Lichtgeber und einen Lichtempfänger aufzusetzen. Der Lichtstrahl müsste dann einige Zentimeter über der Stange laufen, damit Nüsse im Futterschälchen nicht bereits die Lichtschranke unterbrechen. Sender und Empfänger müssen so weit von einander entfernt sein, dass sie möglichst nicht im Bild zu sehen sind. Am besten jeweils ganz am Ende der Stange, dann müssen die Eichhörnchen auch nicht über die Geräte springen.

Vorteile

Vermutlich wäre eine Lichtschranke ein sehr zuverlässiger Trigger für die Videokamera. Jedes Tier, das sich auf die Stange begibt, löst die Kamera aus, kurze Unterbrechungen lassen sich softwareseitig in den Griff bekommen.

Nachteile

Die Stange ist 5m lang, eine Lichtschranke über diese Distanz wird nicht ganz billig. Damit kein Sonnenlicht die Lichtschranke beeinflusst, muss das Licht moduliert werden, so dass der Empfänger weiß, dass das Licht auch von seinem eigenen Sensor kommt. Es fällt zusätzlicher Verkabelungsaufwand an, von der Kamera zum Lichtsender und zum Empfänger. Alternativ könnte auch über Umlenkspiegel gearbeitet werden, was die Kabellängen verkürzt, die Lichtentfernung jedoch verlängert und den Aufwand weiter erhöht. Sender und Empfänger müssen darüber hinaus natürlich wasserdicht sein und das abgestrahlte Licht darf nicht im sichtbaren Bereich liegen, sonst bekommen die Eichhörnchen im Video einen Lichtpunkt aufs Fell projiziert.

Bewegungssensor

Bewegungssensoren werden heute häufig als berührungslose Lichtschalter eingesetzt. Im Garten, im Bereich vor der Haustüre oder im Bad zum Beispiel. Die Logik ist einfach: Eine Bewegung im Erfassungsbereich des Sensors schaltet das Licht ein. Wird keine Bewegung mehr erkannt, so geht das Licht nach einer gewissen Zeit automatisch wieder aus. Diese Sensoren arbeiten dabei passiv mit Infrarotlicht, deshalb werden sie PIR-Sensoren (Passive InfraRed) genannt. Passiv bedeutet, dass der Sensor kein Infrarotlicht abstrahlt, sondern nur das aus der Umgebung empfängt. Die Herausforderung ist es dann, den Sensor so einzustellen, dass ein Mensch das Außenlicht einschaltet, aber nicht jede streunende Katze, PIR-Sensoren gibt es als Bauelemente für kleines Geld als billigen Chinaimport und sie sind für Experimente im Raspberry Pi Umfeld sehr beliebt.

Vorteile

Klein, billig, einfache Realisierung ohne zusätzliche externe Verkabelung. Nur drei Drähte zum Raspberry Pi und die Nachlaufzeit eines Videos muss nicht programmiert werden, sie kann am PIR-Sensor direkt eingestellt werden. Ein PIR-Sensor hat einen Erfassungsbereich bis 7m und ist sehr empfindlich, wobei die Empfindlichkeit eingestellt werden kann.

Nachteile

Es wird eine zusätzliche Bohrung im Gehäuse erforderlich, die wieder abgedichtet werden muss. Die Bezeichnung Infrarot-Sensor legt die Vermutung nah, dass nur die Wärmestrahlung eines Menschen oder Tiers den Sensor auslösen würde. Das wäre natürlich prima für die Erkennung eines Eichhörnchens vor einem Baum, der sich im Wind wiegt. So ist es aber leider nicht. Ein PIR-Sensor spricht sehr wohl auf bewegte Äste an, auch wenn die ganz kalt sind. Darüber hinaus reagiert er empfindlich auf Lichtquellen. Die Anzahl falsch positiver Sensorsignale kann gerne mal ein mehrfaches der richtigen Erkennungen betragen, was den manuellen Überprüfungsaufwand in die Höhe treibt. Je unruhiger der Hintergrund ist, desto weniger ist ein solcher Bewegungsmelder geeignet. Bei einer Mauer im Hintergrund und ohne einfallende Lichtquellen liefert ein PIR-Sensor aber recht gute Ergebnisse. Die Einstellung von Abschaltverzögerung und Empfindlichkeit ist etwas fummelig. Das Verfahren hat auch deutliche Schwächen darin, die Videoaufnahme aktiv zu halten, so lange das Eichhörnchen im Bild ist. Wenn das Tier sich still hält, dann wird keine Bewegung mehr erkannt und irgendwann abgeschaltet. Dem lässt sich nur durch eine lange Abschaltverzögerung begegnen.

Bewegungserkennung durch Bildauswertung

Warum nicht das Bild der Kamera nehmen und auswerten? Dazu findet man im Internet einige vielversprechende Ansätze. Dabei wird ein Bild von der Kamera genommen und mit dem vorhergehenden verglichen. Von beiden Bildern wird quasi eine Differenz gebildet, in dem der Helligkeitswert für jeden Bildpunkt des einen Bilds von dem des anderen abgezogen wird. Das Ergebnis ist dann ein schwarzes Bild, das an den Stellen helle Bereiche aufweist, wo sich die beiden Bilder unterscheiden. Darüber kann man dann einen Schwellwert legen und alle Punkte zählen, die den Schwellwert überschreiten. Überschreitet diese Summe dann eine vorgegebene Grenze, gilt eine Bewegung als erkannt. Soweit Motion-Detection im Schnelldurchgang. Ich gestehe, dass ich das (bisher) nicht selbst ausprobiert habe. Nicht weil es zu aufwändig wäre, sondern weil die bewegten Äste der Kiefer in meinen Bildhintergründen gute Ergebnisse mit dieser Methode gar nicht zulassen würden.

Vorteile

Eine sehr kostengünstige Lösung, da keinerlei zusätzliche Hardware benötigt wird. Auch Löcher im Gehäuse oder aufwändige Außenverkabelung entfallen. Alles wird elegant durch Software erledigt und Schwellwerte können einfach angepasst werden. Bei unbewegten Hintergründen liefert das Verfahren sicher beste Ergebnisse.

Nachteile

Die Bildauswertung unterscheidet nicht, ob sich ein Ast bewegt oder ein Tier. Für meinen Anwendungsfall Oachkatzl Cam ist es also nicht geeignet. Die Einarbeitung in die Programmierung von Motion-Detection ist aufwändig.

Farberkennung durch Bildauswertung

Das ist ein ähnlicher Ansatz wie der vorhergehende mit dem Unterschied, dass auf den Bildern nicht nach Bewegung gesucht wird, sondern nach den Farben der Objekte, die gefilmt werden sollen. „Objekte“, also Plural, denn ich hab es ja mit den roten und den brauen Eichhörnchen zu tun und bauchseitig sind sie auch noch weiß. Dummerweise sind die braunen Eichhörnchen so dunkel, dass sie farblich von den braunen Ästen der Kiefer nur schwer zu unterscheiden sind. Darüber hinaus ändert sich über den Tag der Lichteinfall und damit in gewissem Rahmen auch die Farbe. Wie funktioniert es? Es wird jeweils nur ein Bild benötigt, also nicht wie bei der Bewegungserkennung zwei. Über dieses Bild wird eine Farbmaske gelegt, die nur die Farbbereiche durchlässt, die für Eichhörnchen vorher definiert wurden. Die resultierenden Pixel können wieder gezählt werden und wenn die Summe einen Schwellwert überschreitet, gilt das als Erkennung. Dazu kommt ein bisschen Hokuspokus um wechselnde Lichtsituationen über den Tag auszugleichen.

Vorteile

Ebenfalls eine elegante und billige Lösung ohne weitere Hardware und Verkabelung. Das System lässt sich auf das erwartete Aufnahmeobjekt gut einstellen (Farbe, Mindestgröße). Bewegung im Bild spielt keine Rolle, auch ein ruhig sitzendes Eichhörnchen wird weiterhin erkannt.

Nachteile

Die Farberkennung muss aufwändig kalibriert werden, das betrifft die Festlegung der relevanten Farben und des Schwellwerts für die Gültigkeit einer Erkennung. Das System reagiert empfindlich auf Gegenlicht, weil dann die Kamerablende zugeht und Farbunterschiede undeutlich werden (wobei derartige Situationen meist nur wenige Minuten anhalten). Das Braun der dunklen Eichhörnchen entspricht der Farbe der Äste der Kiefer, das erschwert die Erkennung in schwierigen Lichtsituationen. Auch bei diesem Verfahren ist die Anzahl der falsch positiven Signale erheblich – in Abhängigkeit von der Qualität der Farbkalibrierung natürlich.

Kombination aus Bewegungssensor und Farberkennung

Warum nicht zwei Verfahren kombinieren und so die jeweiligen Schwächen ausgleichen. Der PIR-Sensor ist sehr schnell, weil er ein Eichhörnchen bereits erkennen kann, bevor es ins Bild kommt. Aber er spricht oft an, wenn sich nur ein Ast bewegt. Wenn jetzt die Farberkennung herangezogen wird als Bestätigungssignal, dann erhöht das die Trefferquote deutlich. Auch falsche Signale der Farberkennung, wenn bei schlechten Lichtverhältnissen viele braune Äste als Eichhörnchen gesehen werden, würden unter den Tisch fallen, wenn nicht gleichzeitig der PIR-Sensor eine Bewegung erkennt. Auch dem zu frühen Abschalten der Videoaufzeichnung, wenn sich das Eichhörnchen nicht bewegt, kann entgegengewirkt werden, wenn eine Farberkennung dafür sorgt, dass die Kamera weiter läuft. Die Regel lautet dabei: Farb- und Bewegungserkennung zusammen starten das Video und so lange eins der beiden Signale noch aktiv ist, läuft die Kamera weiter. Erst danach wird sie mit etwas zeitlichem Nachlauf abgeschaltet.

Vorteile

Das Beste aus beiden Welten, die Nachteile der einzelnen Lösungen werden durch die Kombination ausgeglichen. Sehr hohe Trefferquote, sehr wenig falsch positive Erkennungen

Nachteile

Aufwändiges Verfahren mit hohem Anpassungsbedarf an die jeweilige Umgebung. Umfangreiche Programmierung.

Realisierung

Natürlich wären auch noch andere Triggerverfahren vorstellbar, der Phantasie sind hier wenig Grenzen gesetzt. Ein aktiver Annäherungssensor könnte ein sich näherndes Objekt erkennen, oder die Türe zu einem Futterhäuschen könnte einen Kontakt enthalten. Aber einige der relevantesten habe ich sicher oben aufgeführt. Klar ist für den Fall der Oachkatzl Video Cam, dass das zuletzt beschriebene Kombinationsverfahren die beste Trefferquote aufweist. Das wird final zum Einsatz kommen und auf dem Weg dahin werde ich in einzelnen Artikeln auch den PIR-Bewegungssensor und die Farberkennung beschreiben. Für andere Anwendungsfälle kann durchaus ein anderes Verfahren die besseren Ergebnisse liefern – es kommt immer auf den Einzelfall an.

Vor- und Nachlauf

Egal welches Verfahren der Aufnahmeauslösung verwendet wird, ein Problem bleibt immer bestehen. Zuerst erfolgt das Signal und frühestens damit beginnt die Videoaufzeichnung. Wünschenswert wäre allerdings, wenn man im fertigen Film das Eichhörnchen nicht erst sieht, wenn es mitten im Bild steht, sondern bereits etwas früher, wenn es ins Bild hinein läuft. Ein wenig kann man sich damit behelfen, wenn der Sensor einen größeren räumlichen Bereich abdeckt als die Kamera, per Lichtschranke oder Bewegungssensor zum Beispiel, aber viel geht da nicht.

Die Kamera muss also bereits laufen, wenn das Triggersignal eintrifft. Und da wir nicht wissen können, wann das Eichhörnchen kommt, muss die Kamera eigentlich immer laufen. Das ist auch kein Problem, wenn der Raspberry Pi ständig läuft und er an einer permanenten Stromversorgung hängt. Es müssen ja nicht ständig Videodateien gespeichert werden, es genügt, die letzten paar Sekunden immer zur Verfügung zu haben, alles was älter ist, kann verworfen werden.

So etwas realisiert man gerne mit einem Ringpuffer. Der befindet sich im Speicher und nicht auf der SD-Karte und hat eine Kapazität um sagen wir mal 20 Sekunden zu speichern. Danach wird das jeweils älteste Bild durch das aktuell neuste überschrieben und so hält der Puffer immer die letzten 20 Sekunden Videofilm in Bereitschaft. Wenn nun das Eichhörnchen kommt und das entsprechende Triggersignal eingeht, dann wird das Videomaterial für die gewünschte Vorlaufzeit aus dem Ringpuffer entnommen und in eine Datei geschrieben. Gleichzeitig wird der ankommende Datenstrom der Kamera nicht mehr in den Ringpuffer sondern in eine zweite Datei geleitet. So lange bis das Auslösesignal weg fällt, in diesem Moment wird der Videodatenstrom wieder auf den Ringpuffer umgeschaltet und die beiden entstandenen Dateien hintereinander kopiert.

Der Ringpuffer hat eine weitere sehr positive Eigenschaft. Er erlaubt es nicht nur, einen gewissen Video-Vorlauf speichern zu können, er befreit uns auch von zeitlichen Nöten. Ich versuche das anhand der oben beschriebenen Kombinationsmethode zu erklären. Der PIR-Sensor ist sehr schnell, der erkennt eine Bewegung, da ist das Eichhörnchen noch gar nicht im Bild. Wenn ich aber – um Fehlsignale auszuscheiden – abwarte bis eine Bestätigung durch die Farberkennung eingeht, dann kann das eine gewisse Zeit dauern. Bei schwierigen Lichtverhältnissen oder wenn das Tier eine Krähe ist, auf die nicht farboptimiert wurde, vergehen gerne mal ein paar Sekunden. Diese Zeit würde am Anfang des Videos fehlen, gäbe es den Ringpuffer nicht. So merkt sich der Bewegungssensor (bzw. der Programmteil, der ihn bedient) die Zeit seiner Auslösung und später, wenn die Bestätigung durch die Farberkennung erfolgt ist, wird einfach die Zeit des PIR-Sensors genommen und der entsprechende Vorlauf aus dem Ringpuffer geholt. In kurzen Worten: Habe ich einen Ringpuffer in der Hinterhand, kann ich mir mit der Auswertung Zeit lassen und sie treffsicherer arbeiten lassen.

Der Nachlauf ist ein weiteres interessantes Thema. Nachlauf ist die Zeit, während der noch Video aufgezeichnet wird, obwohl der Sensor bereits kein Signal mehr gibt. Die Nachlaufzeit erfüllt zwei Bedürfnisse. Zum einen soll das Video ja nicht schlagartig zu Ende sein in dem Moment, wo das Eichhörnchen den Schweif aus dem Bild zieht, sondern noch ein paar Sekunden weiter laufen. Zum anderen könnte es ja sein, dass es umdreht und ins Bild zurückkehrt. Dann ist es besser, ein zusammenhängendes (nahtloses) Video zu haben, als zwei getrennte. Viel wahrscheinlicher ist aber der Fall, dass der Sensor nicht kontinuierlich Signal gibt. Zum Beispiel wenn das Eichhörnchen vor dem Bewegungssensor kurz still hält, oder wenn die Farbauswertung bei schlechtem Licht nicht für jedes analysierte Bild ein Signal gibt. Hier muss es einen Toleranzbereich geben, während der Zeit ein Trigger auch mal ausgehen kann und die Chance bekommt zurückzukehren. Beim PIR-Sensor wird der Nachlauf per Potentiometer eingestellt, für die anderen Sensoren wird er programmiert.

Ein Sensor und zwei Kameras

Ein letzter Punkt zum Themenkomplex Aufnahmeauslöser. Die Anforderung war, dass mehrere Kameras zum Einsatz kommen können, aber nicht jede Kamera ihre Auslösung selbst steuert. Das wäre auch nicht sinnvoll, die Kameras bedienen unterschiedliche Blickwinkel und haben nicht den gleichen Abstand vom Objekt. Damit alle Kameras gleichzeitig aufnehmen, muss es eine zentrale Auslösesteuerung geben. Das erfordert zum einen, dass die Funktionalität der Auslösung (also Erkennung des Eichhörnchens, Festhalten des Erkennungszeitpunkts und Rücknahme des Signals) von der eigentlichen Videoaufnahme getrennt wird. Und zum zweiten, dass das Triggersignal, das an einer Kamera generiert wird, die andere Kamera auch erreicht. Oder auch mehrere – warum nicht!

Der Ringpuffer macht es wieder möglich, weil es dadurch nachrangig wird, wie lange es dauert, bis das Auslösesignal die zweite Kamera erreicht. Wenn nur das Signal den Auslösezeitpunkt übergibt und der Ringpuffer groß genug ist. Wie wird das realisiert? Eigentlich auf die denkbar einfachste Weise. Auf dem Raspberry Pi, der das Eichhörnchen erkennen soll, laufen zwei Programme, das Analyseprogramm zur Erkennung und Auslösung und der eigentliche Videorecorder. Auf allen anderen (untergeordneten) Raspberry Pis läuft nur der Recorder. Wenn das Analyseprogramm ein Aufnahmesignal geben möchte, dann legt es einfach in ein bestimmtes Verzeichnis eine Datei ab. Die ist leer, hat aber als Dateinamen den Zeitstempel der Signalauslösung. Soll die Videoaufzeichnung beendet werden, wird die Datei einfach wieder gelöscht. Der Videorecorder braucht nun nur dieses Verzeichnis beobachten und bei Erscheinen der Triggerdatei die Aufnahme gemäß Zeitstempel starten. Wenn die Datei verschwindet wird die Aufnahme beendet.

Eine zweite Kamera muss jetzt nur die Möglichkeit erhalten, auf genau dieses Triggerverzeichnis des steuernden Raspberry Pis zuzugreifen und verhält sich dann ganz genauso, wie die erste Kamera. Mit dem kleinen Unterschied, dass der Zugriff über das WLAN erfolgt und damit wesentlich langsamer ist. Den Zeitverlust gleicht aber der Ringpuffer aus. Wie kommt nun ein Raspberry Pi auf ein Verzeichnis eines anderen? Denkbar wären verschiedene Techniken, wie Samba, FTP oder NFS, ich wähle wieder die einfachste, nämlich SSH. Ebenso wie ich von meinem PC aus per Textkonsole auf die Raspberries zugreife, kann das natürlich auch ein RasPi auf einen anderen. Fast zumindest, aber der notwendige Kniff ist schon wieder Stoff für einen separaten Artikel.

Fazit

Die Auslösung der Videoaufnahme ist die zentrale Funktion der Oachkatzl Video Cam bzw. mehrerer Cams. Deshalb habe ich mir erlaubt, in diesem umfangreichen Beitrag viele theoretische Überlegungen zusammenzufassen und vorauszuschicken, bevor es in mehreren weiteren Artikeln um die detaillierten technischen Details geht.

 


Weitere Artikel in dieser Kategorie:

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.