Projekte

Raspberry Video Camera – Teil 25: Zweite Kamera

Seit den ersten Tagen der Raspberry Video Cam gibt es das Konzept der Multi-Kamera-Fähigkeit. Nun wird es Zeit, dass ich auch hier im Blog endlich vorstelle, wie sich eine zweite (und dritte und vierte) Kamera zuschalten lässt. Dabei geht es vor allen Dingen darum, dass eine Kamera das Triggern übernimmt und weitere abhängige Kameras auf dieses Auslösesignal reagieren. Damit wird erreicht, dass eine Szene gleichzeitig aus mehreren Blickwinkeln aufgenommen wird. Später kann dann ein Video aus dem Material von mehreren Kameras geschnitten werden. (mehr …)

Raspberry Video Camera – Teil 24: Anpassung von Programmparametern

Diesmal stelle ich keine neue Programmversion für die Raspberry Pi Video Cam vor, sondern gehe im Detail auf all die Konstanten ein, die sich inzwischen am Programmanfang angesammelt haben. Damit möchte ich all jene, die mein Python-Programm ausprobieren, ermutigen selbst Parameter zu verändern. Dadurch lassen sich Anpassungen an die eigenen Gegebenheiten vornehmen und an die Tiere, die erkannt und gefilmt werden sollen. Parameter-Tuning ist auch sinnvoll um die Erkennungsrate zu steigern um möglichst kein Tier zu verpassen. (mehr …)

Raspberry Video Camera – Teil 23: Verbesserung durch ROI und Aufnahmezeitbegrenzung

Auch ein gutes Programm lässt sich weiter verbessern und zwei solche Verbesserungen für die selbstlernende Farberkennung schlage ich hier vor: ROI steht hier nicht für „Return on Investment“ sondern für Region of Interest. Und das bedeutet, dass wir für die Farberkennung nicht mehr das gesamte Bild verwenden, sondern nur eine bestimmte Region, in der wir das Auftauchen eines Objekts vermuten. Das ist Thema 1 und die zweite Verbesserung führt eine generelle Aufnahmezeitbegrenzung für Videos ein um endlos lange Recordings zu vermeiden. Beide Verbesserungen können hilfreich sein, sind aber sicher nicht in jeder Umgebung sinnvoll. (mehr …)

Raspberry Video Camera – Teil 22: SW selbstlernende Farberkennung in Python

Konzeptionell habe ich die selbstlernende Farberkennung zur Kameraauslösung im letzten Artikel bereits besprochen. Nun geht es um die Realisierung in Form eines Python-Programms für den Raspberry Pi. Dabei baue ich auf dem zuletzt besprochenen Kombinationstrigger-Programm auf und erweitere es um ein paar zusätzliche Komponenten. Damit ist es künftig nicht mehr nötig, Farbbereiche für die Erkennung von Hand zu definieren. Das Programm wird die Farben selbständig anhand von Beispielbildern lernen und diese dann verwenden um die Kamera zu triggern. (mehr …)

Raspberry Video Camera – Teil 21: Konzept einer selbstlernenden Farberkennung

Damit ein Programm die Farben eines Objekts in den Videobildern erkennen kann, muss das Programm erst mal wissen, nach welchen Farben es suchen soll. Bisher hatten wir das von Hand gemacht und die typischen Farben der Eichhörnchen aus den Histogrammen von Beispielbildern abgelesen. Wie wäre es nun, wenn das Trigger-Programm das selbst erledigt und anhand einiger bereitgestellter Beispielbilder die Objektfarben erlernt? Und wie wäre es weiterhin, wenn das Programm laufend den Bildhintergrund analysiert, der sich über den Tag sonnenlichtbedingt ändert, und dessen aktuelle Farben in die Auswertung mit einbezieht? In diesem Artikel stelle ich ein paar Konzepte für eine selbstlernende Farberkennung vor, im nächsten folgt dann das entsprechende Python-Programm. (mehr …)

Raspberry Video Camera – Teil 20: Exkurs – Farbdarstellung per 2D-Histogramm

Farbhistogramme helfen bei der Beurteilung, welche Farben wie häufig in einem Bild vertreten sind. Vereinfacht ausgedrückt zumindest. Eindimensionale Histogramme haben wir bei der Farbkalibrierung des Python-Kamera-Triggerprogramms bereits verwendet. Für die drei HSV-Farbkanäle Hue, Saturation und Value, hatten wir zu diesem Zweck drei Histogramme generiert und daraus die Grenzen der Eichhörnchenfarben abgelesen. Nun stelle ich das 2D-Histogramm vor, mit dem wir zwei Kanäle gleichzeitig berechnen und visualisieren können – typischerweise Hue und Saturation. (mehr …)

Raspberry Video Camera – Teil 19: SW Kombinationstrigger

Das automatische Auslösen der Raspberry Video Camera bleibt weiterhin das Thema. In den vorangegangenen Artikeln hatte ich die Kamerasteuerung per Bewegungssensor vorgestellt und dann die Farberkennung aus dem Videobild heraus. Beides sind brauchbare Trigger, wenn es darum geht, ein Objekt vor der Kamera zu erkennen, aber sie haben auch ihre spezifischen Nachteile. Wie wäre es nun, wenn wir die beiden Methoden kombinieren, von den jeweiligen Vorteilen profitieren, Nachteile ausgleichen und so die Objekterkennung noch treffsicherer machen? In diesem Artikel kombiniere ich die Farbauswertung mit den Signalen des PIR-Bewegungssensors. (mehr …)

Raspberry Video Camera – Teil 18: SW Farbkalibrierung

Die Raspberry Video Camera soll genau dann ein Video aufzeichnen, wenn ein Eichhörnchen ins Bild kommt. Und das soll ein Python-Programm anhand der typischen Farben der Eichhörnchen erkennen. Das Münchner Oachkatzl ist entweder rotbraun, wie der Kamerad hier im Titelbild, oder dunkelbraun. Beide haben weißes Brust- und Bauchfell. Darauf muss das Programm, das den Videodatenstrom analysiert, natürlich eingehen und ständig das Videobild auf die Eichhörnchenfarben hin untersuchen. Wie das softwaretechnisch funktioniert, haben wir im entsprechenden Python-Programm bereits gesehen. Aber woher bekommen wir die Zahlen für die Farbwerte? Genau diese Frage wird in diesem Artikel beantwortet. (mehr …)

Raspberry Video Camera – Teil 17: Exkurs – Wie Computer Farben sehen

Im vorangegangenen Artikel hatte ich gezeigt, wie wir die Raspberry Video Camera durch Farberkennung auslösen können. Dabei analysiert ein Python-Programm die Videobilder auf die typischen Farben der Eichhörnchen hin und generiert dann das Triggersignal. Um die Bildauswertung zu bewerkstelligen, bedienen wir uns einer spezialisierten Software für das maschinelle Sehen. Die nennt sich Computer Vision und in ihrer freien Form OpenCV. Heute möchte ich ein wenig näher darauf eingehen, wie OpenCV Bildimages intern als Zahlen darstellt und was es mit den verschiedenen Farbräumen wie RGB oder HSV auf sich hat.  (mehr …)

Raspberry Video Camera – Teil 16: SW Trigger per Farberkennung

Wie lässt sich der Auslöser der Videokamera durch eine Objekterkennung im Videobild selbst steuern? Das ist die Fragestellung um die es in diesem Artikel geht. In den beiden vorhergegangenen hatten wir bereits Vorarbeiten geleistet. Wir hatten OpenCV als Python Programmbibliothek installiert und das Video-Aufzeichnungsprogramm so erweitert, dass es jede Sekunde ein Bild aus dem aktuellen Videodatenstrom entnimmt und ins Dateisystem legt. Nun können wir diese Bilder einlesen und auf die Fellfarben der typischen deutschen Eichhörnchen hin analysieren. Bei positiver Erkennung soll eine Triggerdatei erzeugt werden – genauso, wie es vorher durch den Bewegungssensor geschehen ist. (mehr …)