Individuelles Processing

Field Programmable Gate Arrays (FPGA) sind aus vielen Produkten der Bildverarbeitung, insbesondere aus Kameras, kaum noch wegzudenken. In der Regel übernehmen sie nur die Funktion des Interfacing, z.B. zur Ansteuerung des CCD-Bildsensors. Nach und nach statten die Kamerahersteller nun ihre Geräte mit zusätzlichen Funktionen wie Rauschfilterung, Bayer-Farbumrechnung, Weißabgleich oder auch Gammakorrektur aus. Dabei handelt es sich um Funktionen, die meist ebenfalls in einem FPGA als feste, für den Anwender bestenfalls in den Parametern veränderbare Funktionsblöcke integriert sind. Sentech (Sensor Technologies) geht einen Schritt weiter und bietet eine Serie von GigE-Kameras mit einem zweiten, für den Anwender völlig frei zugänglichen FPGA-Baustein an, der mit beliebigen, kunden- und anwendungsspezifischen Funktionen belegt werden kann. Ein FPGA ist ein integrierter Schaltkreis der Digitaltechnik, in den logische Schaltungen programmiert werden können. Der Begriff Programmierung ist in diesem Zusammenhang anders zu verstehen, als bei der Erstellung von Software für einen Prozessor: In einem FPGA werden Schaltungsstrukturen mittels einer Hardwarebeschreibungssprache erstellt. Der daraus entstandene Code ähnelt nur auf den ersten Blick dem Code aus einer Programmiersprache für Prozessoren. In der neuen Kamerafamilie kommt ein Xilinx Spartan-3 FPGA vom Typ XC3SD1800A zum Einsatz, dem für die Konfiguration ein ROM mit 8Mbit Speicherkapazität zur Seite steht. Der FPGA ist im Auslieferungszustand ungenutzt und steht dem Anwender im vollen Umfang zur Verfügung. Darüber hinaus gibt es einen 32MByte DDR2 Speicher, der z.B. für das Zwischenspeichern von Bilddaten genutzt werden kann. Aus- und Einkoppeln von Bilddaten Die analogen Signale vom CCD-Sensor werden im A/D-Wandler digitalisiert und zum \’Sentech-FPGA\‘ übertragen. Bleibt das benutzerspezifische FPGA ungenutzt, so durchlaufen die Daten der Reihe nach die Stufen für den Weißabgleich, für die Gammaverarbeitung und, bei Farbkameras, für die Einheit der Farbumrechnung. Von dort aus gelangt das so aufbereitete Bildsignal zur GigE-Schnittstelle nach draußen. Der FPGA-Programmierer hat nun die Möglichkeit, die Bilddaten an verschiedenen Stellen für sein eigenes, weiteres Processing auszukoppeln. Er kann dabei direkt auf die Rohdaten nach dem A/D-Wandler oder nach einer der beiden Stufen, dem Weißabgleich oder der Gammaverarbeitung, zugreifen. So steht es ihm frei zu entscheiden, ob er die bereits implementierten Funktionen nutzen oder ob er sie gemäß seiner Anforderungen selbst programmieren möchte. Das Wiedereinkoppeln der im User-FPGA verarbeiteten Bilddaten kann an einer dieser drei Stellen in das Sentech-FPGA erfolgen. Das Debuggen des eigenen FPGA-Programmcodes geschieht über eine JTAG-Schnittstelle. Zweck des Verfahrens ist es, das FPGA auf korrekte Funktion zu testen, während es sich bereits in der Arbeitsumgebung befindet. Fundiertes Fachwissen erforderlich Die Funktionen, die in das benutzerspezifische FPGA implementiert werden können, sind vielfältig. Neben reinen Einzelbildmanipulationen, wie z.B. Rauschunterdrückung, Farbraumkonvertierung oder Farb- und Bildmanipulationen, können auch Bildvergleiche und -analysen stattfinden. Die Ergebnisse dieser Analysen, also im einfachsten Falle eine gut/schlecht-Entscheidung, werden über insgesamt fünf optisch gekoppelte Ausgangsleitungen ausgegeben. Drei ebenfalls optisch gekoppelte Eingänge stehen u.a. für externe Triggersignale zur Verfügung. Da ein FPGA im Gegensatz zu einem Mikroprozessor reine Hardwarelogik darstellt, erfolgt das Processing quasi in Echtzeit. Die Kameras der PowerPlus-Serie sind daher nicht mit Smart Kameras zu verwechseln, in denen ein Prozessor für die Bildverarbeitungsaufgaben eingesetzt wird. Das Programmieren eines FPGA ist allerdings nicht trivial: Es muss ein fundiertes Fachwissen vorliegen, um zu brauchbaren Ergebnissen zu kommen.