DE10242087A1 - Bildverarbeitung auf für Vektorrechnung und Farbmischung optimierter Hardware - Google Patents

Bildverarbeitung auf für Vektorrechnung und Farbmischung optimierter Hardware Download PDF

Info

Publication number
DE10242087A1
DE10242087A1 DE2002142087 DE10242087A DE10242087A1 DE 10242087 A1 DE10242087 A1 DE 10242087A1 DE 2002142087 DE2002142087 DE 2002142087 DE 10242087 A DE10242087 A DE 10242087A DE 10242087 A1 DE10242087 A1 DE 10242087A1
Authority
DE
Germany
Prior art keywords
gpu
image
image data
processing
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE2002142087
Other languages
English (en)
Inventor
Uwe Dr.-Ing. Franke
Pascal Paysan
Fridtjof Dr.rer.nat. Stein
Alexander Dipl.-Phys. Würz-Wessel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Daimler AG
Original Assignee
DaimlerChrysler AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DaimlerChrysler AG filed Critical DaimlerChrysler AG
Priority to DE2002142087 priority Critical patent/DE10242087A1/de
Priority to AU2003267334A priority patent/AU2003267334A1/en
Priority to PCT/EP2003/010030 priority patent/WO2004027707A2/de
Publication of DE10242087A1 publication Critical patent/DE10242087A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Processing (AREA)

Abstract

Algorithmen zur Bearbeitung von digitalisierten Bildern (digital aufgenommen beispielsweise durch digitale CCD- oder CMOS-Kameras, oder analog aufgenommen durch analoge CCD-Kameras und anschließend in Analog-Digital-Wandlern konvertiert) und der darin enthaltenen Informationen sind je nach Anwendung extrem rechenaufwendig. DOLLAR A Auf Vektorrechnung und Farbmischung spezialisierte Computer-Hardware sogenannte Graphical Processing Units GPU (z. B. sog. 3-D-beschleunigte Grafikkarten, vorzugsweise mit hardwareseitig implementiertem OpenGL- und/oder Direct-X-Standard), die vornehmlich für die Unterhaltungselektronik (Computerspiele und -animation) oder die Darstellung von 3-dimensionalen Konstruktionen (CAD) entwickelt wurde, beinhalten Realisierungen von Bildverarbeitungsalgorithmik auf Basis der Halbleitertechnik. Durch die erfinderische Implementierung einer solchen Hardware als wesentlicher Teil der Bildverarbeitung, kann eine für eine Echtzeit-Bildverarbeitung notwendige Rechnerleistung wirtschaftlich sinnvoll realisiert werden. In erfinderischer Weise wird hierbei die GPU (teilweise auch als VPU-Video Processung Unit bezeichnet) nicht in bisher üblicher Weise verwandt (nämlich zur Transformation von synthischen 3-dimensionalen Welten in eine möglichst realistische 2-D-Ansicht auf einem Bildschirm), sondern gerade umgekehrt, nämlich zur Transformation realer 2-D-Ansichten (im allgemeinen: Kamerabilder), um daraus die tatsächlich im realen 3-dimensionalen Raum ...

Description

  • Die Erfindung betrifft eine Vorrichtung und ein Verfahren nach dem Oberbegriff der Patentansprüche 1 und 5.
  • Algorithmen zur Bearbeitung von digitalisierten Bilder (digital aufgenommen beispielsweise durch digitale CCD- oder CMOS-Kameras, oder analog aufgenommen durch analoge CCD-Kameras und anschließend in Analog-Digital-Wandlern konvertiert) und der darin enthaltenen Informationen sind je nach Anwendung extrem rechenaufwendig.
  • Bisher wird die Bildverarbeitung im allgemeinen auf frei programmierbaren Recheneinheit (Central Processing Unit, CPU) implementiert. Die Rechenkapazität der CPU ist hierbei der limitierende Faktor für die Informationsaufbereitung und -gewinnung. Die Anwendung redundanter oder ergänzender Algorithmen etwa zur wechselseitigen Kontrolle der Ergebnisse ist aus zeitlichen Gründen oft nicht möglich. Viele Applikationen unterliegen der „Video-Echtzeitanforderung" , d.h. Abarbeitung der Informationen eines Bildes in der Zeit, bis das nächste Bild zur Verfügung steht. Viele Kameras arbeiten mit einer Bildrate von 25 Hz, d.h. es stehen 40ms an Rechenzeit zur Verfügung. Da durch die verwendete CPU auch die Rechenleistung begrenzt ist, sind der Informationsauswertung klare Grenzen gesetzt, selbst im Hinblick darauf, dass in den letzten Jahren Prozessoren mit stetig steigende Rechenleistung auf den Markt gekommen sind. Aus diesem Grund sind viele Bearbeitungsschritte, die zwischenzeitlich algorithmisch be herrscht werden nicht einsetzbar, da der Zeitaufwand zu hoch ist. Insbesondere die simultane Anwendung aufwendiger Algorithmen, z.B. zur Bildverbesserung (Farbwertinterpolation), Informationsaufbereitung (z.B. Umrechnung einer Ansicht in eine sog. Vogelperspektive), Korrektur von Bildfehlern (z.B. Verzeichnung durch Linsen- oder Einbaufehler) und zur Informationsgewinnung (Auswertungsalgorithmik, wie Fahrspurerkennung oder Objektklassifikation) sind bei aktuellen Rechnerleistungen wirtschaftlich nicht sinnvoll realisierbar.
  • Um eine ausreichende Verarbeitungsgeschwindigkeit zu gewährleisteten ist es deshalb, insbesondere aus der Militärtechnik, auch bekannt, spezielle auf die vorliegende Bildverarbeitungsaufgabe spezifizierte Prozessoren (ASICS, application specific integrated circuits) zu verwenden. Bei solchen Prozessoreinheiten ist es möglich eine spezifische Verarbeitungsalgorithmik hardware-technisch zu realisieren und auf diese weise eine hohe Verarbeitungsgeschwindigkeit zu erzielen. Eine solche Lösung birgt jedoch den Nachteil hoher Gestehungskosten, da nur eine anwenderspezifische Kleinserie gefertigt werden kann, und einer starren Verarbeitungsstruktur, welche sich nur sehr eingeschränkt an sich ändernde Anforderungen, welche sich beispielsweise aus den im Rahmen des Produktentwicklungsprozess entstehenden Erkenntnissen ergeben, anpassen lassen.
  • Aufgabe der Erfindung ist es deshalb, eine Vorrichtung und ein Verfahren zur Bildverarbeitung zu finden, welche wirtschaftlich sinnvoll, hohe Rechnerleistung und flexible Produktgestaltung garantiert.
  • Die Aufgabe wird durch eine Vorrichtung und ein Verfahren mit den Merkmalen der Patentansprüche 1 und 5 gelöst.
  • Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung werden durch die abhängigen Patentansprüche beschrieben.
  • Ruf Vektorrechnung und Farbmischung spezialisierte Computer-Hardware sogenannte Graphical Processing Units GPU (z.B. sog. 3D-beschleunigte Grafikkarten, vorzugsweise mit hardwareseitig implementiertem OpenGL- und / oder Direct-X-Standard), die vornehmlich für die Unterhaltungselektronik (Computerspiele und -animation) oder die Darstellung von 3-dimensionalen Konstruktionen (CAD) entwickelt wurde, beinhalten Realisierungen von Bildverarbeitungsalgorithmik auf Basis der Halbleitertechnik. Durch die erfinderische Implementierung einer solcher Hardware als wesentlicher Teil der Bildverarbeitung, kann eine für eine Echtzeit-Bildverarbeitung notwendige Rechnerleistung wirtschaftlich sinnvoll realisiert werden. In erfinderischer Weise wird hierbei die GPU (teilweise auch als VPU – Video Processung Unit bezeichnet) nicht in bisher üblicher Weise verwandt (nämlich zur Transformation von synthischen 3-dimensionalen Welten in eine möglichst realistische 2-D Ansicht auf einem Bildschirm), sondern gerade umgekehrt, nämlich zur Transformation realer 2-D Ansichten (im allgemeinen: Kamerabilder) um daraus die tatsächlich im realen 3-dimensionalen Raum vorherrschenden Geometrien zu ermitteln.
  • Die Erfindung macht somit zwar Gebrauch von einer allgemein bekannten Vorrichtung, nämliche einer GPU, nutzt diese aber in absoluter Abkehr von deren bestimmungsgemäßen Gebrauch. Insbesondere die Verbindung des Ausgangs einer Kameraeinheit mit dem Eingang einer GPU bzw. einer Graphikkarte ist im Rahmen dieser Erfindung erstmalig und wird dem Fachmann durch den Stand der Technik auch nicht nahegelegt. Im Gegenteil, zeigt der Stand der Technik zur Optimierung der Verarbeitungskapazität einer Kamerabildverarbeitung die Möglichkeit auf, die Kamera mit einer intelligenten Frame-Grabber-Karte zu kombinieren, um die Bilddaten vor der eigentlichen Bildverarbeitung durch die CPU des Rechners möglichst effektiv vorzuverarbeiten. Solche Frame-Grabber-Karten (beispielsweise Snapper-PCI-8/24 der Fa. Active Silicon) ermöglichen es, beispielsweise mittels eines sogenannten Data-Mappers gezielt Ausschnitte aus den Bilddaten auszuwählen, nachfolgend der Bildverarbeitung zugeführt werden sollen; eine Verarbeitung der Bilddaten durch eine GPU findet hierbei jedoch nicht statt.
  • Durch recht freie Programmierbarkeit der GPU wird es auch möglich, ein solch erfinderisches Bildverarbeitungssystem flexibel an sich ändernde Bedingungen anzupassen. Auch können durch die Erfindung bildverarbeitende Geräte zuverlässiger und ausfallsicherer gemacht werden, da beispielsweise die allgemein übliche Parallel-Schaltung mehrerer CPU's zur Leistungssteigerung entfällt. Andererseits erlaubt es die erhöhte Rechenleistung, mehr Information in gleicher Zeit zu verarbeiten, beziehungsweise innerhalb der zur Verfügung stehenden Zeit bestimmte Informationen zu Verifizieren, indem die Bilddaten parallel durch mehrer Algorithmen verarbeitet werden, welchen unterschiedliche Lösungsansätze zu Grunde liegen. Die Verwendung einer GPU für Bildverarbeitungsaufgaben bildet auch einen wirtschaftlich optimalen Kompromiss zwischen der herkömmlichen Verwendung von CPU's und der bekannten spezifischen Hardwarerealisierung der Algorithmik auf einem AISIC, da so für andere Zwecke (meist Computerspiele oder CAD-Anwendungen) konzipierte Standard-Hardware, welche mittlerweile als kostengünstige Massenware zur Verfügung steht, verwendet werden kann.
  • Die wesentlichen Unterschiede zwischen einer CPU wie sie in allen gängigen Computern als zentrale Rechnereinheit zu fin den ist und einer GPU, wie sie insbesondere auf Graphikkarten zur Wandlung synthetischer 3-dimensionaler Bilddaten in 2-dimensionale Darstellungen Verwendung findet, sei zur weiteren Klarstellung der Erfindung nachfolgend auch anhand der 1 und 2 erläutert.
  • Eine CPU, wie sie in 1 aufgezeigt ist, besteht aus einer Kontroll-Einheit zu deren Steuerung, einer arithmetischen-logischen Einheit (ALU), Registern (die dauerhaft existieren und mit beliebigen Daten gefüllt werden können) , einer Prefetch-Queue, die Daten vorausschauend über den Daten-Bus in den Cache holt und dem Daten-Bus-Interface, welches die Schnittstelle zur restlichen Hardware (Grafikkarte, Schnittstellenkarte, Festplatte, CD-ROM, etc.) darstellt. Die CPU ist auf die sequentielle Bearbeitung von Daten ausgelegt.
  • 2 zeigt deutlich, dass die einzelnen Einheiten der GPU in Form einer Pipeline angeordnet sind. Die einzelnen Daten werden hierdurch sequentiell durch die Einheiten, den sogenannten Shadern, der GPU geschoben. Die wesentlichen Elemente einer GPU lassen sich wie folgt beschreiben:
    • – Die Vektorrechnung wird in der sogenannten Geometrie-Pipeline vorgenommen. Diese sind in der Lage dreidimensionale Vektoren zu verarbeiten. Sollte die standardmäßig implementierten Methoden für den jeweiligen Algorithmus nicht ausreichen, können diese durch den Programmierer durch spezifische Programme (Vertex-Shader) erweitert und angepasst werden. Dadurch können jedem Pixel bestimmte Projektionsentfernungen und Rechnung zugeordnet werden und dadurch Entzerrungen und Perspektiven rekonstruiert werden. Jede Art von Bildverarbeitungsalgorithmik, die Vektorrechnung beinhaltet (z.B. dreidimensionale Rekonstruktion einer Szene durch Auswertung von Stereobildern) kann von diesen Ein heften unterstützt und / oder ersetzt werden. Konkrete Anwendungen siehe unten.
    • – Die Farbmischung findet auf sogenannten Textur- und Pixel-Shadern statt. Diese Shader können Farbwerte nach bestimmten Muster innerhalb des Bildes verschieben oder farbliche Zwischenwerte für bestimmte Bereiche generieren. Es stehen bei den derzeit auf dem Markt verfügbaren GPU bis zu 4 Textur-Einheiten zur Verfügung, so dass z.B. auf eine Geometrie mehrere Texturoperationen gleichzeitig angewendet werden können. Zudem können mehrere Einheiten arithmetisch miteinander verbunden werden. Operationen die etwa auf dem Vergleich von Farbwerte oder dem Positionsvergleich identischer Farbwerte oder Farbwertkombinationen in verschiedenen Bildern beruhen können von diesen Einheiten unterstützt und / oder ersetzt werden.
  • Innerhalb der Pipeline können Elemente verworfen werden. Dies geschieht im Prinzip für jedes Element einzeln, d.h. ohne Kenntnis benachbarter Elemente. Dies hat folgende Konsequenzen:
    • – Da auch keine dauerhaften Register wie bei der CPU zur Verfügung stehen, ist z.B. keine Aufsummieren von Farbwerten über einen Bildbereich möglich. Register werden nur während der Berechnung eines Elements (z.B. eines Vektors) angelegt und danach wieder gelöscht (dies könnte sich evtl. in den nächsten Generationen von GPU's ändern.)
    • – Da die einzelnen Elemente unabhängig voneinander bearbeitet werden, ist die Reihenfolge der Bearbeitung irrelevant. Dies ist ein wesentliche Voraussetzung für die Parallelisierung der Bearbeitung und die Geschwindigkeiten, die damit erreicht werden können. Auf der Grafikkarte können deshalb mehrere Einheiten untergebracht werden. Gängige GPU's bzw. Graphikkarten haben beispielsweise bis zu 4 Textur- Einheiten (zukünftig werden vermutlich noch mehr Einheiten vorhanden sein), die parallel arbeiten.
    • – Einheiten wie die ALU oder die Prefetch-Queue sind im Gegensatz zur CPU bei einer GPU nicht vorhanden.
  • Die oben angeführten Unterschiede zwischen der GPU und der im Stand der Technik für die Bildverarbeitung herangezogene CPU erfordert eine spezielle Anpassung der bisher bekannten Bildverarbeitungsalgorithmik an die vorliegende GPU-Architektur. Um den Begriff GPU zusätzlich zu den vorigen Erläuterungen eindeutig zu definieren, seien nachfolgend beispielhaft gängige für die erfindungsgemäße Verwendung zur Bildverarbeitung geeignete GPU's angeführt:
    • – GeForce4 Serie der Firma NVIDIA Corporation
    • – nForce Serie der Firma NVIDIA Corporation
    • – Parhelia-512 GPU der Firma Matrox Graphics Inc.
    • – ATI RADEON GPU der Firma ATI Technologies Inc.
    • – Wildcat VP Visual Processing Unit (VPU) der Firma 3D-Labs Inc.
  • Selbstverständlich wird, insbesondere auch im Rahmen dieser Anmeldung unter einer GPU nicht nur der isolierte Prozessorbaustein als solcher (Beispiele siehe oben), sonder auch die mit diesem Graphik Prozessor zusammenhängende Hardware-Periphere (beispielsweise, diesem zugeordnete Bildspeicher oder auch speziell insbesondere für die Systemverwaltung optimierte CPUs) verstanden. Solche Systeme aus GPU-Prozessor mit zugehöriger Hardware-Peripherie wird gemeinhin auch als Graphikkarte bezeichnet, da es meist als ein in ein CPUbasiertes Computersystem integrierbare Einsteckkarte realisiert wird. An Stelle solcher Graphikkarten ist es aber gleichwohl auch möglich, dass solche Systeme aus GPU-Prozessor und Hardware-Peripherie als eine gemeinsame Einheit direkt auf dem Motherboard des Computersystems realisiert sind.
  • In besonders vorteilhafter Weise erhält das erfinderischen Bildverarbeitungssystem die zu verarbeitenden Bilddaten direkt durch eine Kameraeinheit geliefert, wodurch sich ein echtzeitfähige Kamerabildverarbeitung realisieren lässt, insbesondere zum Einsatz in einem Kraftfahrzeug im Zusammenhang mit einem Sicherheits- oder Assistenzsystem. Andererseits ist es sehr wohl auch möglich das Bildverarbeitungssystem zur effektiven und schnellen Nachbearbeitung von in einem Bildspeicher gespeicherten Kamerabildern heranzuziehen.
  • Je nach Anwendungsfall können sodann die Auswertungsergebnisse der Bildverarbeitung sowohl auf einer Bildanzeige beispielsweise einem Kraftfahrzeugführer dargebracht werden, oder auch in besonders vorteilhafter Weise an andere Systemeinheiten weitergeleitet werden, welche auf dieser Grundlage auf andere Systeme einwirken, um beispielsweise ein Fahrzeug vor einem aus den Bilddaten erkannten Hindernis automatisch abzubremsen.
  • Zur weiteren Leistungssteigerung des erfinderischen Bildverarbeitungssystems ist es gewinnbringend, wenn parallel zu dem Graphikprozessor eine frei programmierbare CPU angeordnet ist. Eine solche CPU ist insbesondere für organisatorische Aufgaben im Rahmen der Bildverarbeitung geeignet und könnte in steuernder oder regelnder Weise auf den Verarbeitungsablauf in der GPU einwirken. So könnten beispielsweise ausgehend von den Auswertungsergebnissen oder von veränderten Rahmenbedingungen (beispielsweise: Wechsel zu einer anderen Kameraoptik) bestimmte Parameter der im wesentlichen auf der GPU implementierten Verarbeitungsalgorithmik verändert werden. Andererseits läst sich durch eine solche Parallelstel lung einer CPU zu der eigentlichen graphischen Verarbeitungseinheit GPU die Verarbeitungseffizienz steigern, indem anstelle der gemeinhin üblichen Abfolge der Bildverarbeitung, dergestalt dass Bild per DMA von der Kamera direkt in die GPU und nach der Aufbereitung durch die Recheneinheiten der GPU über DMA in den Hauptspeicher der CPU zur Weiterverarbeitung geladen werden, ganz oder teilweise umgekehrt werden. So ist es in vorteilhafter Weise möglich, wie bisher, zuerst die Bilddaten von der Kamera über DMA in den CPU-Hauptspeicher zu laden. Hierzu werden nach ersten Verarbeitungsschritten durch die CPU die Bilddaten und/oder Teile davon in einen oder mehrere der GPU zugeordnete Bilddaten-Speicher verschoben, verarbeitet und gegebenenfalls auch angezeigt. Nach der Bearbeitung durch die GPU, können die resultierenden Daten wieder in den Hauptspeicher der CPU geladen werden. Diese wechselseitige Bearbeitung durch CPU und GPU kann je nach Anforderungen des Algorithmus oder nach Kriterien einer effizienten Implementierung mehrfach geschehen.
  • Wie bereits zuvor erwähnt, müssen aus dem Grund, dass eine GPU im Gegensatz zu einer CPU nicht frei programmierbar ist, die eventuell bereits aus dem Stand der Technik bekannten Teilalgorithmen zur Bildverarbeitung abgeändert und auf eine GPU-spezifische Implementierung angepasst werden. In besonders vorteilhafter Weise können hierdurch die speziell auf die Shader-Strukturen der GPU angepassten Algorithmen auch die durch die Vertex- oder Textur-/Pixel-Shader zur Verfügung gestellte Funktionalität ausnutzen.
  • Nachfolgend wird an mehreren Beispielen das notwendige erfinderische Vorgehen zur Anpassung von Bildverarbeitungsalgorithmen auf eine GPU-Hardware-Struktur beschrieben.
  • Entzerrung von Bildern
  • Durch Linsenfehler und mangelhaften Einbau von Linsen und Kamerachips entstehen Verzeichnungen (Abbildungsfehler) die mittels der GPU, insbesondere deren Pixel-Shadern, unter Verwendung von Kalibrationsalgorithmen schnell und effektiv korrigiert werden können. Hierbei werden aus den Bilddaten der Kamera die Verzeichnungsparameter bestimmt und hieraus die notwendigen Rechenvorschriften bestimmt, wie Farb- oder Grauwert in den Bilder verschoben werden müssen, für die Kalibrationsalgorithmen, damit die Bilddaten nach Durchlauf dieser Stufe der Bildverarbeitung so vorliegen, als ob sie von einer idealen Kamera entstammten.
  • Farbmischung
  • Die Farbmischung findet auf sogenannten Textur- und Pixel-Shadern statt. Diese Shader können Farbwerte nach bestimmten Muster innerhalb des Bildes verschieben oder farbliche Zwischenwerte für bestimmte Bereiche generieren. Es stehen bis zu 4 Textur-Einheiten zur Verfügung, so dass z.B. auf eine Geometrie (siehe oben) mehrere Texturoperationen angewendet werden können. Zudem können mehrere Einheiten arithmetisch miteinander verbunden werden. Operationen Bildverarbeitung im weitesten Sinne, die etwa auf dem Vergleich von Farbwerte oder dem Positionsvergleich identischer Farbwerte oder Farbwertkombinationen in verschiedenen Bildern beruhen können von diesen Einheiten unterstützt und / oder ersetzt werden.
  • Interpolationsverfahren
  • Die Ermittlung von Farb- oder Grauzwischenwerten, etwa bei einer Bildgrößenänderung oder im Rahmen der Entzerrung von Bilddaten, sind sehr aufwendig und können bisher nicht oder nur partiell (auf einzelnen, vorher bestimmten Bildbereichen) durchgeführt werden. Die fest implementierten Interpolationsfunktionen, insbesondere die Funktionalität der Pixel-Shader, verbessern die gesamten Bilddaten, so dass verschiedene Algo rithmen (etwa Kantenextraktionen), die auf entsprechend feine Strukturen angewiesen sind, bessere Ergebnisse liefern.
  • Um Farbwerte benachbarter Pixel aufsummieren zu können, kann die Interpolationsroutine entgegen ihrer eigentlichen Bestimmung in erfinderischer Weise so genutzt, dass zur gewünschten Interpolation über jeweils 4 Pixel der Bilddaten eines Bildausschnittes dieser Bildausschnitt in beiden Dimensionen um den Faktor 2 verkleinert wird, wobei die GPU standardmäßig eine Interpolation der Bilddaten über die 4 jeweils benachbarten Pixel ausführt. Da dieser Faktor 4 jedoch bekannt ist, läst sich auf einfache Multiplikation der aus der Interpolation resultierenden Farbwerte der Bilddaten die eigentlich gesuchte Farbwertsumme wieder herstellen. Dieses Vorgehen läst sich selbstverständlich entsprechend auch mit GPU-Hardware anwenden, welche standardmäßig über mehr als 4 umliegende Pixelwerte interpoliert.
  • Rekonstruktion von Bildern
  • Spezielle Kamerageometrien, wie z.B. panoramische Kameras, bestehend aus Spiegeln und Linsen, erfordern geometrische Modelle zur Rekonstruktion des Bildes. Wird z.B. eine Rotationsparaboloid in der panoramischen Kamera verwendet, so lässt sich ein Vektormodell des Rotationsparaboloids in der GPU ablegen. Das direkt über DMA in die GPU geholte Bild wird auf diese Vektorfläche gelegt; dies geschieht insbesondere im Vertex-Shader. Da die äußere Geometrie der Vektorfläche der inneren Geometrie des aufgenommenen Bildes entspricht, findet automatisch Rekonstruktion des Bildes statt. Die aufgenommene Bildgröße, die Blickrichtung und der Kamerapunkt innerhalb der geometrischen Anordnung können frei angeben. Dadurch lassen sich Bilddaten beliebiger Kamera-Ansichten innerhalb des aufgenommenen Raumes in diesen rücktransformieren.
  • Wird beispielsweise bei der Bildaufnahme durch eine panoramische Kamera als Spiegel nicht ein Paraboloid, sondern ein Hyperboloid, Ellipsoid, eine Kugel oder eine andere geometrische Form verwendet, so lassen sich diese auf die ein und dieselbe Art und Weise in der GPU hinterlegen und entsprechende Ergebnisse erzielen.
  • Rekonstruktion von Freiflächen-Reflexionen
  • Der Einsatz von Vektorflächen ist nicht auf die unter dem vorherigen Punkt „Rekonstruktion von Bildern" beschriebenen wohldefinierten Geometrien beschränkt. Da im Prinzip für jedes Bildelement (Pixel) ein spezieller Vektorpunkt angegeben werden kann, können auch Spiegelungen an bekannten Freiflächen mittels der GPU rücktransformiert werden. So kann beispielsweise aus den Stereobilddaten der tatsächliche Standort eines sich auf der Motorhaube eines Kraftfahrzeuges spiegelnden Baumes durch Rücktransformation errechnet werden, da die Abbildungsgeometrien der Motorhaube, beispielsweise aus deren CAD-Daten, genau bekannt sind.
  • Sind die Vektordaten für die angegeben Fläche nicht dicht über den Pixeln (es wird z.B. zur Reduzierung der zu übertragenden Vektorgeometrie-Daten nur eine Vektorpunkt für jedes vierte Pixel angegeben), so kann die GPU in besonders vorteilhafter Weise genutzt werden, um die Zwischenwerte für die nicht angegebenen Pixel automatisch linear durch die bereits im Vertex-Shader realisierte Hardware zu interpolieren. Dies bedeutet, dass automatisch durch die GPU-Hardware zwischen den gegebenen Flächenpunkten eine Triangulation stattfindet. Aufwendige Ansätze, die zuerst in den Daten entsprechende Dreiecksberechnung (Triangluar-Mesh) durchführten, können somit entfallen.
  • Berechnung von anderen Kameraperspektiven
  • Für bestimme Anwendungen kann es sinnvoll sein, den Blickpunkt der Kamera virtuell zu verlegen, beispielsweise um eine Ansicht in Vogelperspektive zu schaffen. Ein anderes Beispiel hierzu ist die Erkennung von Fahrbahn- und fahrbahnparallelen Strukturen (Spurerkennung) aus Kamerabildern. Üblicherweise wird die Kamera zur Spurerkennung im Frontbereich des Fahrzeugs eingebaut, so dass der Blick der Kamera in etwa dem Blick des Fahrers entspricht. Da die normale Linsenkamera perspektivisch arbeitet, werden die Fahrbahnstrukturen als auf den Fluchtpunkt zulaufenden Strukturen im Bild wiedergegeben. D.h. in der Realität parallele Strukturen sind im Bild nicht mehr parallel. Ist die Einbauhöhe, der Blick- und Nickwinkel der Kamera bekannt, so kann das Bild in eine sog. Vogelperspektive umgerechnet werden. Dazu werden die Bildinformationen algorithmisch auf die Straßenebene zurückprojiziert. Das so entstandenen Bild wird durch eine virtuelle Kamera, die sich geometrisch vor dem Fahrzeug in befindet und deren Bildebene parallel zur Straßenebene ist abgebildet. Durch dieses Verfahren werden parallele Strukturen in der Straßenebene bzw. in dazu parallelen Ebenen als parallele Strukturen im aus der Bildverarbeitung resultierenden Datensatz abgebildet. Da es sich bei dieser Vogelperspektiven-Berechnung um reine geometrische Modelle handelt, kann hierzu in gewinnbringender Weise die auf graphische Transformation optimierte Hardware der GPU, insbesondere der Vertex-Shader, genutzt werden. Für dieses Vorgehen insbesondere zwei Verfahrensabläufe denkbar:
    • – Beim einen gewinnbringenden Verfahrensablauf werden in einem ersten Schritt eine Ebene festgelegt, die der Straßenebene entspricht. Hierzu das Ergebnis einer Nickwinkelbestimmung der Kamera zur Definition der Ebene berücksichtigt werden, d.h. es ist eine "Nachführung" der Ebene während der Bewegung der Kamera möglich, beispielsweise während der Fahrt einer Kamera in einem Kraftfahrzeug. Das Kamerabild wird nun ganz oder in Teilen auf die Ebene gelegt. Die von der GPU zur Darstellung automatisch durchgeführte Projektion erledigt die Rekonstruktionsaufgabe.
    • – Zum anderen ist es in ebensolch vorteilhafter Weise möglich, dass auf einer Ebene der Projektion, d.h. dem Nick- und Blickwinkel, entsprechend die Textur-Koordinaten des Bildes verändert werden. Dies erzielt den gleichen Rekonstruktionseffekt.
  • Weitere Anwendung solcher Rekonstruktionen neben der Spurerkennung sind etwa Rückfahrkameras für Pkw, Transporter oder Lkw. Dabei wird das aufgenommenen Bild in die Perspektive einer Kamera umgerechnet, die hinter dem Fahrzeug zu schweben scheint. Eine weitere Anwendung wäre die Überwachung des toten Sichtbereichs direkt vor einem Lkw. Durch die hohe Sitzposition des Fahrers und die hohe Scheibenunterkante ist der Raum unmittelbar vor dem Fahrzeug für den Fahrer nicht einsehbar. Durch eine oben angebrachte Kamera kann dieser Raum überwacht werden. Eine hilfreiche Darstellung des Bildes für den Fahrer ist wiederum eine Vogelperspektive, bei der die virtuelle Kamera vor dem Fahrzeug ,schwebt`. In den aufgezählten Beispielen wurde als Bildquelle eine normale, perspektivische Linsenkamera angeführt. Es können jedoch genauso Bilddaten wie sie von einer panoramische und/oder orthographische Kameras geliefert werden, verwendet werden.
  • Korrelation von Bildern
  • Verfügt eine GPU über mehrere Textur-Shader, können auf einfache Weise schnelle Korrelationsroutinen, beispielsweise für die Stereobildverarbeitung auf der GPU realisiert werden.
  • Durch geeignete Verschiebung der Arbeitspunkte, berechnet man an entsprechend versetzten Stellen in den jeweiligen Textur- Shadern die Farbwerte. Nach dieser Berechnung werden die hierbei gewonnenen Texturen geeignet gemischt, um ein Korrelationsergebnis, beispielsweise ein Entfernungsbild bei der Stereobildverarbeitung zu erhalten.
  • Realisierung der Kamera-Belichtungsregelung bzw. Farbwert-Anpassung durch die GPU.
  • Moderne CMOS- und CCD-Kameras haben einen großen Dynamikbereich, d.h. es können lichtschwache und lichtstarke Objekte gleichzeitig abgebildet werden. Um diesen großen Helligkeitsbereich abzudecken, verwenden die Kamera eine 12 Bit-Repräsentation für das Bild. Da viele Displays nur 8 Bit-Grauwertbilder anzeigen können, müssen die Kamerainternen 12 Bit auf 8 Bit reduziert werden. Dies kann auf unterschiedliche weise geschehen. Zum einen kann ein 8 Bit Bereich innerhalb der 12 Bit festgelegt werden. Dann wird entsprechend die Belichtungszeit der Kamera geregelt, damit ein verwertbares Bild entsteht. Die Belichtungszeit wird durch Auswertung der Intensitätsverteilung im ganzen Bild oder bestimmten Bildteilen berechnet. Dies geschieht durch die CPU. Zum anderen kann der 8 Bit Bereich innerhalb der 12 Bit variabel gewählt werden. Dann besteht die Aufgabe darin, den für die aktuelle Lichtsituation geeigneten 8 Bit Bereich innerhalb der 12 Bit zu bestimmen (z.B. die unteren 8 Bit bei Nacht und / oder Fahrt in einem Tunnel, die oberen 8 Bit bei hellem Sonnenschein, oder Fahrt in die untergehende Sonne). Bei dieser Methode bleibt die Belichtungszeit unverändert. Die Wahl des Bereichs geschieht ebenfalls durch die Auswertung der Intensitätsverteilung in ganzen Bild und/oder Bildteilen unter CPU-Last.
  • Besonders vorteilhaft läst sich jedoch die Belichtungsregelung unter Zurhilfenahme einer GPU, insbesondere mittels deren Pixel-Shadern, realisieren. Die GPU ist üblicherweise für die Verarbeitung von Farbbildern ausgelegt. Für die Farbbildverarbeitung wird eine RGBA-Format verwendet. Das bedeutet es stehen jeweils 8 Bit für Rot (R) , Grün (G) , Blau (B) und einen Alpha-Kanal (A) zur Verfügung (Der Grafikkarten Marktführer NVIDIA erwägt die 8 Bit pro Farbkanal bis zu 32 Bit pro Farbkanal zu erweitern). Wird in diesem Format ein Grauwertbild verarbeitet, so wird in jedem der drei Kanäle R, G, und B der selbe, den Grauwert repräsentierende Skalar abgelegt. Im Prinzip wird also das 8 Bit Grauwertbild dreifach in dem zur Verfügung stehenden Bildspeicher abgelegt. Für die fehlenden 4 Bit des Kamerabildes können nun die 8 Bit des A1-pha-Kanals verwendet werden. Durch geeignete Implementierung werden aus den 8 Bit Grauwert im RGB und den 4 Bit Grauwert im Alpha-Kanal wieder die ganzen 12 Bit Grauwert der Kamera in der GPU hergestellt. Da standardmäßig am Display-Ausgang einer GPU die zur Darstellung zu bringenden RGB-Bilddaten als 8-Bit Information zur Verfügung gestellt werden, kann durch die entsprechende Auswahl der Zwischengespeicherten der 8 Bit RGB-Grauwertinformation der Kamera und der 4 Bit Alpha-Grauwertinformation der Kamera der gewünschte 8 Bit-Bereich gewählt werden, der angezeigt werden soll. Dies ist gleichbedeutend mit der Belichtungssteuerung der Kamera. Die Transformation der 12 Bit Kamera-Werte in das RGBA-Format geschieht hierbei in der Regel durch eine der GPU beigestellte CPU. Die CPU-Last ist bei Anwendung dieses vorteilhaften Verfahrens zur Kamera-Belichtungsregelung jedoch wesentlich geringer, als die bei der Belichtungssteuerung durch Intensitätsauswertung anfallende. Hinzukommt, dass der PCI- bzw. AGP-Bus für den DMA auf 32 Bit Datenübertragung optimiert ist. Beim RGBA-Format fallen genau diese 32 Bit an, so dass die dreifache Bildübertragung (R=G=B) gerade keinen Nachteil, sondern einen Vorteil bietet. Darüber hinaus, können die Daten, die nicht angezeigt werden, mit 12 Bit in der GPU bearbeitet werden. Diese 12 Bit können nach der Bearbeitung in der GPU mit dem gleichen Verfahren der CPU zu deren Weiterverarbeitung zur Verfügung gestellt werden.

Claims (9)

  1. Vorrichtung zur Bildverarbeitung, bestehend aus einer Einheit zur Verfügungsstellung von Bilddaten, einer Rechnereinheit zur Erkennung von Objekten in den Bilddaten und einer Einheit zur Weiterverarbeitung der Erkennungsergebnisse, dadurch gekennzeichnet, dass die Rechnereinheit zur Erkennung der Objekte im wesentlichen aus einem Graphik-Prozessor (GPU bzw. VPU), insbesondere mit einer im zugeordneten Hardware-Peripherie, besteht.
  2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Einheit zur Verfügungsstellung der Bilddaten im wesentlichen aus einem Kamerasystem und/oder einem Bildspeicher besteht.
  3. Vorrichtung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Einheit zur Weiterverarbeitung der Erkennungsergebnisse im wesentlichen aus einer Bildanzeige und/oder einer Einheit besteht, welche auf Grund der in den Bilddaten erkannten Objekte auf andere Systeme einwirkt.
  4. Vorrichtung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass zur Unterstützung bei den Bildverarbeitungsaufgaben parallel zu dem Graphikprozessor eine frei programmierbare CPU angeordnet ist.
  5. Verfahren zur Bildverarbeitung, bei welchem Bilddaten zur Verarbeitung zur Verfügung gestellt werden, worauf in diesen Bilddaten mittels einer Rechnereinheit Objekte erkannt werden, und die Erkennungsergebnisse an eine Einheit zur Weiterverarbeitung weitergeleitet werden, dadurch gekennzeichnet, dass die Algorithmen zur Erkennung der Objekte in den Bilddaten im wesentlichen auf einem Graphik-Prozessor (GPU bzw. VPU), insbesondere unter Zurhilfenahme der diesem zugeordneten Hardware-Peripherie, ablaufen.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass die Bilddaten durch ein Kamerasystem und/oder einen Bildspeicher zur Verfügung gestellt werden.
  7. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass im Rahmen der Weiterverarbeitung der Erkennungsergebnisse diese auf einer Anzeige dargestellt werden und/oder einem System zur Verfügung gestellt werden, welches auf Grund der in den Bilddaten erkannten Objekte auf andere Systeme einwirkt.
  8. Verfahren nach einem der vorhergehend Ansprüche, dadurch gekennzeichnet, dass die GPU mit einer CPU in Verbindung steht, welche in steuernder oder regelnder Weise auf den Verarbeitungsablauf in der GPU einwirkt.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die Bilddaten via DMA (Direkt Memory Access) von der Kamera oder einem Bildspeicher direkt in die GPU und nach der Aufbereitung durch die GPU durch DMA direkt in den Hauptspeicher der CPU zur Weiterverarbeitung geladen werden, und dieses Vorgehen gegebenenfalls auf umgekehrt und/oder iterativ erfolgt.
DE2002142087 2002-09-11 2002-09-11 Bildverarbeitung auf für Vektorrechnung und Farbmischung optimierter Hardware Withdrawn DE10242087A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE2002142087 DE10242087A1 (de) 2002-09-11 2002-09-11 Bildverarbeitung auf für Vektorrechnung und Farbmischung optimierter Hardware
AU2003267334A AU2003267334A1 (en) 2002-09-11 2003-09-10 Image processing on an item of hardware that is optimized with regard to vector calculation and color mixing
PCT/EP2003/010030 WO2004027707A2 (de) 2002-09-11 2003-09-10 Bildverarbeitung auf einer für vektorrechnung und farbmischung optimierter hardware

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2002142087 DE10242087A1 (de) 2002-09-11 2002-09-11 Bildverarbeitung auf für Vektorrechnung und Farbmischung optimierter Hardware

Publications (1)

Publication Number Publication Date
DE10242087A1 true DE10242087A1 (de) 2004-03-25

Family

ID=31895814

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2002142087 Withdrawn DE10242087A1 (de) 2002-09-11 2002-09-11 Bildverarbeitung auf für Vektorrechnung und Farbmischung optimierter Hardware

Country Status (3)

Country Link
AU (1) AU2003267334A1 (de)
DE (1) DE10242087A1 (de)
WO (1) WO2004027707A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826200B2 (en) 2007-04-30 2017-11-21 Mobileye Vision Technologies Ltd. Rear obstruction detection

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US7248265B2 (en) 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US7636489B2 (en) 2004-04-16 2009-12-22 Apple Inc. Blur computation algorithm
US7231632B2 (en) 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US7847800B2 (en) 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7397964B2 (en) 2004-06-24 2008-07-08 Apple Inc. Gaussian blur approximation suitable for GPU
US8068103B2 (en) 2004-06-24 2011-11-29 Apple Inc. User-interface design
US8130237B2 (en) 2004-06-24 2012-03-06 Apple Inc. Resolution independent user interface design
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US7761800B2 (en) 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US7490295B2 (en) 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US7652678B2 (en) 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US7227551B2 (en) 2004-12-23 2007-06-05 Apple Inc. Manipulating text and graphic appearance
US8140975B2 (en) 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
KR20070016852A (ko) * 2005-08-05 2007-02-08 (주)지큐소프트 모바일 3d 칩셋의 사양에 따른 자동 최적화 알고리듬
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
KR101520067B1 (ko) 2008-10-02 2015-05-13 삼성전자 주식회사 윈도우 시스템을 구현한 그래픽 처리 방법 및 그 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0972273B1 (de) * 1997-04-04 2004-03-24 Intergraph Hardware Technologies Company Verfahren und vorrichtung zur anwendung von effekten in graphischen bildern

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WOO, M. et al.: OpenGL Programming Guide. Addison- Wesley, 1999, S. 13, 282, 283, 326-31
WOO, M. et al.: OpenGL Programming Guide. Addison-Wesley, 1999, S. 13, 282, 283, 326-31 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826200B2 (en) 2007-04-30 2017-11-21 Mobileye Vision Technologies Ltd. Rear obstruction detection
US10389985B2 (en) 2007-04-30 2019-08-20 Mobileye Vision Tehcnologies Ltd. Obstruction detection
US10827151B2 (en) 2007-04-30 2020-11-03 Mobileye Vision Technologies Ltd. Rear obstruction detection

Also Published As

Publication number Publication date
WO2004027707A2 (de) 2004-04-01
AU2003267334A1 (en) 2004-04-08
AU2003267334A8 (en) 2004-04-08
WO2004027707A3 (de) 2004-05-27

Similar Documents

Publication Publication Date Title
DE10242087A1 (de) Bildverarbeitung auf für Vektorrechnung und Farbmischung optimierter Hardware
EP1173749B1 (de) Bildbearbeitung zur vorbereitung einer texturanalyse
DE102009041431B4 (de) Fahrsimulationsvorrichtung, Weitwinkelkamera-Videosimulationsvorrichtung und Bilddeformierungs-/-zusammensetzungsvorrichtung
DE112011105371T5 (de) Vorrichtung zum Synthetisieren von dreidimensionalen Bildern zum Visualisieren der Fahrzeugumgebung und zugehöriges Verfahren
EP3427474B1 (de) Bildverarbeitungsverfahren, bildverarbeitungsmittel und bildverarbeitungsvorrichtung zur erzeugung von abbildungen eines teils eines dreidimensionalen raums
DE602004012341T2 (de) Verfahren und System zur Bereitstellung einer Volumendarstellung eines dreidimensionalen Objektes
EP0862141A2 (de) Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens
EP2528042B1 (de) Verfahren und Vorrichtung zum Re-Meshing von 3D-Polygonmodellen
DE102011104216A1 (de) Verfahren und Vorrichtung zum dreidimensionalen Erfassen von Objekten sowie Computerprogrammprodukt
DE102016116820A1 (de) Vorrichtung zur Korrektur einer Bildverzerrung einer Linse
DE3854619T2 (de) Quadratische interpolation zur schattierten bilderzeugung.
DE102005061590A1 (de) Verfahren zur Visualisierung komplexer Lichtverteilungssätze technischer Beleuchtungssysteme
WO2022083830A1 (de) Kamerasystem zur umfelderfassung für ein fahrzeug
DE102013220013A1 (de) Abbildungsflächenmodellierung für die Kameramodellierung und für die Synthese virtueller Ansichten
DE102018118996B4 (de) Verfahren zum Bestimmen eines Farbkorrekturwerts, Bildverarbeitungseinrichtung,Kamerasystem und Kraftfahrzeug
EP0869459A2 (de) Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens
DE102017114611A1 (de) Verfahren zum Erzeugen zumindest eines fusionierten perspektivischen Bildes eines Kraftfahrzeugs und eines Umgebungsbereiches des Kraftfahrzeugs, Kamerasystem sowie Kraftfahrzeug
DE60001852T2 (de) Bildverarbeitungsgerät,-methode, -programm und speichermedium
DE112019002126T5 (de) Positionsschätzungsvorrichtung, positionsschätzungsverfahren und programm dafür
WO2006111470A1 (de) Verfahren zur dreidimensionalen darstellung einer digitalen strassenkarte
DE102018123401B4 (de) Systeme und verfahren für eine umgebungsanimation und projektion einer umgebungsanimation auf eine schnittstelle
DE102018121280A1 (de) Graphikprozessor und Verfahren zum Filtern eines Ausgangsbildes zum Reduzieren eines Aliasing-Effekts
DE102018113281A1 (de) Verfahren zur Bildharmonisierung, Computerprogrammprodukt, Kamerasystem und Kraftfahrzeug
DE10246122B4 (de) Verfahren und Vorrichtung zur Darstellung eines computermodellierten Gegenstands
DE102004023322A1 (de) Lage- und Positionsvermessung von Objekten mittels Bildverarbeitungsverfahren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee