Sequencing-Howto

Diese Seite erklärt schrittweise, wie mit Hilfe der KOGS-Kameras, insbesondere der Farbkameras, Sequenzen aufgenommen und Bildfolgen hergestellt werden können. Bei der Arbeit mit Monochrom-Kameras sind die folgenden Schritte nur z.T. notwendig bzw. anwendbar.

Grundsätzliches

Um dieses Howto zu verstehen, sollte man Bayer-Filter und den Aufbau eines Kamera-Chips kennen. Siehe z.B.:
Welche Hardware und Programme mit der Kamera direkt zusammenarbeit und wie man diese bedient, ist auf dieser Seite erklärt. Die hier wichtigen Dateien und Programme, sind in diesem Verzeichnis zu finden. Alle folgenden Pfadangaben sind relativ dazu. Zudem müssen ImageMagick, Vigra (1.1.4) und u.U. Python installiert sein. Da einige Programme nur auf Suns arbeiten, ist von Linux derzeit noch abzuraten.

Kamera wählen

Als aller ersten Schritt sollte man sich die Kamera aussuchen. Wenn Farbaufnahmen gemacht werden sollen, ist es notwendig, zu wissen, welche Farbe die Kamera links oben (0,0) lierfert. Außerdem ist es von Vorteil, wenn man ein Bild mit den Schwarzwerten der Kamera hat. Entsprechende Daten befinden sich u.U. im Verzeichnis cameras/. Findet man dort nichts, muß man für Farbkammeras zumindest die Farbe des Pixels (0,0) bestimmen. Eine einfaches Verfahren ist das folgende:
  1. Etwas rotes wird so plaziert, daß es links oben im Bild liegt.
  2. Ein Einzelbild machen.
  3. Vergrößerung betrachten.
Pixel (0,0) ist hell => (0,0) ist rot
Pixel (1,0) ist hell => (0,0) ist grün aus einer grün/rot-Reihe
Pixel (0,1) ist hell => (0,0) ist grün aus einer grün/blau-Reihe
Pixel (1,1) ist hell => (0,0) ist blau
Möchte man zudem ein Schwarzwertbild erzeugen, sollte auf das Programm bin/average.py zurückgegriffen werden. Hierzu macht man eine Aufnahme mit 100 Bildern, läßt jedoch kein Licht in die Kamera - am besten den Verschlußdeckel nicht abschrauben. Die beiden Raw-Dateien müssen BlackLevelD.raw und BlackLevelE.raw heißen. Mit raw2tiffs (s.u.) zerlegt man die Raw-Dateien und läßt danach average.py in deren Verzeichnis ablaufen. Das Resultat besteht aus zwei Dateien:
averageFloat.tiff (enthält die präzisen Werte)
averageByte.tiff (ist das Schwarzwertbild für alle folgenden Schritte)

Licht einstellen

Als nächstes sind die Lichtquellen festzulegen. Als gute Basis hierfür sind zwei Neonscheinwerfer auf Stativen vorhanden. Sie werden an einem 1000-Herz-Generator betrieben, so daß sich keine störenden Wechselwirkungen mit der Aufnahme-Frequenz ergeben. Gut geeignet ist zudem Sonnenlicht. Zu vermeiden ist jede Art von Quelle, die am normalen Stromnetz läuft, d.h. insbesondere die Deckenbeleuchtung.

Bevor man die eigentlichen Sequenzen aufnimmt, sollte man ein Bild mit einer möglichst großen und weißen Fläche machen *. Wie Einzelbilder aufgenommen werden, steht hier. Es darf in diesem noch nicht weiter bearbeiteten Grauwertbild kein Punkt mit dem Wert 255 vorkommen - dies wäre ein Hinweis auf Übersättigung. Andererseits sollten die Werte nicht weit unter 250 liegen, da sonst die Belichtung zu gering ist. Vorher experimentieren ist wichtig! Vorsicht: Neonfarben neigen zur Übersättigung, auch wenn weiß korrekt eingestellt ist.

(* Diese Bild wird später für die Farbkonvertierung gebraucht - bis dahin also nicht löschen. Als weiße Fläche kann man drei aufeinandergelegte DIN-A3-Blätter benutzen (kein Recycling-Papier) - mit Hilfe der Blattkante ist dann zudem die Schärfe einfach einstellbar.)

Aufnahmen machen und zerlegen

Wie man Aufnahmen mit einer Kamera macht, wird hier erklärt. Die (zwei) entstandenen Raw-Dateien pro Aufnahme sollte man in ein eigenes Verzeichnis kopieren, wo ausreichend Platz für die Weiterverarbeitung ist - mindestens den dreifachen Platz der Raw-Dateien sollte man noch frei haben. Es hat sich als sinnvoll erwiesen, die Datei mit den geradzahligen Bildern IrgendeinNameD.raw und die mit den ungeradzahligen IrgendeinNameE.raw zu nennen. Im nächsten Schritt benutzt man bin/raw2tiffs.sh, um aus den beiden Raw-Dateien Tiff-Graubilder zu erstellen. Zuvor muß man ins Verzeichnis der Raw-Dateien wechseln.
Die zwei Aufrufe sehen dann wie folgt aus:
raw2tiffs.sh IrgendeinName D
raw2tiffs.sh IrgendeinName E

Farbkorrekturwerte bestimmen

Um diese Werte zu ermitteln, wird das Bild mit der weißen großen Fläche und das Programm bin/averageColor benötigt. Die berechneten Farbkorrekturwerte werden später für die Umwandlung von grau nach farbe mit dem Programm tiffs2color.sh verwendet (s.u.).

Gibt es ein Bild mit den Schwarzwerten (z.B. blacklevelByte.tiff), sollte man das Bild mit der weißen Fläche (z.B. white.tiff) wie folgt korregieren:
combine -compose Minus blacklevelByte.tiff white.tiff correctedWhite.tiff
correctedWhite.tiff ist das neue "Weißbild" - white.tiff wird nicht mehr benötigt.

Nun sind (mit Hilfe eines Grafikprogramms) die Koordinaten eines möglichst großen Rechtecks innerhalb der weißen Fläche zu bestimmen. Benötigt werden die linke obere (x1,y1) und die rechte untere Ecke (x2,y2) des Rechtecks als Parameter für averageColor. Die Ausgabe des Programms besteht aus vier Werten:
  1. rw  = Korrekturwert für rote Pixel
  2. g1w = Korrekturwert für grüne Pixel aus einer Reihe grün/blau
  3. g2w = Korrekturwert für grüne Pixel aus einer Reihe grün/rot
  4. bw  = Korrekturwert für blaue Pixel
Leider berücksichtig dieses Programm nicht, welche Farbe in der linken oberen Ecke des Bildes ist. Es nimmt immer einen Blaupixel dort an. Man muß die Ergebniswerte dementsprechend vertauschen:

Pixelfarbe links oben (0,0)
rw ->
g1w ->
g2w ->
bw ->
blauer Punkt
keine Vertauschung nötig
grüner Punkt aus einer Reihe grün/blau
g2w
bw
rw
g1w
grüner Punkt aus einer Reihe grün/rot
g1w
rw
bw
g2w
roter Punkt
bw
g2w
g1w
rw
(berechneter Durschnitt -> Eingabe für die Farberzeugung)

Beispiel: Die verwendete Kamera habe einen Rotpixel auf Position (0,0). Dementsprechend wird der berechnete Rotwert (rw) bei der Erzeugung von Farbbildern als Blauwert (bw) verwendet. Der von averageColor ermittelte g1-Wert wird zum g2-Wert usw.
Im Anschluß müssen die berechneten Werte vor der Benutzung noch auf 255 normiert werden. Der größte Wert sollte danach also exakt 255 sein.

Erzeugen von Farbbildern

bin/tiffs2color.sh dient zum Umwandeln einer Serie von Graubildern in Farbbilder. Nach den Parametern für die Farbkorrektur (rw g1w g2w bw), die mit averageColor (s.o.) berechnet werden, gibt es noch "position". position gibt an, welche Farbe der Punkt in der linken oberen Ecke des Bildes hat (x=0, y=0):
b  = blauer Punkt
gb = grüner Punkt aus der Reihe grün/blau
gr = grüner Punkt aus der Reihe grün/rot
r  = roter Punkt
Optional als letzten Parameter kann man (wenn vorhanden) das Bild mit den Schwarzwerten angeben. Man startet das Programm in dem Verzeichnis, wo die Graubilder (als Tiffs) liegen. Die Farbbilder liegen anschließend im neu angelegten Unterverzeichnis "ColoredPix". Fertig!

(Thomas Weiss, letzte Änderung: 18.6.2003)