Creative Coding

btk

Till Nagel

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.

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.

Creative Commons Lizenz: Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 2.0 (Deutschland)

© 2007 Till Nagel, All rights reserved – Alle Rechte vorbehalten.