Anspruchsvolle Bildverarbeitung: Mit GigE-Vision zu High-End-Vision-Systemen

Der Standard GigE-Vision basiert auf Gigabit-Ethernet und bietet eine maximale Transferleistung von ca. 125MBit/s. Die Ethernet-Technologie bietet Vorteile wie Kabelstrecken bis 100m ohne den Einsatz von Repeatern/ Hubs, die Verwendung kostengünstiger Netzwerkkomponenten (z.B. Cat5e-/Cat6-Netz­werk­leitungen, Switches usw.), zahlreiche Möglichkeiten der Infrastruktur-Topologie. GigE-Vision ist zwar eine junge Kameraschnittstelle, da sie aber von allen namhaften Hard- und Softwareherstellern getragen wird, konnte sie sich bereits vielfach in echten Anwendungen im Feld beweisen. GigE-Vision spielt seine Vorteile häufig in Mehr-Kamera-Anwendungen aus, die über Switches oder Multi-Port-Netzwerkkarten einfach aufgebaut werden können. Mit anderen Schnittstellen wäre hier ein höherer Hardware-Aufwand zu betreiben. Protokollbasiertes Interface – Probleme und Linderung Im Gegensatz zu klassischen Schnittstellen wie CameraLink ist GigE-Vision ein protokollbasierendes Interface, sodass der Host-PC das Protokollhandling übernehmen muss. Jede Kamera schickt die Bilddaten in Form einzelner Ethernetpakete über einen UDP-Channel. Es ist nun Aufgabe des GigE-Vision-Treibers, Header und Trailer der einzelnen Ethernetpakete zu analysieren und die effektiven Bilddaten an entsprechende Speicherstellen im Host-PC zu schreiben. Erst dann sind die Bilddaten in einem für Bildverarbeitungs-Algorithmen geeigneten Format vorhanden. Dieser Vorgang wird als Bildrekonstruktion bezeichnet und kann nicht von Standard-Ethernetkarten durchgeführt werden. Für den reinen Empfang der Ethernetpakete müssen bereits viele Interrupts verarbeitet werden, und die Bildrekonstruktion verbraucht zusätzlich CPU-Zeit. Diese Problematik kann gelindert werden, indem sogenannte Jumbo-Frames verwendet werden. Dazu sendet man größere UDP-Pakete und erhöht damit die Nutzlast pro Paket. Auch die Interrupt-Moderation auf der Netzwerkkarte reduziert dieses Problem, da die Interrupt-Generierung beim Paketempfang gedrosselt wird. Vollständig abgestellt wird der Verbrauch von Host-PC-Ressourcen damit aber nicht. Die hohe Datenlast in Multi-Kamera-Anwendungen verschärft diese Situation. High-Performance Hardware: Onboard-Protokollhandling Hier liegt der Ansatz von spezialisierter GigE-Vision-Hardware, wie z.B. Matrox Solios GigE. Auf den ersten Blick handelt es sich um ein Quad-Port-Nic mit vier unabhängigen GigE-Ports, die jeweils die volle Bandbreite von 125MBit/s bieten. Im Gegensatz zu Standard-Netzwerkkarten ist das Highlight auf der Solios GigE der Bridge-FPGA: Er beinhaltet eine komplette Protocol Off­load Engine (POE) für alle vier Ports und übernimmt damit das gesamte Protokollhandling (Bild 2). Das Board setzt aus allen eingehenden UDP-Paketen das vollständige Bild zusammen und transferiert dieses wie ein Standard CameraLink-Framegrabber zum Host-PC. Sind die Bilddaten nach dem Direct Memory Access (DMA)-Transfer (der keine CPU-Intervention erfordert) im Speicher, wird ein Interrupt ausgelöst, um der Applikationssoftware mitzuteilen, dass ein neuer Frame zur Verarbeitung ansteht. Im Gegensatz zu Standard-Netzwerkkarten benötigt also kein Treiber CPU-Ressourcen, um das Bild zu rekonstruieren, und die Anzahl der Interrupts wird deutlich gesenkt. Damit können andere Prozesse unterbrechungsfrei und mit deutlich weniger Latenz auf dem PC arbeiten. Die Protocol Offload Engine von Matrox Solios GigE entlastet den Host. Auf einem PC mit Intel Core-2-Duo-2,13GHz-CPU wer­den gleichzeitig Bilddaten von vier GigE-Vision-Kameras kontinuierlich mit einem Datenvolumen von 382MBit/s eingezogen. Alle Optimierungen sind aktiv (Jumbo-Frames und Interrupt-Drosselung). Arbeitet man auf einer Intel Pro/1000 Nic mit einem Standard GigE-Filtertreiber, fallen für den Bildeinzug in etwa 13% Last an. Das gleiche Szenario führt bei Verwendung einer Solios GigE nur noch zu einer CPU-Last von 4% (Bild 3). Nur absolute CPU-Lasten eines PCs zu betrachten, der durch keine weiteren Prozesse außer dem Bildeinzug belastet wird, ist jedoch nicht allzu aussagekräftig. Realistischer ist es, die Performance echter Bildverarbeitungs-Algorithmen parallel zum GigE Vision-Bildeinzug zu messen. Ein laufender Algorithmus wird immer wieder durch das Handling der eingehenden Pakete innerhalb des GigE-Treibers unterbrochen. Hier zeigt sich ein deutlicheres Bild des Performanceunterschieds. Während also kontinuierlich 382MBit/s von vier Kameras eingezogen werden, laufen verschiedene Bildverarbeitungs-Algorithmen, deren Dauer gemessen wird. Aufgrund des vollständigen Protocol Offloading der Hardware zeigen alle Funktionen große Geschwindigkeitsunterschiede (Bild 4). Gerade in Applikationen, die hohe Anforderungen an Performance stellen und gleichzeitig mit geringer Latenz arbeiten müssen, kommen die Vorteile einer Spezialhardware wie Solios GigE zum Tragen. User-Ein/Ausgänge und frei programmierbares FPGA Das Board verfügt über frei programmierbare User-Ein/ Ausgänge für die direkte Kommunikation mit externen Geräten. Die Ein-/Ausgänge auf GigE-Vision-Kameras haben eine deutlich größere Latenz, da zum Schalten des Signals ein Ethernet-Paket über die gesamte Infrastruktur hinweg gesendet werden muss. Gerade bei Verwendung aktiver Netzwerkkomponenten wie Switches kann nicht genau vorhergesagt werden, wann das Paket auf der Kamera eintrifft. Damit ist der Zeitpunkt eines Ausgangssignals (z.B. Gut/Schlecht) nicht deterministisch bestimmt. Zusätzlich kann genau wie auf den anderen Framegrabbern der Solios-Familie für CameraLink und analoge Kameras optional ein frei programmierbares FPGA integriert werden. Dieses FPGA unterstützt die Bildverarbeitungsanwendung entweder mit von Matrox entwickelten Funktionen und Konfigurationen oder kann mit dem Matrox-FPGA-Developer´s Toolkit (FDK) frei programmiert werden. Damit übernimmt das Solios GigE Board nicht nur vollständig die Erfassung und Bildrekonstruktion der Bilddaten, sondern auch deren Vorverarbeitung. Hohe Performance für die Bildverarbeitung Drei spezialisierte Merkmale beschleunigen anspruchsvolle GigE-Vision-Anwendungen: die Protocol Offload Engine entlastet die CPU vom gesamten Protokollhandling. Die Latenz des Gesamtsystems wird durch das Übertragen des vollständig rekonstruierten Bildes über den Bus und die On­board-User-E/As reduziert. Ein zusätzlicher FPGA kann Vorverarbeitungsaufgaben übernehmen, um den Rechenaufwand auf dem Host-PC zu reduzieren. Diese drei Kernmerkmale einer GigE-Vision-Spezialhardware wie Matrox Solios GigE führen zu leistungsfähigen GigE-Vision-Systemen.