Digitale Bildverarbeitung mit Linux spielt auch in Wissenschaft und Forschung eine immer größere Rolle. Am Institut FORWISS der Universität Passau [1] entwickelten Mitglieder des Forschungsprojekts FORSIP/SIKOWO [2] ein System zur Gerätefernbedienung unter Linux.
Das Team setzte sich zum Ziel, die Mensch-Maschine-Schnittstelle in typischen Sitzungssituationen mit Kurzvorträgen zu verbessern. Der Referent soll sich ganz auf seinen Vortrag konzentrieren und die elektronischen Einrichtungen wie Lampen, Jalousien oder Projektoren durch bloße Zeigegesten bedienen können, ohne an unbekannten Regelungskonsolen herumhantieren zu müssen.
Eine gute Verbindung
Die technischen Geräte waren über das Haus-Bus-System KNX/EIB [3] mit einem Linux-PC verbunden. An der Decke befanden sich zwei Indus-trievideokameras im Abstand von ungefähr drei Metern im Raum, sodass sich der Vortragende etwa zwei Meter in der Tiefe bewegen konnte, ohne aus dem vollen Sichtbarkeitsbereich herauszulaufen (Abbildung 1).
Abbildung 1: Szene von oben: Zwei Kameras mit überlappenden Sichtbarkeitsbereichen, eine Person, vier Zeigeziele (dunkle Kreise) und die lokalen Koordinatensysteme (rot).
Die Kameras kommunizierten über ihre Firewire-Schnittstellen (IEEE 1394) mit dem Linux-Rechner. Diese Anschlusstechnik ist neben USB und neuerdings auch Gigabit-Ethernet etabliert. Sowohl für Firewire als auch für Ethernet existieren im Gegensatz zu USB Standards, an die sich die meisten Hersteller halten. Kameras mit analogem Ausgangssignal und einer Cameralink-Schnittstelle benötigen eine separate Framegrabber-Karte.
Für die meisten dieser Karten und auch für Kameras mit USB-Schnittstelle existieren proprietäre Linux-Treiber. Diese hinken jedoch in Bezug auf Aktualität meist den Windows-Pendants hinterher. Anders sieht es für die Firewire-Variante aus. Das Open-Source-Projekt Libdc1394 [4] setzt seit Juli 2000 die IIDC/DCAM-Spezifikation für die IEEE-1394-Schnittstelle unter Linux um. Mittlerweile unterstützt die Bibliothek in der Version 2 alle gängigen Firewire-Kameras nativ unter Linux, das Ansprechen einiger herstellerspezifischer Features ist aber manchmal nur durch Setzen von Registern möglich.
Die neueste und vielversprechendste Verbindungsmöglichkeit zwischen Kamera und Rechner bietet Gigabit-Ethernet. Im eigens dafür entwickelten GigE-Vision-Standard [5] steht für jede Kamera eine XML-Beschreibungsdatei mit den Geräteeigenschaften zur Verfügung. Das Format der XML-Datei, den Transport-Layer und die Programmierer-API definiert der Genicam-Standard [6]. Dieser ist so allgemein gehalten, dass er in Zukunft neben Ethernet- auch Firewire- und USB-Kameras ansteuern kann. Leider bieten viele GigE-Vision-Kamerahersteller allerdings nur Treiber mit eigener API für Windows und Linux an, mit der man, gegen Aufpreis, ebenso Fremdherstellerkameras betreiben kann.
Im Auge des Betrachters
Bei einem solchen Stereosetup erscheint die zu beobachtende Person im linken Kamerabild aus einer anderen Perspektive als im rechten Bild. Ist etwa die Position der Nase bekannt, lassen sich in beiden Bildern die dreidimensionalen Koordinaten der Nase im Raum berechnen. Voraussetzung dafür ist eine so genannte Systemkalibrierung, das heißt die Kali-brierung der einzelnen Kameras und die Bestimmung der Positionen der Kameras zueinander.
Eine entsprechende Bildverarbeitungs-Bibliothek stellt sowohl Funktionen für die Einzel- als auch für die Stereokamerasystem-Kalibrierung bereit. Die Passauer Wissenschaftler setzten auf eine eigene Implementierung. Als Alternative bietet sich aber auch OpenCV [7] an, die wohl umfangreichste und beliebteste quelloffene Library. Sie wurde von Intel entwickelt und steht unter einer BSD-Lizenz zur Verfügung.
Zur Kalibrierung verwendeten die Projektmitglieder eine Platte, von denen sie die genauen Maße der aufgedruckten Muster kannten. Nach dem Abschluss der Systemkalibrierung war es möglich, für jeden Punkt im aufgenommenen Bild einen Sichtstrahl bezüglich eines Referenz-Koordinatensystems zu berechnen. Die Mitarbeiter brachten die Kalibrierplatte an den technischen Geräten an und ermittelten korrespondierende Punkte in einem Bilderpaar. Anschließend bestimmten sie aus den beiden Sichtstrahlen deren dreidimensionale Koordinaten der als Quader modellierten Geräte, also der Zeigeziele (Abbildung 2).
Abbildung 2: Virtuelle Szene aus Sicht der linken und rechten Kamera: Die Person zeigt auf das rot markierte Objekt. Weitere Zeigeziele sind die Stablampe, der Ventilator und das Flipchart.