Liniengrafiken aus Fotos als Vektorfelder

Verschiebt man Punkte entlang eines Vektorfeldes entstehen häufig interessante Muster, wie sie beispielsweise von Magnetlinien bekannt sind. Die Programmierung interessanter Vektorfelder ist aber nicht ganz einfach. Da liegt es nahe, Bilder als Quelle für solche Vektorfelder zu verwenden. Fotos eignen sich dafür besonders gut, weil die Farbinformation der einzelnen Fotopixel auf mehrere verschiedene Arten ausgewertet werden können.

Die aus den Vektorfeldern resultierenden Linienmuster werden dabei mit Snap! erzeugt.

Grundlagen

In Snap! können Fotos importiert werden, indem sie einfach auf die Programmieroberfläche gezogen werden. Anschliessend kann dieses Foto einem Sprite mit den folgenden Befehlen zugeordnet werden.

Ein bereits in Snap! importiertes Foto kann über den entsprechenden Block als Kostüm verwendet werden.

Der stretch-Block sorgt dafür, dass das Foto die ganze Bühnenoberfläche (stage) komplett ausfüllt.

Nun kann die Eigenschaft einzelner Pixel im geladenen Foto mit folgendem Programm überprüft werden.

Das Programm fragt den Farbwert eines einzelnen Pixels im gegebenen Foto ab.

Sobald im Programm die Taste t (für Testen) gedrückt wird, bewegt sich das Objekt (sprite) zur aktuellen Mausposition, liest dort den Farbwert (hue) des an der Mausposition befindlichen Pixels aus und zeigt diesen an. Die weiteren Blöcke im Programm werden für das Zusammenspiel mit den anderen Programmteilen benötigt.

Das Objekt zeigt in die Richtung des gemessenen Farbwerts und gibt diesen aus.

Weil die hue-Farbwerte von 0 bis 100 reichen, wird der Messwert noch mit 3.6 multipliziert, damit als Richtung die vollen 360° erreicht werden können.

Wenn sich das Objekt nun in Richtung des gemessenen Werts bewegt, anschliessend eine neue Richtungsbestimmung vornimmt und diesen Vorgang beliebig viele Male wiederholt, entsteht eine Spur auf dem Bild.

Auf dem Hintergrund sind bereits mehrere zurückgelegte Spuren zu sehen.

Damit diese Möglichkeit interaktiv ausprobiert werden kann, ist folgende Programmierung notwendig.

Das Objekt (sprite) kann mit der Maus positioniert werden. Sobald die Maustaste nicht mehr gedrückt wird, zeichnet das Programm eine Spur auf das Foto.

Die bisher von Hand gewählte Positionierung wird nun per Programm vielfach durchgeführt.

Einfache Linienmuster

Das folgende Programm sorgt zuerst dafür, dass einige Umgebungsvariablen richtig gesetzt sind und führt dann die oben beschriebenen Schritte innerhalb des warp-Blockes (dient der beschleunigten Bildschirmausgabe) mehrfach aus.

Ausgehend von Zufallspunkten werden Linien gezeichnet, welche dem Vektorfeld folgen.

Je nach verwendeter Fotovorlage, dem gewählten Kriterium (hier: Helligkeit) und der verwendeten Schrittlänge entstehen unterschiedliche Linienmuster.

Diesem Bild liegt das im Programm verwendete Eisbild zugrunde (heller Hintergrund).
Für dieses Bild diente das Foto mit dem Hund und der Ziege als Grundlage (dunkler Hintergrund).

Obwohl bei beiden Bildern (abgesehen vom Hintergrund) die genau gleichen Parameter gewählt wurden, sind völlig unterschiedliche Linienmuster entstanden.

Gleichzeitige Verwendung mehrere Linienmuster

Statt jeweils nur einen Parameter für die einzelnen Pfade (Linien) zu verwenden, kann dabei auf unterschiedliche Informationen zugegriffen werden. Dazu bietet es sich an, einen Block zu programmieren, welcher das Abfragen der unterschiedlichen Merkmale eines Bildpixels vereinfacht.

Der Block erlaubt die Wahl der gewünschten Farbinformation über ein Menü.

Als Auswahlmöglichkeiten stehen folgende Optionen zu Verfügung:

  • hue: Farbwert von 0 bis 100 entlang des Spektrums eines Regenbogens;
  • saturation: Farbigkeit von 0 bis 100, bestimmt, ob eine Farbe gräulich oder lebendig erscheint;
  • brightness: Helligkeit der gewählten Farbe;
  • red: Rotwert des Pixels;
  • green: Grünwert des Pixels;
  • blue: Blauwert des Pixels.

Die Werte für hue, saturation und brightness werden am besten mit 3.6, die für red, green und blue mit 1.41 multipliziert.

Diesen Block kann nun im oben abgebildeten Programm zum Zeichnen von Linien verwendet werden, oder er wird in eine erweiterte Version eingesetzt, welche gleichzeitig mehrere Kriterien für den Verlauf der einzelnen Pfade definiert.

Das Programm wählt ein Richtungskriterium und die gewünschte Einfärbung per Zufalls aus einer Liste von Möglichkeiten aus.

Der dem zurückgelegten Pfad (Linie) zugrunde liegende Farbwert, das Kriterium für die Richtungswahl bei den einzelnen Schritten, sowie die Schrittweite werden jeweils per Zufall ausgewählt. Dadurch entsteht bei geschickt gewählten Parametern anstelle eines blossen Linienmusters eine Art von Netz, wie sie beispielsweise häufig bei Stoffen zu finden ist.

Einige Beispiele sollen dieses Prinzip verdeutlichen (bei allen wurden die im abgebildeten Programm gezeigten Parameter verwendet).

Für dieses Muster wurde das Foto des Eichhörnchens verwendet (dunkler Hintergrund).
Für dieses Muster diente das Apfelbild als Grundlage (heller Hintergrund).
Hier wurde das Eisbild als Grundlage verwendet (dunkler Hintergrund).

Welche Muster ein entsprechendes Foto erzeugt, lässt sich im Voraus nur schwer erahnen. Klar abgegrenzte Objekte in einem Foto erzeugen aber klarere Richtungswechsel und prominente Muster in den erzeugten Grafiken.

Auf das beschriebene Programm kann hier zugegriffen werden: Photo to vector field.
Alle im Programm verwendeten Fotografien stammen von Ernst Giger.

Verwendung im Unterricht

Nebst dem reinen Experimentieren und der Neugier, welches Foto mit welchen Parametern zu welchen Mustern führt, kann das Programm auch dazu verwendet werden, Eigenschaften von Vektorfeldern systematisch zu untersuchen.

  • Statt einzelne Punkte zufällig zu wählen, können die Startpositionen auf bestimmten geometrischen Orten wie Linien oder Kreisen liegen.
  • Das gleiche Bild kann mehrfach mit den gleichen Startwerten als Grundlage für die Berechnung verwendet werden.
  • Bei unterschiedlichen Fotos kann untersucht werden, wie sich die Schrittlänge auf die Stabilität der Muster auswirkt.

Solche Untersuchungen können schnell zu Diskussionen darüber führen, wie einheitlich die Musterbildung in einzelnen Vektorfeldern ist und damit die Stabilität unterschiedlicher Systeme (hier Fotos) zu diskutieren.

Schliesslich kann auch der umgekehrte Weg gegangen werden. Gelingt es den Schülerinnen und Schülern ein Bild (oder Foto) anzufertigen, dass zu einem gewünschten Verhalten in Bezug auf den Linienverlauf einzelner Grafiken führt?

Schreibe einen Kommentar

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