Diese Seite beschreibt, wie mit Hilfe der digitalen Framegrabber Matrox Meteor II/Dig unter Windows NT 4.0SP6 Einzelbilder, Bildserien oder 3 zeitlich synchronisierte Bildserien aufgenommen werden können. Wir besitzen insgesamt 3 gleiche Framegrabber, die jeder für sich in einen eigenen PC eingebaut sind. Alle drei Framegrabber verfügen über einen LVDS (Low Voltage Differential Signaling) Anschluss; dieser wird mitunter auch als Camera-Link bezeichnet. Zusammen mit den Framegrabbern haben wir 3 Kameras der Firma The Imaging Source erworben; zwei RGB (Bayer-Filter) Kameras des Typs DFD-5013-HS, und eine monochrome Kamera DMD-5013-HS - bis auf das Bayer-Filter vor dem CCD-Chip sind beide Kameras identisch, aus Sicht des Framegrabbers besteht überhaupt kein Unterschied. Im folgenden wird das Vorgehen vom Anschluss der Kamera bis zur fertigen Bildfolge beschrieben.

Kamera anschließen

Vor (und hoffentlich auch wieder nach) der Benutzung liegen die Kameras im linken Stahlschrank (Nummer 5) in Raum 131. Außer den Kameras werden von dort auch ein Objektiv pro Kamera (C-Mount) sowie das Netzteil der Kamera benötigt.

Jede Kamera verfügt über insgesamt 3 Anschlüsse, einen LVDS-Anschluss, einen 3-poligen Anschluss zur Stromversorgung (nur zwei Anschlüsse sind belegt) und einen seriellen Anschluss in Form eines RJ45-Steckers. Bei den ersten beiden besteht keinerlei Verwechslungsgefahr, man sollte jedoch sicherstellen, dass man statt des seriellen Anschlusses nicht aus Versehen ein Netzwerk-Kabel mit der Kamera verbindet.

Kamera einstellen

Um die Kameras einzustellen, steht auf dem Windows Desktop das Programm DxD Control.exe zur Verfügung. Hiermit lassen sich verschiedene Parameter der Kamera, unter anderem die Belichtungszeit, einstellen. Damit man den Effekt der Einstellungen sofort am laufenden Bild beobachten kann ist es ratsam, auch das weiter unten beschriebene Programm Intellicam laufen zu lassen.

Live Preview und Einzelbilder grabben

Mit Hilfe des Programms intellicam.exe kann man in Form einer Live-Preview die aktuellen Bilder von der Kamera betrachten. Dies lässt sich z.B. nutzen, um mit Hilfe des Blendenringes am Objektiv und der Einstellung der Belichtungszeit über das Programm DxD Control.exe die Belichtung der Aufnahmen zu kontrollieren. Darüber hinaus ist es möglich, einzelne Aufnahmen auf Festplatte zu speichern. Im einzelnen ist hierzu wie folgt vorzugehen:

Kontinuierlich grabben

Jeder der 3 Rechner ist mit zwei rund 55GB großen Festplatten ausgestattet. Aufgrund der unterschiedlichen Zugriffszeiten von Festplatten in Abhängigkeit vom Sektor lassen sich hiervon jedoch nur 30GB pro Platte (insgesamt also 60GB pro Rechner) für Grabs mit der vollen Geschwindigkeit von maximal 40 (38) Frames pro Sekunde nutzen. Hiermit ist es im Prinzip möglich, bis zu 32 Minuten kontinuierlich zu grabben. Da erst einmal alle Bilder in zwei große Dateien gegrabbt werden (abwechselnd, auf den Laufwerken d:\ und e:\) liegt das Limit zur zeit jedoch erst einmal bei der unter NT maximalen Dateigröße von 4GB pro Datei, hieraus ergeben sich maximale Sequenzen von rund 10.000 Bildern Länge, entsprechend etwas über 4 Minuten. Diese Restriktion ist im Prinzip leicht zu umgehen, zur Zeit ist dies jedoch noch nicht implementiert. Ebenfalls leicht zu realisieren, aber zur Zeit nicht implementiert ist ein Programm, welches direkt unter Windows die einzelnen Bilder aus diesen Dateien extrahieren kann; zur Zeit ist ein Umweg über Unix unumgänglich.

Gestartet wird ein Grab zur Zeit über das Programm Sequence.exe. Hierbei handelt es sich um ein recht minimalistisches DOS-Programm, welches einem die Möglichkeit bietet, einige Grundlegende Parameter zu setzen. Wer nicht genau weiß, was er tut (also niemand) sollte nur die Parameter 2) Number of Frames to grab: und 7) Trigger setzen; bei letzterem handelt es sich um eine Auswahl zwischen zwei verschiedenen Kamerabeschreibungsdateien. In einem Fall läuft die Kamera frei mit 38 Bildern pro Sekunde, im anderen Fall wird ein TTL-kompatibles Signal am Trigger-Eingang des Framegrabbers erwartet. Um ein derartiges Signal zu erzeugen ist es im Moment nötig, einen Funktionsgenerator in einem der Nachbar-Arbeitsbereiche auszuleihen (z.B. bei Martin Borchers von tis), ich arbeite jedoch an einem Rechteck-Generator (auch hier gilt: im Prinzip einfach, aber noch nicht umgesetzt).

Nachdem alle Einstellungen vorgenommen wurden, wird nach Auswahl des Menu-Punktes 0 die Initialisierung aller Variablen gestartet. Zu diesem zeitpunkt werden auch bereits die Dateien geöffnet. Sobald dies abgeschlossen ist, wird der User aufgefordert, noch einmal RETURN zu drücken, und erst dann startet der Grab. Um Grabs von allen 3 Kameras gleichzeitig zu starten ist es nötig, entweder alle drei RETURN-Tasten gleichzeitig zu drücken (kaum realisierbar), oder aber das Triggersignal erst dann zu starten, wenn auf allen 3 Rechnern RETURN gedrückt wurde - man hat hierfür einige Sekunden Zeit, bevor es zu einem Timeout kommt. Alternativ kann man durch einen Foto-Blitz ein Bild in allen drei Serien markieren.

Während ein Grab läuft erscheinen auf dem Bildschirm relativ kryptische Statusausgaben. Mitunter bricht ein extern getriggerter Grab verfrüht ab. Die Ursache hierfür ist mir noch nicht recht klar, vermutlich handelt es sich um ein Hardware-Problem. Hier hilft dann nur, den Grab neu zu starten, so ärgerlich dies auch sein mag. Frei laufende Grabs haben dieses Problem nicht, allerdings sind dann natürlich die drei Kameras nicht synchronisiert.

Ach ja, wer sich (z.B. während meiner Abwesenheit) selber einmal am Source versuchen will: /home/utcke/tis/Utcke/hook-test/*.

Nachdem die beiden Teilfolgen gegrabbt wurden gilt es nun, diese in Einzelbilder zu verwandeln und richtig ineinander zu sortieren. Hierfür müssen zuerst einmal die beiden Dateien d:\test.raw und e:\test.raw auf einen Unix-Rechner kopiert werden, am besten mit WinSCP2.exe. Im folgenden gehe ich davon aus, dass die Dateien nach dem kopieren in kogs2:/data/kogs2/scratch/testd.raw und kogs2:/data/kogs2/scratch/teste.raw stehen. Dann lässt sich mit den folgenden Kommandos eine korrekt sortierte Serie von Einzelbildern erzeugen:

kogs2>/data/kogs2/scratch% module add imagemagick
kogs2>/data/kogs2/scratch% split -b 779k -a 4 testd.raw testd
kogs2>/data/kogs2/scratch% rm testd.raw 
kogs2>/data/kogs2/scratch% foreach i (testd*)
foreach? echo $i
foreach? convert -depth8 -size 1024x779 gray:$i $i.tiff
foreach? \rm $i
foreach? end
kogs2>/data/kogs2/scratch% ~utcke/bin/mmv "testd*.tiff" "test*d.tiff"

kogs2>/data/kogs2/scratch% split -b 779k -a 4 teste.raw testd
kogs2>/data/kogs2/scratch% rm teste.raw 
kogs2>/data/kogs2/scratch% foreach i (teste*)
foreach? echo $i
foreach? convert -depth8 -size 1024x779 gray:$i $i.tiff
foreach? \rm $i
foreach? end
kogs2>/data/kogs2/scratch% ~utcke/bin/mmv "teste*.tiff" "test*e.tiff"
  

Wer sich nicht ganz sicher ist, dass die obigen Zeilen tun, was er möchte, tut eventuell gut daran, die Zeilen mit dem rm wegzulassen. Yildirim Karal hat das ganze in ein kleines Skript convert.tcsh gegossen, welches man stattdessen benutzen kann.

TODO

Folgende Arbeitserleichterungen sind für die Zukunft geplant, jedoch noch nicht umgesetzt:
- Ein Rechteckgenerator zur Erzeugung des Triggersignals, zuerst einmal ganz simpel mit einem Drehknopf zur Wahl der Frequenz und einem Schalter, um das Signal an oder aus zu schalten; nur wenn ich viel Zeit haben sollte kommt eventuell eine 7-Segment Anzeige der Frequenz und ein eigenes Netzteil hinzu.
- Eine Routine, die es erlaubt, unter Windows die Sequenzen zu entpacken.
- Die Möglichkeit, bis zu 60GB (entsprechend 35 Minuten) lange Aufnahmen zu machen - wenngleich ich nicht wüßte, wo und wie man die weiterverarbeiten will...


[Valid HTML 4.0!] [Bobby Approved (v 3.1)]

Sven Utcke
last modified: 9-Aug-2002