Jetzt auch in der App!

Das Handbuch der Bildverarbeitung Mehr

Erweitern Sie Ihr Bildverarbeitungs Know-how

BESSER MEHR WISSEN

Profitieren Sie von der Erfahrung unserer Experten

Vision Docs - das neue Handbuch ist da

DAS NACHSCHLAGEWERK

FÜR BILDVERARBEITER

Holen Sie sich das aktuelle Handbuch! Mehr

Bildverarbeitung auf der Grafikkarte: GPU schlägt CPU

Es gibt viele Wege, die Verarbeitungsgeschwindigkeiten in der Bildverarbeitung zu steigern. In der neuesten Version von Common Vision Blox hat STEMMER IMAGING eine neue Möglichkeit erschlossen: Teile der Verarbeitung können auf die Grafikkarte des PC-Systems ausgelagert werden, was die Bildverarbeitungs- Geschwindigkeit um bis zu Faktor 10 steigert.

Die Abarbeitung von Bildverarbeitungs-Algorithmen ist meist sehr rechenaufwändig. In vielen Fällen reicht die laufend zunehmende Performance der in leistungsfähigen PCs eingesetzten CPUs jedoch aus, um die Aufgaben in der vorgegebenen Zeit zu bewältigen. Dennoch sind die führenden Hersteller von Hard- und Software für die Bildverarbeitung ständig auf der Suche nach neuen, noch schnelleren Wegen, um sich auch für solche Geschwindigkeits-Anforderungen zu rüsten, die derzeit noch unerreichbar scheinen.

Zu den üblichen Methoden der Geschwindigkeitssteigerung in der Bildverarbeitung zählen die Verteilung der Rechenaufgaben auf mehrere Dual- und Quad-Prozessoren oder auch der Einsatz von spezialisierten FPGAs. Jede dieser Technologien hat ihre Vor- und Nachteile, doch eines ist allen gemeinsam: Sie nutzen nicht den in der Regel schnellsten vorhandenen Prozessor im System, um die Bildverarbeitungs-Algorithmen abzuarbeiten: den Grafik- Prozessor der Grafikkarte, auch bekannt als GPU (Graphical Processing Unit).

Diese Rennmaschinen unter den Prozessoren haben in der Vergangenheit eine unglaubliche Entwicklung hinter sich gebracht. Getrieben wurde dies vor allem durch die Spiele-Industrie, wo die Anforderungen an die grafische Darstellung von Spielszenen und Bewegungen sehr stark zugenommen haben. Millionenfach verkaufte Spielekonsolen sorgten für die nötige Nachfrage und hohe Stückzahlen sowie die zugehörigen Gewinne, um die Entwicklung der Grafik-Bausteine weiter voranzutreiben. Davon profitieren nun auch andere Industriezweige wie z.B. die Bildverarbeitung.

Den technischen Vergleich selbst mit den schnellsten am Markt verfügbaren, in der Bildverarbeitung eingesetzten FPGAs entscheiden Grafik-Prozessoren in einigen Kriterien eindeutig für sich (siehe Tabelle). So sind sie um Faktoren im Bereich von 10 bis 20 höher getaktet als übliche FPGAs und erreichen so in Verbindung mit den größeren Speichermöglichkeiten Datendurchsätze, die bis zu 500 mal höher sein können als bei üblichen FPGAs.

Dieser Geschwindigkeitszuwachs steht dem Bildverarbeitungs-Anwender jedoch nicht komplett zur Verfügung: Die Auslagerung der Algorithmik auf den GPU- Baustein führt zu einer Verzögerung des Datenstroms von der Bildaufnahme bis zur Verarbeitung der Daten. Trotz dieses Effekts sprechen verschiedene Untersuchungen bei rechenintensiven Operationen von einem Performance-Zuwachs um den Faktor 2 bis 10 beim Einsatz der GPU statt der CPU, wobei diese dann zudem parallel für andere Aufgaben genutzt werden kann.

Dass diese Technologie erst seit Kurzem für die Bildverarbeitung nutzbar ist, hat zwei wesentliche Gründe. Zum einen waren Grafikkarten bis vor kurzer Zeit mit mehreren Prozessoren für verschiedene Aufgaben bestückt. Mit der Neuentwicklung von Grafik-Prozessoren wie z.B. dem GeForce 8800 von Nvidia oder ähnlichen Produkten z.B. des Herstellers ATI hat sich dies geändert: Ein Teil der 681 Millionen Transistoren des GeForce 8800-Prozessors kann dynamisch für Operationen wie Geometrie- oder Pixel-Berechnungen genutzt werden. Zum anderen erlaubt die PCIe-Anbindung einen schnellen Datentransfer zwischen Host und VGA-Karte.
„Die Architektur eines Grafik-Bausteins ist immer sehr komplex“, erklärt Martin Kersting, Leiter der Entwicklung bei STEMMER IMAGING. „Die DirectX-API und der High Level Shader Language (HLSL)-Compiler von Microsoft zusammen mit einer Handvoll Funktionen in unserer Software-Bibliothek Common Vision Blox versetzt Entwickler von Bildverarbeitungs-Software jedoch in die Lage, Bilder zwischen Host und GPU auszutauschen und somit alle Prozessoren im System optimal zu nutzen."

Wie bereits angesprochen verursacht der Datenaustausch zwischen VGA-Karte und GPU eine gewisse Verzögerung zwischen der Bildaufnahme und der Verarbeitung der Daten auf der Grafikkarte. „Die geschickte Nutzung der GPU- Bildverarbeitung kann dennoch dazu führen, dass man selbst bei Anwendungen mit extrem hohem Datendurchsatz ohne Spezial-Hardware auskommt“, beschreibt Kersting den Vorteil der Technologie.

Um dem Bildverarbeitungs-Entwickler die Vorteile der GPU-Bildverarbeitung auf möglichst effektive Weise zu erschließen, haben die Entwickler des Puchheimer Bildverarbeitungs-Spezialisten STEMMER IMAGING diese Möglichkeit nun in die Software-Bibliothek Common Vision Blox (CVB) des Unternehmens integriert. „Wir haben dazu einige neue Funktionen in CVB aufgenommen, die aus einer CVB- Applikation heraus aufgerufen werden können“, so Kersting.

Derzeit umfassen diese Funktionen unter anderem Aufgaben wie die Bildfilterung, Punkt-Operationen zwischen zwei Bildern, die Parallelverarbeitung von vier Monochrom-Bildern, Transformationen vom RGB- ins HSI- sowie vom Bayer- ins RGB-Format, so genannte Flat Field-Korrekturen sowie Bild-Rotationen und -Skalierungen. Zur Optimierung der Bilddatentransfers zwischen Hauptspeicher und GPU können auch mehrere Algorithmen durch die freie Programmierung über die HLSL-Sprache direkt in der Grafikkarte kombiniert werden.

Welcher Geschwindigkeitszuwachs mit der neuen Technologie möglich ist, haben Kersting und sein Team inzwischen mehrfach getestet. So wurden Bilder z.B. von einer monochromen CCIR-Kamera vom Typ JAI A11 an einem PC-basierten System mit einer Nvidia 8800 Grafikkarte auf die Größe von 2k x 2k Pixel umgerechnet und auf dem PC-Monitor angezeigt. Gleichzeitig rechnete der Grafik-Prozessor mit 30 Bildern/Sekunde einen 3 x 3 Sobel-Filter auf dem Bild. Im direkten Vergleich zwischen einem 2,4 GHz Intel Core 2 Duo-Prozessor und der Nvidia 8800 rechneten beide Aufbauten einen 5 x 5-Filter.

Das Ergebnis zeigt in beeindruckender Weise die Möglichkeiten, die Common Vision Blox in Zusammenarbeit mit der neuen GPU-Technologie eröffnet: Die Nvidia 8800 war rund fünf mal schneller (siehe Bild 2).

Bild 2: Im direkten Vergleich zwischen einem 2,4 GHz Intel Core 2 Duo- Prozessor und einer Nvidia 8800-Grafikkarte erledigte die GPU die Bildverarbeitungs-Aufgabe rund fünf mal schneller.