Extern 3 - Woche 11
Aufgaben
K1: TimeLiner
Zeichne von einem LiveVideo immer nur genau eine vertikale Linie. Diese Linie soll über das Bild wandern, so dass eine Art "bewegtes Standbild" erzeugt wird.


Variante: Die Linie, die gezeichnet wird, soll stets an der gleichen Stelle aufgenommen werden.

K2: RasterizedVideo
Verwende die unten stehende Funktion drawRectImage()
um das LiveVideo Bild zu rastern.

Variante: Probiere verschiedene Varianten aus. Farben manipulieren, interaktiv werden lassen, etc.
Video 2
Pixel-Array der Zeichenfläche
Um schneller und performanter arbeiten zu können, können statt mit Zeichenanweisungen auch direkt die Farben des sichtbaren Felds manipulieret werden.
So können einzelne Pixel über das Array pixels[]
verändert werden, anstatt mit point(x, y)
.
Das Pixel-Array enthält für alle Pixel des Zeichenbereichs die Werte (vom Datentyp color
).
Das Array ist genauso groß wie die Zeichenfläche: Wenn der Sketch mit size(200, 100)
erstellt wurde, ist das Array folglich 200×100 groß
und enthält daher 20.000 Werte. Der Index bestimmt die Position innerhalb des Arrays. (Siehe Pixel-Array der Bilder)
Bevor mit dem Array gearbeitet werden kann, müssen die aktuellen Werte, d.h. die aktuell zu sehenden Farben auf der Zeichenfläche, mittels loadPixels()
geladen werden. Nachdem man die Daten geändert hat, muss updatePixels()
aufgerufen werden, um die Änderungen auch sichtbar zu machen.
- Processing Reference: pixels[]
- Processing Learning: PixelArray
- Processing Reference: loadPixels()
- Processing Reference: updatePixels()
Pixelmanipulation
Zum leichteren Start hier eine Funktion, die ein PixelArray verwendet, um es aus Rechtecken zu zeichnen. Die Parameter sind:
- pixelArray - Das PixelArray
- w - Weite des Ausschnitts
- w - Höhe des Ausschnitts
- wd - Weite der Rasterung
- hd - Höhe der Rasterung
Möchte man zum Beispiel das Live-Bild mit dieser Methode zeichnen, kann folgender Aufruf genutzt werden:
Computer Vision
Interaktive Medien mit Bewegtbildern können auf verschiedene Art erstellt werden. So ist etwa das wiederholte und zeitversetzte Abspielen von Filmausschnitten im VJ-Bereich gängig. Um aber auf Ereignisse in den Bildern reagieren zu können muss das Bildmaterial selbst analyisert werden. Wenn neuartige Formen des interaktiven Einsatz von Live- oder vorgefertigem Videomaterial ermöglicht werden soll, sind grundlegende Techniken und Algorithmen der Computergrafik notwendig. Als Entwickler solch einer Installation müssen diese zumindest rudimentär verstanden werden.
Viele einfachere Computer Vision-Algorithmen basieren darauf, einzelne Pixel oder Pixelgruppen über die Zeit miteinander zu vergleichen. Dadurch wird versucht zu erkennen, ob Bereiche interessant sind, d.h. ob auf diese reagiert werden soll. Zwei elementare Techniken werden hier kurz vorgestellt, die auch bei anspruchsvollen interaktiven Systemen eingesetzt werden.
- Vergleich von Einzelbildern
- Helligkeits-Verfolgung
Vgl. Golan Levin: Extension 3: Vision. In: Casey Reas, Ben Fry: Processing - A Programming Handbook for Visual Designers and Artists, Cambridge, 2007
Vergleich von Einzelbildern
Die Bewegungen von Objekten (z.B. Personen) innerhalb eines Einzelbildes kann erkannt werden mittels Vergleich mit dem vorherigen Einzelbild.


In dieser Technik wird jedes Pixel aus Videobild mit dem zugehörigen Pixel (an gleicher Stelle) des folgenden Bildes verglichen. Die Farb- bzw. Helligkeitsdifferenz zwischen diesen beiden Pixeln wird gemessen und gibt an, ob und wieviel Bewegung an dieser bestimmten Position ist.
Ein ganz ähnlicher Algorithmus wird angewendet, wenn erkannt werden soll, ob sich im Bild etwas zu einem vorher festgelegtem Hintergrund verändert hat. Hier vergleicht man einfach das aktuelle Bild mit einem zuvor gespeicherten, bei dem man weiß, dass keine Personen oder Objekte vorhanden waren. Ist eine Änderung zu erkennen, bedeutet dies, dass aktuell Objekte im Bild stehen.
Helligkeits-Verfolgung
Das Helligkeits-Tracking ist eine simple Möglichkeit, um einzelne, helle Objekte zu verfolgen (z.B. eine Tachenlampe oder eine Leuchtdiode).


Dieser Algorithmus misst die Helligkeit jedes Pixels des neuen Bildes und vergleicht diese mit dem bisher hellsten Punkt. Wenn ein Pixel heller als der bisher hellste ist, wird dieser als der neue hellste Punkt gespeichert. Nach Analyse jedes Punktes weiß man also, welches der insgesamt hellste Pixel ist. Wird dies mit jedem neuen Frame gemacht, kann so eine Lichtquelle verfolgt werden.
Statt des hellsten Pixels kann mit Hilfe dieser Methode natürlich auch eine bestimmte Farbe festgelegt werden, die verfolgt wird. Eine leichte Abwandlung des Altorithmus ermöglicht bestimmte Farbereiche tracken zu können – womit etwa kleine farbige Objekte verfolgt werden können.