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:
- Etwas rotes wird so plaziert, daß es links oben im Bild
liegt.
- Ein Einzelbild machen.
- 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:
- rw = Korrekturwert für rote Pixel
- g1w = Korrekturwert für grüne Pixel aus einer Reihe
grün/blau
- g2w = Korrekturwert für grüne Pixel aus einer Reihe
grün/rot
- 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)