Followspot

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Projektidee

Grundlage für diese Projektarbeit liefert die häufig auftretende Problematik mit der Ausleuchtung von Schauspielern oder Künstlern auf Bühnen. Hierfür muss oftmals noch per Hand der Strahler bewegt werden, um die Person genügend auszuleuchten bzw. in den Vordergrund zu stellen. An dieser Stelle soll das System zum Einsatz kommen. Die Erkennung der auszuleuchtenden Person soll automatisch die Ansteuerung des Moving Heads an die entsprechende Position initiieren. Umsetzung Das Projekt unterteilt sich in die beiden Teile Ortung der zu beleuchtenden Person und daraufhin Konzentration des Lichtkegels des Moving Heads auf diese Person. Weiterhin wird auch das Koordinatensystem, auf das sich die Personenortung und der Moving Head beziehen, im Folgenden als eigener Punkt angeführt, da diese Umrechnung sich als komplex herausstellte. Der Raum, in dem sich die Person befindet, wird mit einer Infrarotkamera aufgenommen und über die Operatoren Hintergrundsubtraktion, Binarisierung und Schwerpunktberechnung die Position der Person ermittelt. Hierbei ermittelt man das Zentrum der Person und durch die manuelle Einstellung des Lichtkegeldurchmessers wird die Person komplett angestrahlt. Die Verarbeitung dieser Informationen übernimmt ein Rechner, welcher auch die Koordinaten des Moving Heads berechnet. Hierfür wird auf eine zweidimensionale Sichtweise vereinfacht. Diese hat zwar Abweichungen vor allem bei der Ansteuerung von Koordinaten im Randbereich des Systems zur Folge, diese werden unter Berücksichtigung des Durchmessers des Moving Head-Kreises aber in Kauf genommen.

Personenerkennung

Die Aufnahme des Raumes erfolgt mit einer Infrarotkamera, da der Lichtkegel des Moving Heads keinen IR-Anteil besitzt. Infolge dessen muss der Raum jedoch mit einem Infrarotstrahler ausgeleuchtet werden, um die Person zu erkennen. Zunächst wird der Raum ohne die zu verfolgende Person aufgenommen, um dieses Bild dann von den Bildern mit Person zu subtrahieren (Hintergrundsubtraktion). Das daraus resultierende Bild wird binarisiert, womit die zu detektierende Person nun weiß dargestellt wird. Im weiteren Verlauf wird durch das Zählen der weißen Bildpunkte der Schwerpunkt bestimmt und die Koordinaten dieses Schwerpunktes ausgegeben. Die Koordinaten beziehen sich auf die Auflösung der Darstellung des Bildes, in unserem Fall 320x240. Die folgende Aufnahme entstand während der Projekt-Entstehung: Das linke obere Bild in der rechten Hälfte ist das der Kamera, diese wird dann in ein Grauwertbild gewandelt. Das Bild in der zweiten Reihe links ist das Bild ohne Objekt, was zur Hintergrundsubtraktion benötigt wird. Das Bild rechts daneben ist das binarisierte Bild nach der Hintergrundsubtraktion. In der linken Bildhälfte ist die Ausgabe des Schwerpunktes zu sehen.

Folgende Abbildung zeigt die einzelnen Phasen der Personenerkennung:

Followspot personenerkennung uebersicht.jpg

Ansteuerung des Moving Head

Der Moving Head wird über die Schnittstelle DMX („digital multiplex“) angesteuert. Hierfür besitzt das Gerät eine Nummer (in diesem Fall Nummer 0), welche in der Setup-Funktion des OpenFramework-Programms berücksichtigt werden muss. Im Anschluss kann über die gerätespezifischen Kanäle (in diesem Fall 1-7) die jeweiligen Einstellungen des Strahlers vorgenommen werden, wie zum Beispiel Farbe, Form, Leuchteffekte des Lichtkreises oder auch die horizontale und vertikale Neigung des Moving Heads. Für den jeweiligen Gerätetyp ist dafür das Datenblatt heranzuziehen.

Folgende Abbildung zeigt eine Übersicht über die Schnittstellen im Projekt:

Followspot schnittstellen.JPG

Um nun mit dem Moving Head kommunizieren zu können, bietet openFrameworks mit dem Addon „ofdmx“ entsprechende Funktionen an. Als grundlegende Basis zum Informationsaustausch sind 3 Funktionen essenziell. Um eine Verbindung zwischen Gerät und PC herzustellen, muss mit dmx.connect(int num) die Nummer des seriellen USB-Anschlusses zum DMX-Interface angegeben werden. Die Variable num stellt hier den Index des Interfaces an den seriellen Schnittstellen des PCs dar. Weiterhin kann mit dmx.setLevel(int channel, int value) ein beliebiger Wert auf einen beliebigen Kanal des DMX-Gerätes geschrieben werden. Zu beachten sind hierbei die datenblattspezifischen Angaben über die Funktionsweisen des jeweiligen Kanals. Damit nun die eingestellten Werte letztendlich übertragen werden, ist es notwendig, nach jeder Verwendung der setLevel-Funktion die Parameter mit dmx.update() zu übertragen. Im Anschluss an diese Funktion hat der Moving Head die eingestellten Werte übernommen. Die Kanäle 1 und 2 beschreiben in diesem Setup die Winkel Pan und Tilt. Dafür stehen jeweils 8 Bit zur Verfügung, die den Wert des Winkels von 0 bis 255 beinhalten. Zu beachten ist hierbei die jeweilige Skalierung: im Pan-Bereich stehen binär 255 für 540° Winkelmaß, während im Tilt-Bereich binär 255 für 270° Winkelmaß stehen. Zum Testen des Systems wird empfohlen, zunächst in einer eigenen GUI die Werte der Kanäle zunächst auszuprobieren und somit die einwandfreie Funktionsweise des DMX-Interfaces sowie des Moving Heads sicherstellen zu können.

Koordinatensystem

Das Teilsystem der Personenerkennung legt im Zuge des Detektierens bereits einen Schwerpunkt der Person und dessen Koordinaten fest. Diese Einteilung des Koordinatensystems wird für den Moving Head übernommen. Aus diesem Grund kann der Strahler in X-Richtung 320 und in Y-Richtung 240 Koordinaten ansteuern. Dies vereinfacht das Ausleuchten der Person enorm. Weiterhin wird aus der im Vorhinein festgelegten Position des Moving Heads die Differenz aus Sollposition und Strahler-Position berechnet und somit der Winkel für die horizontale und vertikale Neigung festgelegt. Aus diesen Winkeln wird im Anschluss der jeweilige Binärwert für die Ansteuerung via DMX berechnet. Falls notwendig müssen Maximal- und Minimalgrenzen berücksichtigt werden.

Probleme

Aufgrund der Komplexität einer dreidimensionalen Transformation wurde durch die Kürze der Durchführungszeit bedingt auf eine weniger-dimensionale Durchführung vereinfacht. Weiterhin wird bei anderen Aufbauten möglicherweise eine Transformation des Kamera-Koordinatensystems auf das des Moving Heads notwendig.

Ergebnis

Durch Hintergrundsubtraktion, Binarisierung und anschließende Schwerpunktberechnung wird der Schwerpunkt der Person erfolgreich berechnet und ausgegeben. Um dieses Verfahren automatisiert mit der Ansteuerung des Moving Heads laufen zu lassen, muss sich überlegt werden, wann das Hintergrundbild aufgenommen wird. Dies muss beispielsweise nach jedem Szenenwechsel neu durchgeführt werden. Im Programmcode muss zusätzlich die Funktion geändert werden, dass eine Schwerpunktberechnung nur nach Betätigung der Taste ‚p‘ durchgeführt wird. Dies muss im Betrieb bei jedem neuen frame neu berechnet werden. Die Ansteuerung des Moving Heads funktioniert nach Vereinfachung dahingehend, dass Bereiche nahezu korrekt angefahren werden. Bei Bereichen in der Bildmitte ist jedoch noch eine Abweichung zu erkennen. Diese hat jedoch zur Folge, dass bei Ansteuerung von Bereichen am linken Rand des Koordinatensystems Abweichungen auftreten, da sich hierbei auch die vertikale Neigung mit steigender horizontaler Verschiebung verändert. Jedoch vergrößert sich mit steigender Differenz zwischen Sollpunkt und Moving Head-Punkt auch die der Durchmesser des Lichtkegels. Dadurch wird diese Abweichung etwas ausgeglichen. Die resultierende Restabweichung wird in Kauf genommen

Quellcode

Download