WO2004027707A2 - Image processing on an item of hardware that is optimized with regard to vector calculation and color mixing - Google Patents

Image processing on an item of hardware that is optimized with regard to vector calculation and color mixing Download PDF

Info

Publication number
WO2004027707A2
WO2004027707A2 PCT/EP2003/010030 EP0310030W WO2004027707A2 WO 2004027707 A2 WO2004027707 A2 WO 2004027707A2 EP 0310030 W EP0310030 W EP 0310030W WO 2004027707 A2 WO2004027707 A2 WO 2004027707A2
Authority
WO
WIPO (PCT)
Prior art keywords
gpu
image
processing
image data
image processing
Prior art date
Application number
PCT/EP2003/010030
Other languages
German (de)
French (fr)
Other versions
WO2004027707A3 (en
Inventor
Franke Uwe
Pascal Paysan
Fridtjof Stein
Alexander Würz-Wessel
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 AU2003267334A priority Critical patent/AU2003267334A1/en
Publication of WO2004027707A2 publication Critical patent/WO2004027707A2/en
Publication of WO2004027707A3 publication Critical patent/WO2004027707A3/en

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

Definitions

  • the invention relates to a device and a method according to the preamble of claims 1 and 5.
  • Algorithms for processing digitized images are extremely computationally complex, depending on the application.
  • Computer hardware specializing in vector calculation and color mixing so-called graphical processing units GPU (for example so-called 3D-accelerated graphics cards, preferably with hardware-implemented OpenGL and / or Direct-X standard), primarily for consumer electronics (computer games and animation ) or the representation of 3-dimensional constructions (CAD) was developed, include implementations of image processing algorithms based on semiconductor technology.
  • graphical processing units GPU for example so-called 3D-accelerated graphics cards, preferably with hardware-implemented OpenGL and / or Direct-X standard
  • CAD 3-dimensional constructions
  • the GPU (sometimes also referred to as VPU - video processing unit) is not used in the usual way (namely for the transformation of synthetic 3-dimensional worlds into a realistic 2D view on a screen), but instead precisely the other way round, namely for the transformation of real 2-D views (generally: camera images) in order to determine the geometries that actually prevail in real 3-dimensional space.
  • the invention thus makes use of a generally known device, namely a GPU, but uses it in an absolute departure from its intended use.
  • a generally known device namely a GPU
  • the connection of the output of a camera unit to the input of a GPU or a graphics card is the first in the context of this invention and is also not suggested to the person skilled in the art from the prior art.
  • the prior art shows the possibility of optimizing the processing capacity of camera image processing to combine the camera with an intelligent frame grabber card in order to pre-process the image data as effectively as possible before the actual image processing by the CPU of the computer.
  • Such frame grabber cards make it possible, for example by means of a so-called data mapper, to selectively select sections from the image data, which are subsequently to be used for image processing; however, the GPU does not process the image data.
  • the freely programmable GPU makes it possible to flexibly adapt such an inventive image processing system to changing conditions.
  • Image processing devices can also be made more reliable and fail-safe by the invention, since, for example, the generally common parallel connection of several CPUs to increase performance is eliminated.
  • the increased computing power allows more information to be processed in the same time, or certain information to be verified within the time available, in that the image data are processed in parallel by several algorithms, which are based on different solution approaches.
  • the use of a GPU for image processing tasks also forms an economically optimal compromise between the conventional use of CPUs and the known specific hardware implementation of the algorithm on an AISIC, since standard hardware designed for other purposes (mostly computer games or CAD applications), which is now available as inexpensive mass-produced goods that can be used.
  • a CPU as shown in Figure 1, consists of a control unit for its control, an arithmetic-logic unit (ALU), registers (which exist permanently and can be filled with any data), a prefetch -Queue, which fetches data into the cache via the data bus and the data bus interface, which represents the interface to the rest of the hardware (graphics card, interface card, hard disk, CD-ROM, etc.).
  • the CPU is designed for the sequential processing of data.
  • FIG. 2 clearly shows that the individual units of the GPU are arranged in the form of a pipeline. The individual data are thereby pushed sequentially through the units, the so-called shaders, of the GPU.
  • the main elements of a GPU can be described as follows:
  • the vector calculation is carried out in the so-called geometry pipeline. These are able to process three-dimensional vectors. If the standard implemented methods are not sufficient for the respective algorithm, the programmer can expand and adapt them using specific programs (vertex shaders). In this way, certain projection distances and calculations can be assigned to each pixel and reconstructions of the distortions and perspectives can be reconstructed. Any type of image processing algorithm that includes vector calculation (eg three-dimensional reconstruction of a scene by evaluating stereo images) can be units are supported and / or replaced. See below for specific applications.
  • texture and pixel shaders can shift color values according to certain patterns within the image or generate intermediate color values for certain areas.
  • Up to 4 texture units are available in the GPU currently available on the market, so that e.g. Multiple texture operations can be applied to a geometry at the same time.
  • several units can be connected arithmetically. Operations that are based on the comparison of color values or the position comparison of identical color values or color value combinations in different images can be supported and / or replaced by these units.
  • units such as the ALU or the prefetch queue are not available on a GPU.
  • VPU Wildcat VP Visual Processing Unit
  • the image processing system receives the image data to be processed directly by a camera unit, as a result of which real-time-capable camera image processing can be implemented, in particular for use in a motor vehicle in connection with a security or assistance system.
  • the image processing system it is also very possible to use the image processing system for effective and fast post-processing of camera images stored in an image memory.
  • the evaluation results of the image processing can then be presented both on an image display, for example to a motor vehicle driver, or can be forwarded in a particularly advantageous manner to other system units, which act on this basis on other systems, for example in order to drive a vehicle in front of the vehicle Automatically brake image data on detected obstacles.
  • a freely programmable CPU is arranged parallel to the graphics processor.
  • Such a CPU is particularly suitable for organizational tasks in the context of image processing and could have a controlling or regulating effect on the processing sequence in the GPU.
  • certain parameters of the processing algorithm essentially implemented on the GPU could be changed on the basis of the evaluation results or changed framework conditions (for example: change to a different camera optics).
  • the sub-algorithms for image processing that are possibly already known from the prior art must be modified and adapted to a GPU-specific implementation.
  • the algorithms specially adapted to the shader structures of the GPU can also utilize the functionality provided by the vertex or texture / pixel shaders.
  • the distortion parameters are determined from the image data of the camera and from this the necessary calculation rules, such as how the color or gray value in the images have to be shifted, are determined for the calibration algorithms, so that the image data is available after passing through this stage of image processing as if it were from a ideal camera.
  • texture and pixel shaders can shift color values according to certain patterns within the image or generate intermediate color values for certain areas.
  • Up to 4 texture units are available, so that e.g. multiple texture operations can be applied to a geometry (see above).
  • several units can be connected arithmetically. Operations Image processing in the broadest sense, which is based, for example, on the comparison of color values or the position comparison of identical color values or color value combinations in different images, can be supported and / or replaced by these units.
  • the determination of intermediate color or gray values is very complex and has hitherto not been possible, or has been possible only partially (on individual, previously determined image areas).
  • the permanently implemented interpolation functions in particular the functionality of the pixel shaders, improve the entire image data so that different algorithms frames (such as edge extractions) that rely on correspondingly fine structures provide better results.
  • the interpolation routine can be used in an inventive manner contrary to its actual determination in such a way that for the desired interpolation over 4 pixels of the image data of an image section, this image section is reduced by a factor of 2 in both dimensions, the GPU by default one Interpolation of the image data on the 4 neighboring pixels.
  • this factor 4 since this factor 4 is known, the color value sum actually sought can be restored by simply multiplying the color values of the image data resulting from the interpolation.
  • This procedure can of course also be used accordingly with GPU hardware, which interpolates by default over more than 4 surrounding pixel values.
  • a panoramic camera does not use a paraboloid as the mirror, but a hyperboloid, ellipsoid, a sphere or another geometric shape, these can be stored in the same way in the GPU and corresponding results can be achieved ,
  • vector areas are not limited to the well-defined geometries described under the previous item "Reconstruction of images”. Since in principle a special vector point can be specified for each picture element (pixel), reflections on known open areas can also be transformed back using the GPU. For example, the actual location of a tree reflecting on the bonnet of a motor vehicle can be calculated from the stereo image data by reverse transformation, since the imaging geometries of the bonnet, for example from its CAD data, are precisely known.
  • the GPU can be used in a particularly advantageous manner to determine the intermediate values for the pixels not specified, to be automatically interpolated linearly by the hardware already implemented in the vertex shader. This means that the GPU hardware automatically triangulates between the given surface points. This eliminates the need for time-consuming approaches that first performed triangular calculations (triangular mesh) in the data. Calculation of other camera perspectives
  • the camera for lane detection is installed in the front area of the vehicle, so that the view of the camera corresponds approximately to that of the driver. Since the normal lens camera works in perspective, the road structures are shown in the image as structures approaching the vanishing point. In other words, parallel structures in reality are no longer parallel in the picture. If the installation height, the viewing angle and the pitch angle of the camera are known, the image can be converted into a so-called bird's eye view. For this purpose, the image information is projected back algorithmically onto the street level.
  • the resulting image is shown by a virtual camera, which is geometrically located in front of the vehicle and whose image plane is parallel to the street level.
  • a virtual camera which is geometrically located in front of the vehicle and whose image plane is parallel to the street level.
  • parallel structures in the street level or in planes parallel thereto are mapped as parallel structures in the data record resulting from the image processing. Since this bird's eye perspective calculation is purely geometric models, the hardware of the GPU optimized for graphic transformation, in particular the vertex shader, can be used profitably. Two procedures are conceivable for this procedure: - In the case of a profitable procedure, a level is determined in a first step, which corresponds to the street level.
  • the result of a pitch angle determination of the camera for defining the plane must be taken into account, ie it is a tracking of the plane during the movement possible of the camera, for example while a camera is traveling in a motor vehicle.
  • the camera image is now placed in whole or in part on the layer.
  • the projection automatically performed by the GPU for display does the reconstruction task.
  • CMOS and CCD cameras have a large dynamic range, i.e. faint and bright objects can be imaged at the same time.
  • the camera uses a 12-bit representation for the image. Since many displays can only display 8-bit gray-scale images, the internal camera must be reduced from 12 bits to 8 bits. This can be done in different ways. On the one hand, an 8 bit area can be defined within the 12 bits. Then the exposure time of the camera is regulated accordingly, so that a usable image is created. The exposure time is calculated by evaluating the intensity distribution in the entire image or certain parts of the image. This is done by the CPU. On the other hand, the 8 bit range can be selected variably within the 12 bit. Then the task is for the current one
  • the GPU is usually designed for processing color images.
  • An RGBA format is used for color image processing. That means there are 8 bits each available for red (R), green (G), blue (B) and an alpha channel (A) (The graphics card market leader NVIDIA is considering the 8 bits per color channel up to 32 bits per color channel expand) . If a gray value image is processed in this format, the same scalar representing the gray value is stored in each of the three channels R, G and B. In principle, the 8-bit grayscale image is stored three times in the available image memory.
  • the 8 bits of the alpha channel can now be used for the missing 4 bits of the camera image.
  • the 8-bit gray value in the RGB and the 4-bit gray value in the alpha channel are used to produce the entire 12-bit gray value in the GPU. Since the RGB image data to be displayed is made available as 8-bit information as standard at the display output of a GPU, the 8-bit RGB gray value information of the camera and the 4-bit alpha gray value information of the camera can be selected by selecting the buffer the desired 8-bit area to be displayed is selected. This is equivalent to the exposure control of the camera.
  • the transformation of the 12-bit camera values into the RGBA format is usually done by a CPU provided with the GPU.
  • the CPU load is, however, significantly lower than that which arises in the case of exposure control through intensity evaluation.
  • the data that is not displayed can be processed with 12 bits in the GPU. After processing in the GPU, these 12 bits can be made available to the CPU for further processing using the same procedure.

Abstract

Algorithms for processing digitized images (digitally recorded, for example, by digital CCD or CMOS cameras, or analogally recorded by analog CCD cameras and subsequently converted in analog/digital converters) and for processing the information contained therein require, according to use, an extremely high amount of computing. Computer hardware, which is specialized for vector calculation and color mixture, so-called graphical processing units GPU (e.g. so-called 3D-accelerated graphics cards, preferably having the OpenGL standard and/or Direct X standard that are/is implemented on the hardware), and which has been developed particularly for entertainment electronics (computer games and animation) or for the depiction of three-dimensional structures (CAD), includes realizations of image processing algorithmics based on semiconductor technology. The inventive implementation of an item of hardware of the aforementioned type as an essential part of image processing enables an economically sensible realization of a computer performance required for carrying out real-time image processing. According to the invention, the GPU (also denoted, in part, as a VPU video processing unit) is not used in a conventional manner (namely for transforming artificial three-dimensional worlds into a two-dimensional view that is as realistic as possible on a display screen, but instead is used for the contrary by transforming real two-dimensional views (generally speaking: camera images) in order to determine the actual geometries prevailing in the real three-dimensional space.

Description

Bildverarbeitung auf für Vektorrechnung und Farbmischung op- timierter HardwareImage processing on hardware optimized for vector calculation and color mixing
Die Erfindung betrifft eine Vorrichtung und ein Verfahren nach dem Oberbegriff der Patentansprüche 1 und 5.The invention relates to a device and a method according to the preamble of claims 1 and 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.Algorithms for processing digitized images (digitally recorded, for example, by digital CCD or CMOS cameras, or analogue recorded by analog CCD cameras and then converted into analog-digital converters) and the information contained therein are extremely computationally complex, depending on the application.
Bisher wird die Bildverarbeitung im allgemeinen auf frei pro- grammierbaren Recheneinheit (Central Processing Unit, CPU) implementiert . Die Rechenkapazität der CPU ist hierbei der limitierende Faktor für die Informationsaufbereitung und -ge- winnung. 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 Be- arbeitungsschritte, 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.So far, image processing has generally been implemented on a freely programmable central processing unit (CPU). The computing capacity of the CPU is the limiting factor for information preparation and retrieval. The use of redundant or additional algorithms, for example to check the results mutually, is often not possible due to time constraints. Many applications are subject to the "video real-time requirement", ie processing of the information of one image in the time until the next image is available. Many cameras work with a frame rate of 25 Hz, ie 40 ms of computing time are available If the CPU used is also limited in computing power, there are clear limits to the information evaluation, even with regard to the fact that processors with increasing computing power have come onto the market in recent years. For this reason, many processing steps that are now algorithmically can not be used because the time is too high. In particular, the simultaneous use of complex algorithms, e.g. for image improvement (color value interpolation), information processing (e.g. conversion of a view into a so-called bird's eye view), correction of image errors (e.g. distortion due to lens or installation errors) and for information acquisition (evaluation algorithm, such as lane detection or object classification) are not economically feasible with current computer performance.
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 Verarbeitung- salgorithmik hardware-technisch zu realisieren und auf diese weise eine hohe Verarbeitungsgeschwindigkeit zu erzielen. Eine solche Lösung birgt jedoch den Nachteil hoher Gestehungs- kosten, 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 Produktent- wicklungsprozess entstehenden Erkenntnissen ergeben, anpassen lassen.In order to ensure a sufficient processing speed, it is therefore also known, in particular from military technology, to use special processors (ASICS, application specific integrated circuits) that are specified for the present image processing task. With such processor units it is possible to implement a specific processing algorithm in terms of hardware and to achieve a high processing speed in this way. However, such a solution has the disadvantages of high production costs, since only a user-specific small series can be produced, and a rigid processing structure which only changes to a very limited extent to changing requirements, which arise, for example, from the knowledge gained in the course of the product development process , have it adjusted.
Aufgabe der Erfindung ist es deshalb, eine Vorrichtung und ein Verfahren zur Bildverarbeitung zu finden, welche wirtschaftlich sinnvoll, hohe Rechnerleistung und flexible Pro- duktgestaltung garantiert.It is therefore the object of the invention to find a device and a method for image processing which economically make sense, guarantee high computing power and flexible product design.
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.The object is achieved by a device and a method having the features of claims 1 and 5. Advantageous refinements and developments of the invention are described by the dependent claims.
Auf Vektorrechnung und Farbmischung spezialisierte Computer- Hardware sogenannte Graphical Processing Units GPU (z.B. sog. 3D-beschleunigte Grafikkarten, vorzugsweise mit hardwaresei- tig implementiertem OpenGL- und / oder Direct-X-Standard) , die vornehmlich für die Unterhaltungselektronik (Computerspiele und -animation) oder die Darstellung von 3-dimensiona- len 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 notwen- dige 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 rea- listische 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.Computer hardware specializing in vector calculation and color mixing, so-called graphical processing units GPU (for example so-called 3D-accelerated graphics cards, preferably with hardware-implemented OpenGL and / or Direct-X standard), primarily for consumer electronics (computer games and animation ) or the representation of 3-dimensional constructions (CAD) was developed, include implementations of image processing algorithms based on semiconductor technology. Through the inventive implementation of such hardware as an essential part of the image processing, a computing power required for real-time image processing can be economically sensibly implemented. In an inventive manner, the GPU (sometimes also referred to as VPU - video processing unit) is not used in the usual way (namely for the transformation of synthetic 3-dimensional worlds into a realistic 2D view on a screen), but instead precisely the other way round, namely for the transformation of real 2-D views (generally: camera images) in order to determine the geometries that actually prevail in real 3-dimensional space.
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.The invention thus makes use of a generally known device, namely a GPU, but uses it in an absolute departure from its intended use. In particular, the connection of the output of a camera unit to the input of a GPU or a graphics card is the first in the context of this invention and is also not suggested to the person skilled in the art from the prior art. On the contrary, the prior art shows the possibility of optimizing the processing capacity of camera image processing to combine the camera with an intelligent frame grabber card in order to pre-process the image data as effectively as possible before the actual image processing by the CPU of the computer. Such frame grabber cards (for example Snapper-PCI-8/24 from Active Silicon) make it possible, for example by means of a so-called data mapper, to selectively select sections from the image data, which are subsequently to be used for image processing; however, the GPU does not process the image data.
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 ver- arbeiten, 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 mitt- lerweile als kostengünstige Massenware zur Verfügung steht, verwendet werden kann.The freely programmable GPU makes it possible to flexibly adapt such an inventive image processing system to changing conditions. Image processing devices can also be made more reliable and fail-safe by the invention, since, for example, the generally common parallel connection of several CPUs to increase performance is eliminated. On the other hand, the increased computing power allows more information to be processed in the same time, or certain information to be verified within the time available, in that the image data are processed in parallel by several algorithms, which are based on different solution approaches. The use of a GPU for image processing tasks also forms an economically optimal compromise between the conventional use of CPUs and the known specific hardware implementation of the algorithm on an AISIC, since standard hardware designed for other purposes (mostly computer games or CAD applications), which is now available as inexpensive mass-produced goods that can be used.
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 Figuren 1 und 2 erläutert .The main differences between a CPU as found in all common computers as a central processing unit and a GPU, such as is used in particular on graphics cards for converting synthetic 3-dimensional image data into 2-dimensional representations, is also explained below with reference to FIGS. 1 and 2 for further clarification of the invention.
Eine CPU, wie sie in Figur 1 aufgezeigt ist, besteht aus einer Kontroll -Einheit zu deren Steuerung, einer arithmeti- schen-logischen Einheit (ALU) , Registern (die dauerhaft exi- stieren 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.A CPU, as shown in Figure 1, consists of a control unit for its control, an arithmetic-logic unit (ALU), registers (which exist permanently and can be filled with any data), a prefetch -Queue, which fetches data into the cache via the data bus and the data bus interface, which represents the interface to the rest of the hardware (graphics card, interface card, hard disk, CD-ROM, etc.). The CPU is designed for the sequential processing of data.
Figur 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 soge- nannten Shadern, der GPU geschoben. Die wesentlichen Elemente einer GPU lassen sich wie folgt beschreiben:Figure 2 clearly shows that the individual units of the GPU are arranged in the form of a pipeline. The individual data are thereby pushed sequentially through the units, the so-called shaders, of the GPU. The main elements of a GPU can be described as follows:
- Die Vektorrechnung wird in der sogenannten Geometrie- Pipeline vorgenommen. Diese sind in der Lage dreidimensio- nale 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 Projektion- sentfernungen 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- heiten unterstützt und / oder ersetzt werden. Konkrete Anwendungen siehe unten.- The vector calculation is carried out in the so-called geometry pipeline. These are able to process three-dimensional vectors. If the standard implemented methods are not sufficient for the respective algorithm, the programmer can expand and adapt them using specific programs (vertex shaders). In this way, certain projection distances and calculations can be assigned to each pixel and reconstructions of the distortions and perspectives can be reconstructed. Any type of image processing algorithm that includes vector calculation (eg three-dimensional reconstruction of a scene by evaluating stereo images) can be units are supported and / or replaced. See below for specific applications.
- Die Farbmischung findet auf sogenannten Textur- und Pixel-Shadern statt. Diese Shader können Farbwerte nach be- stimmten 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.- The color mixing takes place on so-called texture and pixel shaders. These shaders can shift color values according to certain patterns within the image or generate intermediate color values for certain areas. Up to 4 texture units are available in the GPU currently available on the market, so that e.g. Multiple texture operations can be applied to a geometry at the same time. In addition, several units can be connected arithmetically. Operations that are based on the comparison of color values or the position comparison of identical color values or color value combinations in different images can be supported and / or replaced by these units.
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 Konsequen- zen:Elements can be discarded within the pipeline. In principle, this happens for each element individually, i.e. without knowledge of neighboring elements. This has the following consequences:
- 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.)- Since there are no permanent registers available as with the CPU, e.g. no summation of color values over an image area possible. Registers are only created during the calculation of an element (e.g. a vector) and then deleted again (this could possibly change in the next generations of GPUs.)
- Da die einzelnen Elemente unabhängig voneinander bearbeitet werden, ist die Reihenfolge der Bearbeitung irrelevant. Dies ist ein wesentliche Voraussetzung für die Paralleli- sierung 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.- Since the individual elements are processed independently of one another, the order of processing is irrelevant. This is an essential prerequisite for the parallelization of machining and the speeds that can be achieved with it. Therefore, several units can be accommodated on the graphics card. Common GPUs or graphics cards, for example, have up to 4 texture Units (there will probably be more units in the future) that work in parallel.
- Einheiten wie die ALU oder die Prefetch-Queue sind im Gegensatz zur CPU bei einer GPU nicht vorhanden.- In contrast to the CPU, units such as the ALU or the prefetch queue are not available on a GPU.
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 Bild- verarbeitungsalgorithmik 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:The above-mentioned differences between the GPU and the CPU used for image processing in the prior art require a special adaptation of the previously known image processing algorithm to the present GPU architecture. In order to clearly define the term GPU in addition to the previous explanations, common GPUs suitable for the use according to the invention for image processing are given below:
- GeForce4 Serie der Firma NVIDIA Corporation - nForce Serie der Firma NVIDIA Corporation- GeForce4 series from NVIDIA Corporation - nForce series from NVIDIA Corporation
- Parhelia-512 GPU der Firma Matrox Graphics Inc.- Parhelia-512 GPU from Matrox Graphics Inc.
- ATI RADEON GPU der Firma ATI Technologies Inc.- ATI RADEON GPU from ATI Technologies Inc.
- Wildcat VP Visual Processing Unit (VPU) der Firma 3D-Labs Ine .- Wildcat VP Visual Processing Unit (VPU) from 3D-Labs Ine.
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 CPU- basiertes 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.Of course, especially in the context of this application under a GPU, not only the isolated processor module as such (for examples, see above), but also the hardware peripherals associated with this graphics processor (for example, the image memory assigned to it or also especially optimized for system administration) CPUs) understood. Such systems made of a GPU processor with associated hardware peripherals are also commonly referred to as graphics cards, since they are usually implemented as a plug-in card that can be integrated into a CPU-based computer system. However, instead of such graphics cards, it is also possible for such systems consisting of a GPU processor and hardware peripherals to be a common unit are implemented directly on the motherboard of the computer system.
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.In a particularly advantageous manner, the image processing system according to the invention receives the image data to be processed directly by a camera unit, as a result of which real-time-capable camera image processing can be implemented, in particular for use in a motor vehicle in connection with a security or assistance system. On the other hand, it is also very possible to use the image processing system for effective and fast post-processing of camera images stored in an image memory.
Je nach Anwendungsfall können sodann die Auswertungsergebnis- se 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.Depending on the application, the evaluation results of the image processing can then be presented both on an image display, for example to a motor vehicle driver, or can be forwarded in a particularly advantageous manner to other system units, which act on this basis on other systems, for example in order to drive a vehicle in front of the vehicle Automatically brake image data on detected obstacles.
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 ausge- hend 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 last sich durch eine solche Parallelstel- lung einer CPU zu der eigentlichen graphischen Verarbeitungs- einheit 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.To further increase the performance of the inventive image processing system, it is profitable if a freely programmable CPU is arranged parallel to the graphics processor. Such a CPU is particularly suitable for organizational tasks in the context of image processing and could have a controlling or regulating effect on the processing sequence in the GPU. For example, certain parameters of the processing algorithm essentially implemented on the GPU could be changed on the basis of the evaluation results or changed framework conditions (for example: change to a different camera optics). On the other hand, such a parallel By adding a CPU to the actual graphic processing unit GPU, the processing efficiency can be increased by replacing the commonly used sequence of image processing by transferring the image from the camera directly to the GPU via DMA and into the main memory via DMA after processing by the computing units of the GPU the CPU can be loaded for further processing, reversed in whole or in part. It is thus advantageously possible, as previously, to load the image data from the camera into the CPU main memory via DMA first. For this purpose, after the first processing steps by the CPU, the image data and / or parts thereof are moved to one or more image data memories assigned to the GPU, processed and, if necessary, also displayed. After processing by the GPU, the resulting data can be loaded back into the main memory of the CPU. This mutual processing by CPU and GPU can happen several times depending on the requirements of the algorithm or on criteria of an efficient implementation.
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 beson- ders 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.As already mentioned above, for the reason that a GPU, in contrast to a CPU, is not freely programmable, the sub-algorithms for image processing that are possibly already known from the prior art must be modified and adapted to a GPU-specific implementation. In a particularly advantageous manner, the algorithms specially adapted to the shader structures of the GPU can also utilize the functionality provided by the vertex or texture / pixel shaders.
Nachfolgend wird an mehreren Beispielen das notwendige erfinderische Vorgehen zur Anpassung von Bildverarbeitungsalgorithmen auf eine GPU-Hardware-Struktur beschrieben.The necessary inventive procedure for adapting image processing algorithms to a GPU hardware structure is described below using several examples.
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 kor- rigiert werden können. Hierbei werden aus den Bilddaten der Kamera die Verzeichnungsparameter bestimmt und hieraus die notwendigen Rechenvorschriften bestimmt, wie Färb- 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.Equalization of images Due to lens errors and inadequate installation of lenses and camera chips, distortions (aberrations) arise which can be corrected quickly and effectively by means of the GPU, in particular its pixel shaders, using calibration algorithms. Here, the distortion parameters are determined from the image data of the camera and from this the necessary calculation rules, such as how the color or gray value in the images have to be shifted, are determined for the calibration algorithms, so that the image data is available after passing through this stage of image processing as if it were from a ideal camera.
Farbmischungcolor mixing
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.The color mixing takes place on so-called texture and pixel shaders. These shaders can shift color values according to certain patterns within the image or generate intermediate color values for certain areas. Up to 4 texture units are available, so that e.g. multiple texture operations can be applied to a geometry (see above). In addition, several units can be connected arithmetically. Operations Image processing in the broadest sense, which is based, for example, on the comparison of color values or the position comparison of identical color values or color value combinations in different images, can be supported and / or replaced by these units.
Interpolationsverfahreninterpolation
Die Ermittlung von Färb- oder Grauzwischenwerten, etwa bei einer Bildgrößenänderung oder im Rahmen der Entzerrung von Bilddateh, 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.The determination of intermediate color or gray values, for example in the event of a change in the size of the image or in the context of the rectification of image data, is very complex and has hitherto not been possible, or has been possible only partially (on individual, previously determined image areas). The permanently implemented interpolation functions, in particular the functionality of the pixel shaders, improve the entire image data so that different algorithms frames (such as edge extractions) that rely on correspondingly fine structures provide better results.
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, last sich auf einfache Multiplikation der aus der Interpolation resultierenden Farbwerte der Bilddaten die eigentlich gesuchte Farbwertsumme wieder herstellen. Dieses Vorgehen last sich selbstverständlich entsprechend auch mit GPU-Hard- ware anwenden, welche standardmäßig über mehr als 4 umliegende Pixelwerte interpoliert.In order to be able to add up color values of neighboring pixels, the interpolation routine can be used in an inventive manner contrary to its actual determination in such a way that for the desired interpolation over 4 pixels of the image data of an image section, this image section is reduced by a factor of 2 in both dimensions, the GPU by default one Interpolation of the image data on the 4 neighboring pixels. However, since this factor 4 is known, the color value sum actually sought can be restored by simply multiplying the color values of the image data resulting from the interpolation. This procedure can of course also be used accordingly with GPU hardware, which interpolates by default over more than 4 surrounding pixel values.
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 Rotati - onsparaboloid in der panoramischen Kamera verwendet, so lässt sich ein Vektormodell des Rotationsparaboloids in der GPU ab- legen. 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.Reconstruction of images Special camera geometries, such as panoramic cameras, consisting of mirrors and lenses, require geometric models to reconstruct the image. If, for example, a rotation paraboloid is used in the panoramic camera, a vector model of the rotation paraboloid can be stored in the GPU. The image fetched directly into the GPU via DMA is placed on this vector surface; this happens especially in the vertex shader. Since the outer geometry of the vector surface corresponds to the inner geometry of the captured image, the image is automatically reconstructed. The recorded image size, the viewing direction and the camera point within the geometric arrangement can freely specify. This allows image data from any camera view within the recorded space to be transformed back into it. For example, if a panoramic camera does not use a paraboloid as the mirror, but a hyperboloid, ellipsoid, a sphere or another geometric shape, these can be stored in the same way in the GPU and corresponding results can be achieved ,
Rekonstruktion von Freiflächen-ReflexionenReconstruction of open space reflections
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.The use of vector areas is not limited to the well-defined geometries described under the previous item "Reconstruction of images". Since in principle a special vector point can be specified for each picture element (pixel), reflections on known open areas can also be transformed back using the GPU. For example, the actual location of a tree reflecting on the bonnet of a motor vehicle can be calculated from the stereo image data by reverse transformation, since the imaging geometries of the bonnet, for example from its CAD data, are precisely known.
Sind die Vektordaten für die angegeben Fläche nicht dicht über den Pixeln (es wird z.B. zur Reduzierung der zu übertra- genden 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 KameraperspektivenIf the vector data for the specified area are not close to the pixels (for example, only one vector point is specified for every fourth pixel in order to reduce the vector geometry data to be transmitted), the GPU can be used in a particularly advantageous manner to determine the intermediate values for the pixels not specified, to be automatically interpolated linearly by the hardware already implemented in the vertex shader. This means that the GPU hardware automatically triangulates between the given surface points. This eliminates the need for time-consuming approaches that first performed triangular calculations (triangular mesh) in the data. Calculation of other camera perspectives
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 Nick- winkel der Kamera bekannt, so kann das Bild in eine sog. Vogelperspektive umgerechnet werden. Dazu werden die Bildinformationen algorithmisch auf die Straßenebene zurückproj iziert . 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.For certain applications, it can make sense to virtually shift the focus of the camera, for example to create a bird's eye view. Another example of this is the detection of lane and lane-parallel structures (lane detection) from camera images. Usually, the camera for lane detection is installed in the front area of the vehicle, so that the view of the camera corresponds approximately to that of the driver. Since the normal lens camera works in perspective, the road structures are shown in the image as structures approaching the vanishing point. In other words, parallel structures in reality are no longer parallel in the picture. If the installation height, the viewing angle and the pitch angle of the camera are known, the image can be converted into a so-called bird's eye view. For this purpose, the image information is projected back algorithmically onto the street level. The resulting image is shown by a virtual camera, which is geometrically located in front of the vehicle and whose image plane is parallel to the street level. With this method, parallel structures in the street level or in planes parallel thereto are mapped as parallel structures in the data record resulting from the image processing. Since this bird's eye perspective calculation is purely geometric models, the hardware of the GPU optimized for graphic transformation, in particular the vertex shader, can be used profitably. Two procedures are conceivable for this procedure: - In the case of a profitable procedure, a level is determined in a first step, which corresponds to the street level. For this, the result of a pitch angle determination of the camera for defining the plane must be taken into account, ie it is a tracking of the plane during the movement possible of the camera, for example while a camera is traveling in a motor vehicle. The camera image is now placed in whole or in part on the layer. The projection automatically performed by the GPU for display does the reconstruction task.
- 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 Rekonstruktions- effekt.On the other hand, it is also possible in an equally advantageous manner that at a level of the projection, i.e. the pitch and viewing angle, the texture coordinates of the image are changed accordingly. This achieves the same reconstruction effect.
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 ei- ner 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 ein- sehbar. 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, per- spektivische Linsenkamera angeführt. Es können jedoch genauso Bilddaten wie sie von einer panoramische und/oder orthographische Kameras geliefert werden, verwendet werden.Other uses of such reconstructions in addition to lane detection are, for example, reversing cameras for cars, vans or trucks. The captured image is converted into the perspective of a camera that appears to be floating behind the vehicle. Another application would be the monitoring of the dead field of vision directly in front of a truck. Due to the high seating position of the driver and the high lower edge of the window, the area immediately in front of the vehicle cannot be seen by the driver. This room can be monitored by a camera attached at the top. A helpful representation of the image for the driver is again a bird's eye view, in which the virtual camera hovers in front of the vehicle λ . In the examples listed, a normal, perspective lens camera was used as the image source. However, image data as supplied by a panoramic and / or orthographic camera can also be used.
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.Correlation of images If a GPU has several texture shaders, quick correlation routines, for example for stereo image processing, can be easily implemented on the GPU. By suitable shifting of the working points, one calculates at correspondingly offset points in the respective texture Shaders the color values. After this calculation, the textures obtained in this way are mixed appropriately in order to obtain a correlation result, for example a distance image in the stereo image processing.
Realisierung der Kamera-Belichtungsregelung bzw. Farbwert- Anpassung durch die GPU.Realization of the camera exposure control or color value adjustment by the 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 wer- den. Dann besteht die Aufgabe darin, den für die aktuelleModern CMOS and CCD cameras have a large dynamic range, i.e. faint and bright objects can be imaged at the same time. To cover this wide range of brightness, the camera uses a 12-bit representation for the image. Since many displays can only display 8-bit gray-scale images, the internal camera must be reduced from 12 bits to 8 bits. This can be done in different ways. On the one hand, an 8 bit area can be defined within the 12 bits. Then the exposure time of the camera is regulated accordingly, so that a usable image is created. The exposure time is calculated by evaluating the intensity distribution in the entire image or certain parts of the image. This is done by the CPU. On the other hand, the 8 bit range can be selected variably within the 12 bit. Then the task is for the current one
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 Me- thode bleibt die Belichtungszeit unverändert. Die Wahl desDetermine the light situation suitable 8 bit area within the 12 bit (e.g. the lower 8 bits at night and / or driving in a tunnel, the upper 8 bits in bright sunshine, or driving into the setting sun). With this method, the exposure time remains unchanged. The choice of
Bereichs geschieht ebenfalls durch die Auswertung der Intensitätsverteilung in ganzen Bild und/oder Bildteilen unter CPU-Last. Besonders vorteilhaft last 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 Farb- bildverarbeitung 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 Al- 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 gleichbe- deutend 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 ge- ringer, 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 Weiter- Verarbeitung zur Verfügung gestellt werden. Area is also done by evaluating the intensity distribution in the whole image and / or parts of the image under CPU load. However, the exposure control can be implemented particularly advantageously with the aid of a GPU, in particular by means of its pixel shaders. The GPU is usually designed for processing color images. An RGBA format is used for color image processing. That means there are 8 bits each available for red (R), green (G), blue (B) and an alpha channel (A) (The graphics card market leader NVIDIA is considering the 8 bits per color channel up to 32 bits per color channel expand) . If a gray value image is processed in this format, the same scalar representing the gray value is stored in each of the three channels R, G and B. In principle, the 8-bit grayscale image is stored three times in the available image memory. The 8 bits of the alpha channel can now be used for the missing 4 bits of the camera image. With a suitable implementation, the 8-bit gray value in the RGB and the 4-bit gray value in the alpha channel are used to produce the entire 12-bit gray value in the GPU. Since the RGB image data to be displayed is made available as 8-bit information as standard at the display output of a GPU, the 8-bit RGB gray value information of the camera and the 4-bit alpha gray value information of the camera can be selected by selecting the buffer the desired 8-bit area to be displayed is selected. This is equivalent to the exposure control of the camera. The transformation of the 12-bit camera values into the RGBA format is usually done by a CPU provided with the GPU. When using this advantageous method for camera exposure control, the CPU load is, however, significantly lower than that which arises in the case of exposure control through intensity evaluation. In addition, the PCI or AGP bus is optimized for 32-bit data transmission for the DMA. In the RGBA format, exactly these 32 bits occur, so that triple image transmission (R = G = B) is not a disadvantage, but offers an advantage. In addition, the data that is not displayed can be processed with 12 bits in the GPU. After processing in the GPU, these 12 bits can be made available to the CPU for further processing using the same procedure.

Claims

Patentansprüche claims
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, d a d u r c h g e k e n n z e i c h n e t , dass die Rechnereinheit zur Erkennung der Objekte im wesentlichen aus einem Graphik-Prozessor (GPU bzw. VPU) , insbesondere mit einer im zugeordneten Hardware-Peripherie, besteht.1. Device for image processing, consisting of a unit for making image data available, a computer unit for recognizing objects in the image data and a unit for further processing of the recognition results, characterized in that the computer unit for recognizing the objects essentially consists of a graphics processor (GPU or VPU), in particular with an associated hardware peripheral.
2. Vorrichtung nach Anspruch 1, d a d u r c h g e k e n n z e i c h n e t , dass die Einheit zur Verfügungsstellung der Bilddaten im wesentlichen aus einem Kamerasystem und/oder einem Bildspeicher besteht .2. Device according to claim 1, so that the unit for making the image data available essentially consists of a camera system and / or an image memory.
3. Vorrichtung nach einem der vorhergehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t , dass die Einheit zur Weiterverarbeitung der Erkennungsergeb- nisse im wesentlichen aus einer Bildanzeige und/oder einer Einheit besteht, welche auf Grund der in den Bilddaten er- kannten Objekte auf andere Systeme einwirkt.3. Device according to one of the preceding claims, d a d u r c h g e k e n n z e i c h n e t that the unit for further processing of the recognition results consists essentially of an image display and / or a unit which acts on other systems on the basis of the objects recognized in the image data.
4. Vorrichtung nach einem der vorhergehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t dass zur Unterstützung bei den Bildverarbeitungsaufgaben parallel zu dem Graphikprozessor eine frei programmierbare CPU angeordnet ist.4. Device according to one of the preceding claims, characterized that a freely programmable CPU is arranged parallel to the graphics processor to support the image processing tasks.
5 5. Verfahren zur Bildverarbeitung, bei welchem Bilddaten zur Verarbeitung zur Verfügung gestellt werden, worauf in diesen Bilddaten mittels einer Rechnereinheit Objekte erkannt werden,5. A method for image processing, in which image data are made available for processing, whereupon objects are recognized in these image data by means of a computer unit,
10 und die Erkennungsergebnisse an eine Einheit zur Weiterverarbeitung weitergeleitet werden, d a d u r c h g e k e n n z e i c h n e t , dass die Algorithmen zur Erkennung der Objekte in den Bilddaten im wesentlichen auf einem Graphik-Prozessor (GPU bzw.10 and the recognition results are forwarded to a unit for further processing, so that the algorithms for recognizing the objects in the image data essentially on a graphics processor (GPU or
15 VPU) , insbesondere unter Zurhilfenahme der diesem zugeordneten Hardware-Peripherie, ablaufen.15 VPU), especially with the aid of the hardware peripherals assigned to them.
6. Verfahren nach Anspruch 5 , d a d u r c h g e k e n n z e i c h n e t ,6. The method according to claim 5, d a d u r c h g e k e n n z e i c h n e t,
20 dass die Bilddaten durch ein Kamerasystem und/oder einen Bildspeicher zur Verfügung gestellt werden.20 that the image data are made available by a camera system and / or an image memory.
7. Verfahren nach einem der vorhergehenden Ansprüche, d a du r c h g e k e n n z e i c h n e t ,7. The method according to any one of the preceding claims, d a du r c h g e k e n n z e i c h n e t,
25 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 .25 that, as part of the further processing of the recognition results, these are shown on a display and / or made available to a system which acts on other systems on the basis of the objects recognized in the image data.
-30-30
8. Verfahren nach einem der vorhergehend Ansprüche, d a d u r c h g e k e n n z e i c h n e t , dass die GPU mit einer CPU in Verbindung steht, welche in steuernder oder regelnder Weise auf den Verarbeitungsablauf in der GPU einwirkt.8. The method according to any one of the preceding claims, characterized in that the GPU is connected to a CPU, which acts in a controlling or regulating manner on the processing sequence in the GPU.
9. Verfahren nach Anspruch 8 , d a d u r c h g e k e n n z e i c h n e t , 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 Hauptspei- eher der CPU zur Weiterverarbeitung geladen werden, und dieses Vorgehen gegebenenfalls auf umgekehrt und/oder iterativ erfolgt . 9. The method according to claim 8, characterized in that the image data are loaded via DMA (direct memory access) from the camera or an image memory directly into the GPU and after processing by the GPU by DMA directly into the main memory of the CPU for further processing , and this procedure may be reversed and / or iterative.
PCT/EP2003/010030 2002-09-11 2003-09-10 Image processing on an item of hardware that is optimized with regard to vector calculation and color mixing WO2004027707A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
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

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10242087.4 2002-09-11
DE2002142087 DE10242087A1 (en) 2002-09-11 2002-09-11 Image processing device e.g. for entertainment electronics, has hardware optimized for vector computation and color mixing,

Publications (2)

Publication Number Publication Date
WO2004027707A2 true WO2004027707A2 (en) 2004-04-01
WO2004027707A3 WO2004027707A3 (en) 2004-05-27

Family

ID=31895814

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2003/010030 WO2004027707A2 (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

Country Status (3)

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

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007018330A1 (en) * 2005-08-05 2007-02-15 Gq Soft Co., Ltd. Method for optimizing 3d graphic algorithm according to mobile 3d chipset spec
US7227551B2 (en) 2004-12-23 2007-06-05 Apple Inc. Manipulating text and graphic appearance
US7231632B2 (en) 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US7248265B2 (en) 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US7397964B2 (en) 2004-06-24 2008-07-08 Apple Inc. Gaussian blur approximation suitable for GPU
US7636489B2 (en) 2004-04-16 2009-12-22 Apple Inc. Blur computation algorithm
US7652678B2 (en) 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US7761800B2 (en) 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US7793232B2 (en) 2004-06-25 2010-09-07 Apple Inc. Unified interest layer for user interface
US7847800B2 (en) 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US7907146B2 (en) 2004-06-24 2011-03-15 Apple Inc. Resolution independent user interface design
US8068103B2 (en) 2004-06-24 2011-11-29 Apple Inc. User-interface design
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8140975B2 (en) 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
US8203567B2 (en) 2008-10-02 2012-06-19 Samsung Electronics Co., Ltd. Graphics processing method and apparatus implementing window system
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US9032318B2 (en) 2005-10-27 2015-05-12 Apple Inc. Widget security
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US11150781B2 (en) 2005-10-27 2021-10-19 Apple Inc. Workflow widgets

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
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
US9826200B2 (en) 2007-04-30 2017-11-21 Mobileye Vision Technologies Ltd. Rear obstruction detection
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998045815A1 (en) * 1997-04-04 1998-10-15 Intergraph Corporation Apparatus and method for applying effects to graphical images

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998045815A1 (en) * 1997-04-04 1998-10-15 Intergraph Corporation Apparatus and method for applying effects to graphical images

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BUSCH C ET AL: "Feature based recognition of traffic video streams for online route tracing" VTC '98. 48TH IEEE VEHICULAR TECHNOLOGY CONFERENCE. PATHWAY TO A GLOBAL WIRELESS REVOLUTION (CAT. NO.98CH36151), VTC '98. 48TH IEEE VEHICULAR TECHNOLOGY CONFERENCE. PATHWAY TO A GLOBAL WIRELESS REVOLUTION, OTTAWA, ONT., CANADA, 18-21 MAY 1998, Seiten 1790-1794 vol.3, XP010288291 1998, New York, NY, USA, IEEE, USA ISBN: 0-7803-4320-4 *
FOLEY J D ET AL: "18.2 Display-Pocessor Systems" 1990 , COMPUTER GRAPHICS. PRINCIPLES AND PRACTICE, READING, ADDISON WESLEY, US, PAGE(S) 861-866 XP002273605 das ganze Dokument *
HADWIGER M ET AL: "Hardware-accelerated high-quality filtering on PC hardware" VISION, MODELING, AND VISUALIZATION 2001. PROCEEDINGS, PROCEEDINGS OF 2001 CONFERENCE ON VISION, MODELLING AND VISUALIZATION, STUTTGART, GERMANY, 21-23 NOV. 2001, Seiten 105-112,520, XP009027713 2001, Amerstdam, Netherlands, IOS Press, Netherlands ISBN: 3-89838-028-9 *

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788656B2 (en) 2004-04-16 2010-08-31 Apple Inc. System for reducing the number of programs necessary to render an image
US7231632B2 (en) 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US8446416B2 (en) 2004-04-16 2013-05-21 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
US8044963B2 (en) 2004-04-16 2011-10-25 Apple Inc. System for emulating graphics operations
US7614041B2 (en) 2004-04-16 2009-11-03 Apple Inc. System for reducing the number of programs necessary to render an image
US7636489B2 (en) 2004-04-16 2009-12-22 Apple Inc. Blur computation algorithm
US9691118B2 (en) 2004-04-16 2017-06-27 Apple Inc. System for optimizing graphics operations
US7847800B2 (en) 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US8520021B2 (en) 2004-04-16 2013-08-27 Apple Inc. System and method for processing graphics operations with graphics processing unit
US8040359B2 (en) 2004-04-16 2011-10-18 Apple Inc. System for emulating graphics operations
US10402934B2 (en) 2004-04-16 2019-09-03 Apple Inc. System for optimizing graphics operations
US7667709B2 (en) 2004-04-16 2010-02-23 Apple Inc. System and method for processing graphics operations with graphics processing unit
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8040353B2 (en) 2004-04-16 2011-10-18 Apple Inc. System for emulating graphics operations
US7911472B2 (en) 2004-04-16 2011-03-22 Apple Inc. System for reducing the number of programs necessary to render an image
US8009176B2 (en) 2004-04-16 2011-08-30 Apple Inc. System and method for processing graphics operations with graphics processing unit
US8130237B2 (en) 2004-06-24 2012-03-06 Apple Inc. Resolution independent user interface design
US7907146B2 (en) 2004-06-24 2011-03-15 Apple Inc. Resolution independent user interface design
US8068103B2 (en) 2004-06-24 2011-11-29 Apple Inc. User-interface design
US7397964B2 (en) 2004-06-24 2008-07-08 Apple Inc. Gaussian blur approximation suitable for GPU
US8130224B2 (en) 2004-06-24 2012-03-06 Apple Inc. User-interface design
US7761800B2 (en) 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US10387549B2 (en) 2004-06-25 2019-08-20 Apple Inc. Procedurally expressing graphic objects for web pages
US7873910B2 (en) 2004-06-25 2011-01-18 Apple Inc. Configuration bar for lauching layer for accessing user interface elements
US8144159B2 (en) 2004-06-25 2012-03-27 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US10489040B2 (en) 2004-06-25 2019-11-26 Apple Inc. Visual characteristics of user interface elements in a unified interest layer
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US7793232B2 (en) 2004-06-25 2010-09-07 Apple Inc. Unified interest layer for user interface
US7969453B2 (en) 2004-06-25 2011-06-28 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US7652678B2 (en) 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US9753627B2 (en) 2004-06-25 2017-09-05 Apple Inc. Visual characteristics of user interface elements in a unified interest layer
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
WO2007018330A1 (en) * 2005-08-05 2007-02-15 Gq Soft Co., Ltd. Method for optimizing 3d graphic algorithm according to mobile 3d chipset spec
US9032318B2 (en) 2005-10-27 2015-05-12 Apple Inc. Widget security
US11150781B2 (en) 2005-10-27 2021-10-19 Apple Inc. Workflow widgets
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8203567B2 (en) 2008-10-02 2012-06-19 Samsung Electronics Co., Ltd. Graphics processing method and apparatus implementing window system

Also Published As

Publication number Publication date
AU2003267334A8 (en) 2004-04-08
AU2003267334A1 (en) 2004-04-08
WO2004027707A3 (en) 2004-05-27
DE10242087A1 (en) 2004-03-25

Similar Documents

Publication Publication Date Title
WO2004027707A2 (en) Image processing on an item of hardware that is optimized with regard to vector calculation and color mixing
DE102008031784B4 (en) Method and apparatus for distortion correction and image enhancement of a vehicle rearview system
CN102930514B (en) Rapid image defogging method based on atmospheric physical scattering model
DE112011105371T5 (en) Apparatus for synthesizing three-dimensional images for visualizing the vehicle environment and associated method
DE102019118838A1 (en) VIRTUAL PHOTOGRAMMETRY
DE112018000858T5 (en) Apparatus and method for displaying information
EP3427474B1 (en) Image processing method, image processing means and image processing device for generating images of a portion of a three-dimensional space
DE102018203405A1 (en) Visual surround view system for monitoring the vehicle interior
DE102011106072A1 (en) SHADOW REMOVAL IN A PICTURE BASED ON A VEHICLE-BASED CAMERA USING AN OPTIMIZED LINEAR AXIS
EP3195264A1 (en) Device and method for producing a three-dimensional image of an object
DE102018101030A1 (en) Filter image data using a neutral network
DE102014222617A1 (en) Vehicle detection method and vehicle detection system
WO2021121491A2 (en) Converting input image data from a plurality of vehicle cameras of a surround-view system into optimised output image data
DE102009054214B4 (en) Method and apparatus for generating a representation of an environment
DE69814482T2 (en) Method and device for displaying surfaces from volumetric data
WO2003025843A2 (en) Model-based object classification and target recognition
EP0869459A2 (en) Picture display method and device for carrying out this method
DE102018118996B4 (en) Method for determining a color correction value, image processing device, camera system and motor vehicle
EP1488207B1 (en) Method for inspecting channel pipes
DE102018121280A1 (en) Graphics processor and method for filtering an output image to reduce an aliasing effect
DE112019002126T5 (en) POSITION ESTIMATE DEVICE, POSITION ESTIMATE METHOD AND PROGRAM FOR IT
DE102018113281A1 (en) Image harmonization method, computer program product, camera system and motor vehicle
DE102018123401B4 (en) SYSTEMS AND METHODS FOR AN ENVIRONMENTAL ANIMATION AND PROJECTION OF AN ENVIRONMENTAL ANIMATION ON AN INTERFACE
CN109493354A (en) A kind of target two-dimensional geometry Shape Reconstruction method based on multi-view image
DE102021204404A1 (en) Computer-implemented method, computer program and control module for determining a pose and/or dimensions of an object using measurements from an imaging sensor

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)