Imaging system and method for displaying and /or recording undistorted wide-angle image data
6 claims: 6 independent, 0 dependent
- 1A system (100) for correcting wide-angle image data, said system comprising:a first input buffer (120) configured to store wide-angle image data;an image data processor (125) operably coupled to said first input buffer (120) and configured to transform wide angle image data (122) stored in the first input buffer (120) into corrected image data;whereinthe wide-angle image data includes distortion and said image data processor (125) transforms the wide-angle image data in the first input (120) buffer into corrected image data that is substantially undistorted;a first source of wide-angle image data operably coupled to said first input buffer (120), whereinthe first source of wide-angle image data is a video camera (110) equipped with a wide-angle lens (105), whereby the wide-angle lens (105) is aimed at an area to be monitored;an encoder (135) operably coupled to said image data processor (125) and configured to receive and encode the corrected image data in a format suitable for at least one of display and recording of corrected images;whereinsaid corrected image data is not stored in a buffer from the time of transformation by the image data processor (125) until the time said undistorted image data is received by the encoder (135);anda monitor (140) operably coupled to said encoder (135) for displaying corrected images, wherein said monitor (140) is a device configured to visually display images based on electronic video signals output from the encoder (135), whereinoutput from the encoder (135) is sent to said monitor (140),said encoder is further configured to output signals for producing corrected images comprising a plurality of pixels;andsaid image data processor (125) is configured to transform wide angle image data (122) stored in said first input buffer (120) into undistorted image data by determining, for each of said plurality of pixels, wide angle image data that corresponds to each of said plurality of pixels on a pixel by pixel basis, and providing said wide angle image data to said encoder (135), characterized in thatthe system (100) further comprisesauxiliary request Ia second input buffer (170) configured to store image data different from the wide-angle image data stored in said first input buffer (120), said second input buffer being operably connected to said image data processor (125), andat least one additional camera system (150) comprising a second source of normal field of view image data operably coupled to said second input buffer (170);whereinthe additional camera system (150) includes an analog or digital camera (160) with a normal lens (155) aimed at a determined portion of the monitored area;whereinthe image data processor (125) is further configured to produce output image data from the additional camera system (150) enabling displaying an undistorted image derived from transformed wide-angle image data and an image produced using the additional camera system (150) concurrently on said monitor (140). System (100) zum Korrigieren von Weitwinkelbilddaten, das System aufweisend: einen ersten Eingangszwischenspeicher (120), der zum Speichern von Weitwinkelbilddaten konfiguriert ist;einen Bilddatenprozessor (125), der betriebsfähig an den ersten Eingangszwischenspeicher (120) gekoppelt und zum Umwandeln von Weitwinkelbilddaten (122), die im ersten Eingangszwischenspeicher (120) gespeichert sind, in korrigierte Bilddaten konfiguriert ist;wobeidie Weitwinkelbilddaten Verzerrung enthalten und der Bilddatenprozessor (125) die Weitwinkelbilddaten im ersten Eingangszwischenspeicher (120) in korrigierte Bilddaten umwandelt, die im Wesentlichen unverzerrt sind;eine erste Quelle von Weitwinkelbilddaten, die betriebsfähig an den ersten Eingangszwischenspeicher (120) gekoppelt ist, wobeidie erste Quelle von Weitwinkelbilddaten eine Videokamera (110) ist, die mit einer Weitwinkellinse (105) ausgerüstet ist, wobei die Weitwinkellinse (105) auf einen Bereich gerichtet ist, der überwacht werden soll;einen Codierer (135), der betriebsfähig an den Bilddatenprozessor (125) gekoppelt ist und zum Empfangen und Codieren der korrigierten Bilddaten in ein Format konfiguriert ist, das zu mindestens einem von Anzeigen und Aufzeichnen von korrigierten Bildern geeignet ist;wobeidie korrigierten Bilddaten ab der Zeit der Umwandlung durch den Bilddatenprozessor (125) bis zu der Zeit, zu der die unverzerrten Bilddaten durch den Codierer (135) empfangen werden, nicht in einem Zwischenspeicher gespeichert werden;undeinen Monitor (140), der zum Anzeigen von korrigierten Bildern betriebsfähig an den Codierer (135) gekoppelt ist, wobei der Monitor (140) ein Gerät ist, das zum visuellen Anzeigen von Bildern auf Grundlage von elektronischen Videosignalen, welche vom Codierer (135) ausgegeben werden, konfiguriert ist, wobei die Ausgabe vom Codierer (135) an den Monitor (140) gesendet wird,wobei der Codierer ferner zum Ausgeben von Signalen zum Erzeugen von korrigierten Bildern, die mehrere Pixel aufweisen, konfiguriert ist;undwobei der Bilddatenprozessor (125) zum Umwandeln von Weitwinkelbilddaten (122), die im ersten Eingangszwischenspeicher (120) gespeichert sind, in unverzerrte Bilddaten durch Bestimmen, für jedes der mehreren Pixel, von Weitwinkelbilddaten, die jedem der mehreren Pixel auf einer Pixel-für-Pixel-Basis entsprechen, und Zuführen der Weitwinkelbilddaten zum Codierer (135) konfiguriert ist, dadurch gekennzeichnet, dassdas System (100) ferner Folgendes umfasst: einen zweiten Eingangszwischenspeicher (170), der zum Speichern von Bilddaten konfiguriert ist, die sich von den Weitwinkelbilddaten unterscheiden, welche im ersten Eingangszwischenspeicher (120) gespeichert sind, wobei der zweite Eingangszwischenspeicher betriebsfähig mit dem Bilddatenprozessor (125) verbunden ist, undmindestens ein zusätzliches Kamerasystem (150), das eine zweite Quelle von Normalsehfeldbilddaten umfasst und betriebsfähig an den zweiten Eingangszwischenspeicher (170) gekoppelt ist;wobeidas zusätzliche Kamerasystem (150) eine Analog- oder Digitalkamera (160) mit einer normalen Linse (155) enthält, die auf einen bestimmten Abschnitt des überwachten Bereichs gerichtet ist;wobeider Bilddatenprozessor (125) ferner zum Erzeugen von Ausgabebilddaten vom zusätzlichen Kamerasystem (150) konfiguriert ist, wodurch das gleichzeitige Anzeigen eines unverzerrten Bilds, das aus umgewandelten Weitwinkelbilddaten abgeleitet ist, und eines Bilds, das unter Verwendung des zusätzlichen Kamerasystems (150) erzeugt ist, auf dem Monitor (140) ermöglicht ist. Système (100) destiné à corriger des données d'image grand-angle, ledit système comprenant : un premier tampon d'entrée (120) configuré pour stocker des données d'image grand-angle ;un processeur de données d'image (125) fonctionnellement couplé audit premier tampon d'entrée (120) et configuré pour transformer des données d'image grand-angle (122) stockées dans le premier tampon d'entrée (120) en données d'image corrigées ;dans lequelles données d'image grand-angle présentent une distorsion et ledit processeur de données d'image (125) transforme les données d'image grand-angle dans le premier tampon d'entrée (120) en données d'image corrigées qui sont sensiblement sans distorsion ;une première source de données d'image grand-angle fonctionnellement couplée audit premier tampon d'entrée (120),la première source de données d'image grand-angle étant une caméra vidéo (110) équipée d'un objectif grand-angle (105), l'objectif grand-angle (105) étant pointé vers une zone à surveiller ;un encodeur (135) fonctionnellement couplé audit processeur de données d'image (125) et configuré pour recevoir et coder les données d'image corrigées dans un format approprié pour l'affichage et/ou l'enregistrement d'images corrigées ;dans lequellesdites données d'image corrigées ne sont pas stockées dans un tampon depuis le moment de la transformation par le processeur de données d'image (125) jusqu'au moment où lesdites données d'image sans distorsion sont reçues par l'encodeur (135) ;etun moniteur (140) fonctionnellement couplé audit encodeur (135) pour afficher des images corrigées, ledit moniteur (140) étant un dispositif configuré pour afficher visuellement des images sur la base d'une sortie de signaux vidéo électroniques de l'encodeur (135), la sortie de l'encodeur (135) étant envoyée audit moniteur (140),ledit encodeur étant également configuré pour délivrer des signaux destinés à produire des images corrigées comprenant une pluralité de pixels ;etledit processeur de données d'image (125) étant configurée pour transformer des données d'image grand-angle (122) stockées dans ledit premier tampon d'entrée (120) en données d'image sans distorsion en déterminant, pour chaque pixel de ladite pluralité de pixels, les données d'image grand-angle qui correspondent à chaque pixel de ladite pluralité de pixels pixel par pixel, et en fournissant lesdites données d'image grand-angle audit encodeur (135), caractérisé en ce quele système (100) comprend en outreun deuxième tampon d'entrée (170) configuré pour stocker des données d'image différentes des données d'image grand-angle stockées dans ledit premier tampon d'entrée (120), ledit deuxième tampon d'entrée étant fonctionnellement connecté audit processeur de données d'image (125), etau moins un système de caméra supplémentaire (150) comprenant une deuxième source de données d'image en champ de vision normal fonctionnellement couplée audit deuxième tampon d'entrée (170),le système de caméra supplémentaire (150) comportant une caméra analogique ou numérique (160) avec un objectif normal (155) pointé vers une partie déterminée de la zone surveillée ;dans lequelle processeur de données d'image (125) est également configuré pour produire des données d'image de sortie à partir du système de caméra supplémentaire (150) permettant l'affichage d'une image sans distorsion dérivée de données d'image grand-angle transformées et d'une image produite au moyen du système de caméra supplémentaire (150) simultanément sur ledit moniteur (140).
- 2A system (100) according to claim 1, further comprising:a look-up table memory (130) operably coupled to the image data processor (125), said look-up table memory (130) being configured to store transformation calculation data to be used by the image data processor (125) to transform wide angle image data stored in the first input buffer (120) into corrected image data. System (100) nach Anspruch 1, ferner aufweisend: einen Verweistabellenspeicher (130), der betriebsfähig an den Bilddatenprozessor (125) gekoppelt ist, wobei der Verweistabellenspeicher (130) dazu konfiguriert ist, Umwandlungsberechnungsdaten zu speichern, die durch den Bilddatenprozessor (125) zum Umwandeln von Weitwinkelbilddaten, die im ersten Eingangszwischenspeicher (120) gespeichert sind, in korrigierte Bilddaten verwendet werden sollen. Système (100) selon la revendication 1, comprenant en outre : une mémoire en table de conversion (130) fonctionnellement couplée au processeur de données d'image (125), ladite mémoire en table de conversion (130) étant configurée pour stocker des données de calcul de transformation devant être utilisées par le processeur de données d'image (125) pour transformer des données d'image grand-angle stockées dans le premier tampon d'entrée (120) en données d'image corrigées.
- 3A system (100) according to claim 1, further comprising:a user input module (190) operably coupled to the image data processor (125) and configured to provide user command data to the image data processor (125). System (100) nach Anspruch 1, ferner aufweisend: ein Benutzereingabemodul (190), das betriebsfähig an den Bilddatenprozessor (125) gekoppelt ist undzum Zuführen von Benutzerbefehlsdaten zum Bilddatenprozessor (125) konfiguriert ist. Système (100) selon la revendication 1, comprenant en outre : un module de saisie utilisateur (190) fonctionnellement couplé au processeur de données d'image (125) et configuré pour fournir des données de commande d'utilisateur au processeur de données d'image (125).
- 4A system (100) according to claim 3, wherein:said user input module (190) is further configured to calculate a value based on user input, and to communicate said calculated value to the image data processor (125);andsaid image data processor (125) is further configured to use said calculated value to transform wide angle image data stored in the first input buffer (120) into auxiliary request Icorrected image data. System (100) nach Anspruch 3, wobei: das Benutzereingabemodul (190) ferner zum Berechnen eines Werts auf Grundlage der Benutzereingabe und zum Übermitteln des berechneten Werts an den Bilddatenprozessor (125) konfiguriert ist;undder Bilddatenprozessor (125) ferner zum Verwenden des berechneten Werts zum Umwandeln von Weitwinkelbilddaten, die im ersten Eingangszwischenspeicher (120) gespeichert sind, in korrigierte Bilddaten konfiguriert ist. Système (100) selon la revendication 3, dans lequel : ledit module de saisie utilisateur (190) est également configuré pour calculer une valeur sur la base d'une saisie utilisateur, et pour communiquer ladite valeur calculée au processeur de données d'image (125) ;etledit processeur de données d'image (125) est également configuré pour utiliser ladite valeur calculée pour transformer des données d'image grand-angle stockées dans le premier tampon d'entrée (120) en données d'image corrigées.
- 5A system (100) according to claim 1, wherein said image data processor (125) comprises a processing device selected from the group consisting essentially of a field programmable gate array and an application specific integrated circuit. System (100) nach Anspruch 1, wobei der Bilddatenprozessor (125) ein Verarbeitungsgerät aufweist, das aus der Gruppe ausgewählt ist, die im Wesentlichen aus einem feldprogrammierbaren Gate-Array und einer anwendungsspezifischen integrierten Schaltung besteht. Système (100) selon la revendication 1, dans lequel ledit processeur de données d'image (125) comprend un dispositif de traitement choisi dans le groupe essentiellement constitué par un réseau prédiffusé programmable par l'utilisateur et un circuit intégré spécifique.
- 6A system (100) according to claim 1, wherein the video camera (110) produces video signals in a standard format selected from the group consisting essentially of PAL, SECAM and NTSC. System (100) nach Anspruch 1, wobei die Videokamera (110) Videosignale in einem Standardformat erzeugt, das aus der Gruppe ausgewählt ist, die im Wesentlichen aus PAL, SECAM und NTSC besteht. Système (100) selon la revendication 1, dans lequel la caméra vidéo (110) produit des signaux vidéo dans un format classique choisi dans le groupe essentiellement constitué par PAL, SECAM et NTSC.
Independent claims6
86 paragraphs in 4 sections, as filed
BACKGROUND OF THE INVENTION
Field of the Invention
This invention generally relates to imaging systems, and more particularly, to a system and method for generating undistorted image data, such as video signals suitable for display and/or recording by conventional equipment, from wide-angle lens image data.
Background Description
Conventional video surveillance systems allow users to view portions of monitored areas by either physically aiming a video camera at a desired portion or by generating a perspective corrected view of the desired portion from a wide-angle (e.g., fisheye) image of the monitored area. Signals from the video camera are typically decoded into digital video data. The data is then buffered for processing. In the case of wide-angle image data, processing may entail performing complex mathematical transformations to remove wide-angle distortion. As the data is transformed, it is typically sent to an output buffer before it is encoded for output to a display or recorder. Such conventional systems have several shortcomings.
One drawback of such conventional systems is that they tend to rely upon complex microprocessors, such as Reduced Instruction Set Computer (RISC) chips or Complex Instruction Set Computer (CISC) microprocessors, that utilize task scheduling and other functionality to achieve rapid processing of complex instructions for real-time performance. These tend to be expensive and complicated chips because of the many different tasks they are capable of performing.
Another drawback of conventional systems is that they tend to rely on a processor for performing all computations. Transformation algorithms typically require performance of many floating point, trigonometric and division operations, as well as other complex mathematical functions that consume appreciable processor resources and time.
Yet another drawback of conventional systems is that they typically require an output buffer. Such systems transform input image data from an input buffer into output image data in an output buffer. Transformed data stored in the output buffer is then scan converted by an encoder to produce output signals suitable for a display device or a recorder. Disadvantageously, the output buffer increases overall cost and signal latency.
<patcit id="pcit0001" dnum="US5903319A"><text>US 5,903,319</text></patcit> discloses a method and apparatus for the elimination of temporal and spatial distortions from interlaced video signals, particularly those that occur in signals associated with affine transformations. Especially, a system is disclosed for correcting wide-angle image data, wherein the system comprises a first input buffer configured to store wide-angle image data, an image data processor operably coupled to said first buffer and configured to transform wide-angle image data stored in the first input buffer into corrected image data, an encoder operably coupled to said image data processor and configured to receive and encode the corrected image data in a format suitable for at least one of display and recording of corrected images and wherein corrected image data is not stored in a buffer from the time of transformation by the image data processor until the time said undistorted image data is received by the encoder.
<patcit id="pcit0002" dnum="EP1028389A2"><text>EP 1 028 389 A2</text></patcit> discloses an arithmetic unit for image transformation, especially for transforming a fisheye image obtained by using a fisheye lens into a plane image for display. The unit comprises a first coordinate calculating unit for obtaining first projection coordinates derived by projecting coordinates on the plane image onto a fisheye image face as an imaginary object face; and a second coordinate calculating unit for obtaining second projection coordinates derived by projecting the first projection coordinates obtained by the first coordinate calculating unit onto the fisheye image face
<patcit id="pcit0003" dnum="US20020102101A1"><text>US 2002/0102101 A1</text></patcit> discloses a camera system that comprises a stationary camera having a wide angle view, a remotely controllable camera having a relatively smaller angle view for providing images in substantially full resolution, and a processor.
While the invention overcomes one or more of the problems in conventional video surveillance systems as set forth above, it should be apparent that the invention may have applicability to a wide array of imaging systems and methods, regardless of the particular format of the image data.
SUMMARY OF THE INVENTION
The invention avoids the drawbacks and disadvantages of the prior art by providing a system for correcting wide-angle image data according to Claim 1.The system may generate a graphical user interface that provides a plurality of substantially undistorted views from the wide-angle image data, including, for example, a panoramic view that provides a substantially undistorted view based on the wide-angle image data, a virtual view corresponding to a portion of the panoramic view based upon wide-angle data or other image data, and a display reference window overlaid in a panoramic view to identify the portion of a panoramic view represented by the virtual view. As another option, the system may include a dome camera system configured to provide image data for a virtual view according to commands. The dome camera image data may exhibit higher resolution than the wide-angle data.
Additional features, advantages, and embodiments of the invention may be set forth or apparent from consideration of the following detailed description, drawings, and claims. Moreover, it is to be understood that both the foregoing summary of the invention and the following detailed description are exemplary and intended to provide further explanation.
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are included to provide a further understanding of the invention, are incorporated in and constitute a part of this specification, illustrate preferred embodiments of the invention and together with the detail description serve to explain the principles of the invention. In the drawings: <ul id="ul0001" list-style="none" compact="compact"><li><figref idref="f0001">Figure 1</figref> is a block diagram that conceptually shows an exemplary imaging system for producing undistorted image data from buffered wide-angle image data without an output image buffer in accordance with the principles of the invention;</li><li><figref idref="f0002">Figure 2</figref> is an enlarged block diagram that conceptually illustrates the graphical user interface shown in <figref idref="f0001">Figure 1</figref>;</li><li><figref idref="f0003">Figure 3</figref> conceptually shows θ (i.e., the pan rotation angle around the Z-axis) and ϕ (the tilt rotation angle around the X-axis) for a transformation in accordance with the principles of the invention;</li><li><figref idref="f0004">Figure 4</figref> conceptually shows image center ICxy based on image radii IRx and IRy in accordance with the principles of the invention;</li><li><figref idref="f0005">Figure 5</figref> is a high level flowchart conceptually illustrating steps of a methodology for creating a graphical user interface not in accordance with the principles of the invention; and</li><li><figref idref="f0006">Figure 6</figref> is a high level flowchart conceptually illustrating steps of a methodology for creating a graphical user interface including using dome camera system positioning not in accordance with the principles of the invention.</li></ul>
DETAILED DESCRIPTION
Imaging System
An imaging system constructed in accordance with the principles of the invention includes components configured to transform digital image data corresponding to wide-angle images, such as video images, of a monitored area into data corresponding to one or more undistorted (or substantially undistorted) views of the monitored area that may be displayed on conventional closed circuit television ("CCTV") monitors without use of a post-transformation output image buffer. Wide-angle image data may be transformed as needed for encoding and output.
Various image sources may supply image data for use by a system in accordance with the invention. By way of example and not limitation, one or more imagers such as digital or analog video cameras may be used to supply video data, which may be in any known format. Thus, unless otherwise apparent from the context, as used herein "video" broadly refers to images, such as images of stationary and/or moving objects, which may or may not be produced using signals in known formats, such as NTSC signals. The system of the invention may operate in real time, processing video data as it is produced using the video imagers and without appreciably delaying output to a display monitor or recorder.
Referring now to <figref idref="f0001"><b>Figure 1</b></figref><b>,</b> a high-level block diagram of a video imaging system 100 for use with a system in accordance with an exemplary implementation of the invention is shown. The video imaging system <b>100</b> includes a video camera <b>110</b> equipped with a wide-angle lens <b>105,</b> such as a fisheye lens. Various wide-angle lenses are available, many of which, for example, have an angular field of view of approximately 75 degrees or more. The wide-angle lens <b>105</b> may preferably be suitable for producing an image of an entire area to be monitored (e.g., portions of a room excluding the ceiling) when the wide-angle lens is positioned at a determined point relative to the monitored area (e.g., on a ceiling of the room, at or near the center of the ceiling, pointing downwardly). By way of example and not limitation, a fisheye lens, which is a type of wide-angle lens <b>105,</b> and which may have a field of view of 180 degrees, may be utilized. The camera <b>110</b> may employ a charge coupled device (CCD) array, a Time Delay Integration (TDI) CCD array, complementary metal oxide semiconductor (CMOS) image sensors or other sensors or devices for electronic image production. Additionally, the camera <b>110</b> may be a digital or analog camera.
While wide-angle lenses <b>105</b> are useful for capturing a wide field of view, they tend to distort images by curving or warping objects. Such curving or warping, also known as barrel distortion, is referred to herein as "distortion", "wide-angle lens distortion" or the like. Typically, the wider the field of view for a lens, the more pronounced the distortion will be.
Unless otherwise apparent from the context, as used herein, "undistorted" means without any, or with substantially reduced, wide-angle image distortion. "Undistorted" data is produced by transforming wide-angle image data using mathematical algorithms, as discussed more fully below. An "undistorted image" is an image produced using "undistorted data."
The wide-angle lens <b>105</b> is aimed at the area to be monitored. The lens <b>105</b> may be a fisheye lens or another type of wide-angle lens that provides a 180 degree field of view, or a wider or narrower field of view. By way of example, the lens may be a fisheye lens positioned on a ceiling near the center of a monitored room, aimed downwardly. This position and orientation may generate a view of substantially the entire monitored room, excluding the ceiling.
A video decoder <b>115</b> operably coupled to the camera <b>110</b> translates analog signals from the camera <b>110</b> into digital video data. The decoder <b>115</b> includes a clock circuit (e.g., a 27 MHz video clock circuit) suitable for synchronization and processing of video image data streams. Clock signals <b>117</b> from the clock circuit are transmitted to processor <b>125.</b>
By way of example and not limitation, a suitable decoder <b>115</b> may include commercially available decoders, such as an SAA7113H 9-bit video input processor available from Phillips Electronics N.V. The SAA7113H 9-bit video input processor includes an anti-aliasing filter, an automatic clamp and gain control, a clock generation circuit, a digital multi-standard decoder, and a brightness, contrast and saturation control circuit. Decoder <b>115</b> may be able to decode Phase Alternation Line (PAL), French Sequential Couleur avec Memoire (SECAM) and American National Television Systems Committee (NTSC) standard signals into CCIR-601 (International Radio Consultative Committee, now the International Telecommunication Union Radiocommunication Sector, standard for encoding analog video signals in digital form) compatible color component data values. The SAA7113H 9-bit video input processor accepts as analog inputs CVBS (i.e., composite Chroma Video Blanking & Sync inputs) or S-video (Y/C).
Digital video data from decoder <b>115</b> is stored in an input image buffer <b>120.</b> The input image buffer <b>120</b> may be comprised of volatile or non-volatile memory or other devices configured to store video image data. The data may be stored temporarily, for example, until no longer needed for transformation by the image data processor <b>125,</b> as described below, until new video image data is required to be stored in the occupied portion of the buffer, or until some other event occurs or a determined period of time elapses. The buffer <b>120</b> may be sized to store image data corresponding to an entire field or frame of video, or more or less data.
One or more user input modules <b>190</b> may also be provided to generate user commands. By way of example, the module<b>190</b> may include an input device <b>175</b> such as a keypad, digitizer, joystick, microphone and voice recognition module, or some other device configured to enable a user to enter commands. The input device <b>175</b> may be operably coupled to an input processor <b>180</b> and input memory <b>185</b> configured to produce user command data <b>192</b> corresponding to user input commands. The input processor <b>180</b> may be implemented as a special purpose computer; a programmed general purpose computer; a programmed microprocessor, microcontroller or programmable read-only memory and peripheral integrated circuit elements; an application specific integrated circuit (ASIC) or other integrated circuits; a digital signal processor; a hardwired electronic or logic circuit such as a discrete element circuit; and/or a programmable logic device such as a field programmable gate array (FPGA), or the like. The input memory <b>185</b> may include volatile or non-volatile memory such as, for example, static random access memory (SRAM), dynamic random access memory (DRAM), fast page mode dynamic random access memory (FPM DRAM), extended data-out dynamic random access memory (EDO DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic RAM (DDR SDRAM), electronically erasable programmable read only memory (EEPROM) such as flash memory with or without a controller, hard disk enabled virtual memory, and/or other data storage devices that may be operably coupled to the input processor <b>180.</b> Using a user input device <b>175,</b> a user may control pan, tilt, zoom factors, and other display parameters.
In an exemplary implementation, calculations that are required for transformation (as discussed more fully below), that are common to all or the vast majority of wide-angle image data to be transformed and vary only with wide-angle image parameters, pan, tilt, zoom or other user input commands, may be calculated using the input module <b>190.</b> Delegating such computations to the input module may help conserve image data processor <b>125</b> resources and facilitate real-time transformations.
An image data processor <b>125</b> may receive buffered image data <b>122,</b> clock signals <b>117</b> and user command data <b>192</b> to produce undistorted data. The processor <b>125</b> may be implemented as a special purpose computer; a programmed general purpose computer; a programmed microprocessor, microcontroller or programmable read-only memory and peripheral integrated circuit elements; an application specific integrated circuit (ASIC) or other integrated circuits; a digital signal processor; a hardwired electronic or logic circuit such as a discrete element circuit; and/or a programmable logic device such as a field programmable gate array (FPGA), or the like. A preferred implementation uses an FPGA or an ASIC as the processor <b>125.</b> When a system design is considered stable, an FPGA could be replaced with an ASIC to reduce system cost.
The image data processor <b>125</b> may also be operably coupled to memory <b>130,</b> which may, for example, be non-volatile memory comprised of electronically erasable programmable read only memory (EEPROM), such as flash memory; a solid-state floppy-disk card (SSFDC) such as SmartMedia<sup>®</sup> memory commercially available by Kabushiki Kaisha Toshiba, Toshiba Corporation, and Toshiba America Electronic Components, Inc.; CompactFlash<sup>®</sup> memory by SanDisk Corporation; hard disk enabled virtual memory; and/or other non-volatile storage devices. Illustratively, memory <b>130</b> may be used to facilitate processor computations by storing one or more tables of values for frequently calculated functions, especially functions that might otherwise consume significant processor <b>125</b> resources. By way of example and not limitation, memory <b>130</b> may store a table of values, such as cosine, sine, 1/cosine, 1/sine, or other values based on trigonometric or other types of functions used in an applicable transformation algorithm, as discussed more fully below. The indices for the table may be angular values in degrees, radians, other types of measurements, or some other possible value for a variable. The table entries may be pre-calculated values based on the corresponding indices. Trigonometric functions and complex floating point calculations can otherwise be a time and resource consuming part of processor <b>125</b> calculations. Advantageously, the use of pre-determined stored values conserves processor resources and may lead to an appreciable increase in overall transformation speed.
As discussed more fully below, the image data processor <b>125</b> mathematically transforms wide-angle image data in the input image buffer <b>120</b> into undistorted data using a transformation algorithm. According to the invention, the image data processor <b>125</b> is configured to complete transformation calculations, on a pixel-by-pixel basis, as the data for a pixel is needed for encoding to produce output video signals in real-time. Transformation calculations are started far enough in advance such that the final calculation step is completed just in time to provide undistorted image data to the encoder. By way of example, one NTSC video frame, displayed approximately every 1/30<sup>th</sup> of a second, contains two interlaced fields. Each field is displayed approximately every 1/60th of a second each. Thus, a system made in accordance with the principles of the invention may generate all undistorted pixel image data for a frame approximately every 1/30<sup>th</sup> of a second. The time may be monitored using the 27 MHz clock circuit signals 117. To further illustrate, an interlaced NTSC display of 720 by 486 pixels and a refresh rate of 60 Hz, must display all the pixels for a field (i.e., 174,960 pixels) approximately every 1/60<sup>th</sup> of a second, or a pixel must be generated approximately every 9.526 x 10<sup>-8</sup> seconds.
Upon transformation, the processor <b>125</b> sends transformed video data to an encoder <b>135.</b> The encoder <b>135</b> converts the digital video data into output signals compatible with an output device such as a standard CCTV display monitor <b>140</b> and/or video recorder <b>145.</b> The monitor <b>140</b> may display a graphical user interface such as that described in the discussion of <figref idref="f0002"><b>Figure 2</b></figref><b>.</b>
By way of example and not limitation, the encoder <b>135</b> may be any suitable commercially available decoder, such as an SAA7121H digital video encoder by Phillips Electronics, N.V. The SAA7121H digital video encoder circuit accepts CCIR compatible YUV data with 720 active pixels per line and encodes the digital YUV video data to NTSC, PAL, CVBS or S-video signals.
Output from the encoder <b>135</b> is sent to an output device, such as a standard CCTV display monitor <b>140</b> and/or video recorder <b>145.</b> The display monitor <b>140</b> a device configured to visually display images based on electronic video signals output from the encoder <b>135.</b> The recorder <b>145</b> may be any device configured to record video signals from the encoder <b>135</b> on removable or non-removable storage media such as, for example, a magnetic tape, diskette, CD-ROM, DVD, hard disk, memory (e.g., nonvolatile EEPROM) or the like. If both a display monitor <b>140</b> and recorder <b>145</b> are used, the devices may be configured in parallel or in series (e.g., without output from the video recorder being sent to a display monitor).
According to the invention, in addition to transforming wide-angle image data, the image data processor <b>125</b> produces output image data from one or more supplementary sources, such as an additional camera system <b>150.</b> The additional camera system <b>150</b> includes an analog or digital camera <b>160</b> with a normal lens <b>155</b> (i.e., not a wide-angle lens) aimed at a determined portion of the monitored area. The lens <b>155</b> may have a narrower Field of View (FOV), e.g., 45°, which would provide higher resolution than wide-angle lens <b>105,</b> thus providing a more detailed video image. Such a configuration enables displaying an undistorted image derived from transformed wide-angle lens image data as well as an image produced using the additional camera system <b>150.</b> Such a configuration may also enable switching from a relatively low resolution undistorted image derived from wide-angle lens image data to a higher resolution image, with a higher zoom factor capability, produced using the additional camera system. This gives the user the ability to isolate small details of a monitored area.
The additional camera system <b>150</b> may also include a video decoder <b>165</b> that is operably coupled to the camera and configured to translate analog signals from the camera into digital video data. The decoder <b>165</b> may also include a clock circuit (e.g., a 27 MHz video clock circuit) suitable for synchronization and processing of video image data streams. Clock signals <b>167</b> may be transmitted to processor <b>125.</b>
The additional camera system <b>150</b> further includes an image buffer <b>170.</b> The image buffer <b>170</b> may be comprised of volatile or non-volatile memory or other devices configured to temporarily store video image data, such as, for example, static random access memory (SRAM), dynamic random access memory (DRAM), fast page mode dynamic random access memory (FPM DRAM), extended data-out dynamic random access memory (EDO DRAM), synchronous dynamic random access memory (SDRAM); double data rate synchronous dynamic RAM (DDR SDRAM), Rambus dynamic random access memory (RDRAM), multiport dynamic random access memory (MPDRAM), synchronous graphics RAM (SGRAM), electronically erasable programmable read only memory (EEPROM), hard disk enabled virtual memory and/or other data storage device. The buffer <b>170</b> may be sized to store image data corresponding to an entire field or frame of video, or more or less data. Buffered video data <b>172</b> may be transmitted to processor <b>125.</b> That data may then be processed and encoded <b>135</b> for output to a display or recording device.
Moreover, the additional camera system <b>150</b> may be configured as a programmable dome camera system. Dome cameras can typically rotate (i.e., pan) 360 degrees, and tilt and zoom according to control signals. Processor <b>125</b> may produce control data <b>194,</b> based upon user command data <b>192</b> from user input module <b>190,</b> to control positioning and movement of the dome camera. A control interface (not shown) may also be operably coupled to dome camera <b>160</b> and processor <b>125,</b> as necessary to convert control data output from the processor <b>125</b> into signals for controlling dome camera <b>160</b> position, movement and zooming.
Transformation Methodology
Undistorted data may be produced by mathematically transforming wide-angle image data. Many transformation processes (also referred to as dewarping, mapping, remapping, planar projection, conversion and perspective correction) are known in the art and can be adapted, in accordance with the teachings herein, to produce undistorted data from wide-angle image data (including fisheye image data). While the invention is not limited to any specific transformation processes, an exemplary panoramic view transformation and an exemplary virtual view transformation are described more fully below for use with a system of the invention employing fisheye lens image data.
Referring now to <figref idref="f0002"><b>Figure 2</b></figref><b>,</b> a graphical user interface in accordance with an exemplary implementation of the invention is conceptually shown. Strips, which may be rectangular in shape as illustrated, correspond to transformed panoramic views. The transformed panoramic views <b>210</b> and <b>260</b> exhibit upright orientation and substantially reduced (or no) wide-angle image distortion, thus providing a readily discernible view of the monitored area. An example of a suitable transformation carried out by the processor is discussed subsequently.
Also shown in <figref idref="f0002"><b>Figure 2</b></figref> are one or more virtual views <b>230</b> and <b>240,</b> each of which may be an undistorted view of a user-determined portion of the panoramic views <b>210</b> and <b>260.</b> Virtual view data may be obtained either by transformation of portions of the wide-angle video image data, or by positioning and focusing a camera having a normal lens (i.e., not a wide-angle lens) to produce image data for the determined portion of the monitored area. Again, a suitable exemplary transformation to obtain the virtual view data is discussed subsequently.
The processor may be further configured to provide reference overlay (e.g., windows - i.e., graphically generated frames or boxes, or other shapes, overlaid in the panoramic views - frames <b>220</b> and <b>250</b> as shown in <figref idref="f0002"><b>Figure 2</b></figref><b>)</b> corresponding to the undistorted view of the determined portions of the panoramic views represented by the virtual views <b>230</b> and <b>240.</b> Thus, the reference overlay <b>220</b> and <b>250</b> reveals what portions of the panoramic views are represented by the virtual views <b>230</b> and <b>240.</b>
As an operator pans, tilts or zooms either of the virtual views <b>230</b> and <b>240</b> to correspond to any part of either of panoramic views <b>210</b> and <b>260,</b> the corresponding reference window <b>220</b> or <b>250</b> overlaid on top of a panoramic view <b>210</b> and <b>260</b> is adjusted by moving and/or changing its size in the panoramic view <b>210</b> or <b>260,</b> to conform to the virtual view, thus indicating the part of the panoramic view <b>210</b> and <b>260</b> represented by the virtual view <b>230</b> or <b>240.</b> Panning and tilting a virtual view <b>230</b> or <b>240</b> causes the reference window <b>220</b> or <b>250</b> to move horizontally and/or vertically in a panoramic view <b>210</b> or <b>260.</b> Zooming in (i.e., increasing zoom) causes the reference window <b>220</b> or <b>250</b> to decrease in size in the panoramic view <b>210</b> or <b>260.</b> Zooming out (i.e., decreasing zoom) causes the reference window <b>220</b> or <b>250</b> to increase in size in the panoramic view <b>210</b> or <b>260.</b>
The system is preferably configured to allow a user to select which virtual view <b>230</b> or <b>240</b> to currently control. The active (i.e., currently controlled) virtual view <b>230</b> or <b>240</b> may be distinguished from the inactive virtual view by an indicia. For example, a white frame may surround the active virtual view and a black frame may surround the inactive virtual view. The corresponding reference window <b>220</b> or <b>250</b> may also be highlighted in either black or white based on its associated virtual view's active/inactive status.
The exemplary display screen may have a resolution of 720 by 486 pixels. The exemplary panoramic views, as shown in <figref idref="f0002"><b>Figure 2</b></figref><b>,</b> are each 720 pixels wide and 120 pixels high. The exemplary virtual views, as shown in <figref idref="f0002"><b>Figure 2</b></figref><b>,</b> may each be 360 pixels wide and 246 pixels high. Those skilled in the art will appreciate that the invention is not limited to the exemplary resolution or view sizes. Many other resolutions and sizes are feasible and come within the scope of the invention.
The reference overlay (e.g., reference windows <b>220</b> and <b>250</b>) in an exemplary implementation conforms to virtual view <b>230</b> and <b>240</b> positioning and zooming. Thus, for example, a user may pan, tilt and zoom virtual view <b>230</b> and <b>240</b> to represent any portions of the panoramic views <b>210</b> and <b>260.</b> The portions of the panoramic views represented by the virtual view <b>230</b> and <b>240</b> define the areas overlaid by reference windows <b>220</b> and <b>250.</b> Other manifestations of reference overlay, such as numerical coordinates or cross hairs, may be used in lieu of or in addition to reference windows <b>220</b> and <b>250.</b> In an alternative implementation, the system may be configured to automatically determine the portions of the panoramic views <b>210</b> and <b>260</b> to cover, such as by one or more determined algorithms (e.g., move reference windows as a function of time) or in response to one or more signals (e.g., a motion detector, gate sensor, or alarm signal).
Panoramic views <b>210</b> and <b>260</b> and virtual views <b>230</b> and <b>240</b> are displayed concurrently on a display monitor, thus providing a readily discernible view of the entire monitored area and an undistorted view of a portion of the monitored area. The reference overlay <b>220</b> and <b>250</b> may also be displayed with the panoramic views <b>210</b> and <b>260,</b> thus enabling a user to readily identify the portions of the panoramic views <b>210</b> and <b>260</b> that are represented by the virtual views <b>230</b> and <b>240.</b>
Those skilled in the art will appreciate that the invention is not limited to the exemplary number, size, shape or arrangement of views shown in <figref idref="f0002"><b>Figure 2</b></figref> and discussed above. For example, one or more panoramic views <b>210</b> and <b>260,</b> and/or virtual views <b>230</b> and <b>240</b> and reference windows <b>220</b> and <b>250</b> may be provided within the scope of the invention. Thus, a display may show one or more undistorted images produced from wide-angle image data, without departing from the scope of the invention. Additionally, the user interface components may be arranged as shown in <figref idref="f0002"><b>Figure 2</b></figref> and discussed above. Furthermore, the interface may be configured to allow a user to control the display arrangement. For example, a user may hide or move a panoramic view <b>210</b> or <b>260,</b> and/or a virtual view <b>230</b> or <b>240</b> and/or a reference window <b>220</b> or <b>250;</b> or hide all virtual views <b>230</b> and <b>240</b> reference windows <b>220</b> and <b>250;</b> or opt to display only a selected panoramic view <b>210</b> or <b>260</b> or virtual view <b>230</b> or <b>240.</b>
The exemplary panoramic view transformation process involves mathematically transforming wide-angle video image data into 2-dimensional space for producing panoramic views. The exemplary transformation entails determining, for each output window pixel coordinate, an address within the image buffer <b>120</b> for pixel data to be encoded and output to a display and/or recorder <b>145.</b> In a preferred implementation, this address calculation is timed such that the calculated address for each output pixel is ready just in time to feed the output encoder. This implementation advantageously eliminates the need for an output image buffer.
In an exemplary implementation, two panoramic views <b>210</b> and <b>260</b> may be produced. One panoramic view <b>210</b> corresponds to half of the monitored area (e.g., a 0-180 degree panoramic view strip). The other panoramic view corresponds to the other half of the monitored area (e.g., a 181-360° panoramic view strip). Thus, in this implementation, the second panoramic view is offset from the first panoramic view by half of the field of view. The points dividing one half from the other half may be pre-programmed, user configurable or user controllable. The two panoramic views combined provide a full (e.g., a 360°) view of the monitored area.
The exemplary panoramic views are 720 pixels wide and 120 pixels high. Output window pixel coordinates range from -360 to +360 for <b>Wx</b> and from -60 to +60 for <b>Wy.</b> The <b>Wx</b> and <b>Wy</b> coordinates are derived from the output view column and line pixel counters, and together with the desired Zoom factor, are transformed into θ (i.e., the pan rotation angle around the Z-axis) and ϕ (the tilt rotation angle around the X-axis), as conceptually illustrated in <figref idref="f0003"><b>Figure 3</b></figref><b>.</b> This information is then converted to an address in the input capture buffer. The data from this address is output to the encoder for display. The variables Pan, Tilt and Zoom may be programmed or commanded via user input module <b>190.</b> Given: <ul id="ul0002" list-style="none" compact="compact"><li>Zoom_1XT_Tilt_F V = 45°</li><li>ScaleFactorX(SFx) = 180°/720 pixels = 0.25°/pixel</li><li>Zoom Scale(ZS) = 1 (Requested zoom factor, e.g., 1, 2, 3, etc.)</li><li>ScaleFactorY(SFy) = (Zoom_1X_FOV) x (1/ZS/ 120pixels)</li><li>ScaleFactorY(SFy) = 45°/120 pixels = 0.375°/pixel</li><li>Pan = Requested Pan angle in degrees</li><li>Tilt = Requested Tilt angle in degrees</li><li>Wx = Output Window pixel x coordinate (-360 to +360)</li><li>Wy = Output Window pixel y coordinate (+60 to -60</li><li>IRx = Image buffer fisheye image X axis radius in pixels</li><li>IRy = Image buffer fisheye image Y axis radius in pixels</li><li>ICx = Image buffer fisheye image center X coordinate in pixels, as conceptually shown in <figref idref="f0004"><b>Figure 4</b></figref></li><li>ICy = Image buffer fisheye image center Y coordinate in pixels, as conceptually shown in <figref idref="f0004"><b>Figure 4</b></figref><b>.</b></li></ul>
The horizontal component of the panoramic view (starting with output window upper left at -360, +120) is converted from pixel units to degrees (SFx). Each output pixel equates to .25 degrees (180°/720 pixels). The programmable Pan value is added to each pixel value. The second panoramic view <b>260</b> is offset from the first <b>210</b> by <b>+180</b> degrees.
Therefore: <maths id="math0001" num="Equation 1"><math display="block"><mrow><mi>θ</mi><mo>=</mo><mfenced open="[" close="]" separators=""><mfenced separators=""><mi mathvariant="italic">Wx</mi><mo>+</mo><mn>360</mn></mfenced><mo>×</mo><mi mathvariant="italic">SFx</mi></mfenced><mo>+</mo><mi mathvariant="italic">Pan</mi><mo>=</mo><mfenced open="[" close="]" separators=""><mfenced separators=""><mi mathvariant="italic">Wx</mi><mo>+</mo><mn>360</mn></mfenced><mo>×</mo><mn>0.25</mn></mfenced><mo>+</mo><mi mathvariant="italic">Pan</mi></mrow></math><img file="EP1515548B1_D0001.tif" /></maths><maths id="math0002" num="Equation 2"><math display="block"><mrow><mi>θ</mi><mo>=</mo><mn>0.25</mn><mi mathvariant="italic">Wx</mi><mo>+</mo><mn>90</mn><mo>+</mo><mi mathvariant="italic">Pan</mi></mrow></math><img file="EP1515548B1_D0002.tif" /></maths>
The vertical component of the panoramic view (starting with output window upper left at origin -360, +120) is converted from pixel units to degrees (SFy). Each vertical pixel equates to 0.375 degrees (45°/120lines). The programmable Tilt value is added to each pixel value. The programmable zoom performs a scale (45° x (1/zoom)) / 120. Therefore, Zoom Scale equals 1. <maths id="math0003" num="Equation 3"><math display="block"><mrow><mi>φ</mi><mo>=</mo><mfenced separators=""><msub><mrow><mmultiscripts><mrow><mo>/</mo></mrow><mprescripts /><none /><mi>π</mi></mmultiscripts></mrow><mn>2</mn></msub><mo>−</mo><mi mathvariant="italic">Tilt</mi></mfenced><mo>−</mo><mfenced open="[" close="]" separators=""><mfenced separators=""><mi mathvariant="italic">Wy</mi><mo>+</mo><mn>60</mn></mfenced><mo>×</mo><mfenced><mi mathvariant="italic">SFy</mi></mfenced></mfenced></mrow></math><img file="EP1515548B1_D0003.tif" /></maths><maths id="math0004" num="Equation 4"><math display="block"><mrow><mi>φ</mi><mo>=</mo><mn>90</mn><mo>−</mo><mi mathvariant="italic">Tilt</mi><mo>−</mo><mn>0.375</mn><mi mathvariant="italic">Wy</mi><mo>−</mo><mn>22.5</mn></mrow></math><img file="EP1515548B1_D0004.tif" /></maths><maths id="math0005" num="Equation 5"><math display="block"><mrow><mi>φ</mi><mo>=</mo><mn>67.5</mn><mo>−</mo><mfenced separators=""><mi mathvariant="italic">Tilt</mi><mo>+</mo><mn>0.375</mn><mi mathvariant="italic">Wy</mi></mfenced></mrow></math><img file="EP1515548B1_D0005.tif" /></maths><maths id="math0006" num="Equation 6"><math display="block"><mrow><mi mathvariant="italic">Radius</mi><mo>=</mo><mo>−</mo><msub><mrow><mmultiscripts><mrow><mo>/</mo></mrow><mprescripts /><none /><mi>φ</mi></mmultiscripts></mrow><mrow><mi>π</mi><mo>/</mo><mn>2</mn></mrow></msub></mrow></math><img file="EP1515548B1_D0006.tif" /></maths><maths id="math0007" num="Equation 7"><math display="block"><mrow><mi mathvariant="italic">Radius</mi><mo>=</mo><mo>−</mo><msub><mrow><mmultiscripts><mrow><mo>/</mo></mrow><mprescripts /><none /><mi>φ</mi></mmultiscripts></mrow><mn>90</mn></msub></mrow></math><img file="EP1515548B1_D0007.tif" /></maths>
Next, the input image X, Y (Ixy) pixel is calculated, as follows: <maths id="math0008" num="Equation 8"><math display="block"><mrow><mi mathvariant="italic">Ix</mi><mo>=</mo><mfenced separators=""><mi mathvariant="italic">Radius</mi><mo>×</mo><mi>cos</mi><mfenced><mi>θ</mi></mfenced><mo>×</mo><mi mathvariant="italic">IRx</mi></mfenced><mo>+</mo><mi mathvariant="italic">ICx</mi></mrow></math><img file="EP1515548B1_D0008.tif" /></maths><maths id="math0009" num="Equation 9"><math display="block"><mrow><mi mathvariant="italic">Iy</mi><mo>=</mo><mfenced separators=""><mi mathvariant="italic">Radius</mi><mo>×</mo><mi>sin</mi><mfenced><mi>θ</mi></mfenced><mo>×</mo><mi mathvariant="italic">IRy</mi></mfenced><mo>+</mo><mi mathvariant="italic">ICy</mi></mrow></math><img file="EP1515548B1_D0009.tif" /></maths>
The image buffer 120 is preferably addressed as a 1024 byte by 1024 byte array. The memory location, in the image buffer for the pixel data is calculated by: <maths id="math0010" num="Equation 10"><math display="block"><mrow><mi mathvariant="italic">PixelData</mi><mo>=</mo><mfenced separators=""><mi mathvariant="italic">Iy</mi><mo>×</mo><mn>1024</mn></mfenced><mo>+</mo><mi mathvariant="italic">Ix</mi></mrow></math><img file="EP1515548B1_D0010.tif" /></maths>
Pixel Data may then be sent to the encoder <b>135</b> for output to the output device such as a display monitor <b>140</b> and or a recorder <b>145.</b> Pixel Data for each pixel comprising the panoramic views <b>210</b> and <b>260</b> may be determined in a similar manner.
Each virtual view window <b>230</b> and <b>240</b> provides a perspective corrected view (e.g., a view with no, or substantially reduced, fisheye distortion) of any portion of a panoramic view <b>210</b> or <b>260.</b> The virtual view windows are preferably 360 pixels wide and <b>240</b> pixels high. The center of the window is defined as 0,0. <b>Wx</b> values range from <b>-180</b> to <b>+180</b> and <b>Wy</b> values range from <b>+120</b> down to <b>-120.</b> The <b>Wx</b> and <b>Wy</b> coordinates are taken from the output window line and pixel counters and, together with the desired Pan, Tilt and Zoom Scale, are transformed into θ, ϕ, and Radius using the virtual view transformation algorithm. The processor determines which algorithm (i.e., the virtual view transformation algorithm or the panoramic view transformation algorithm) to use based on where the counters indicate it is in the output video frame. As with the panoramic views, θ is defined as the Pan angle around the Z-Axis, where the positive Y direction, as shown in <figref idref="f0003"><b>Figure 3</b></figref><b>,</b> is 0 degrees. Additionally, ϕ is the Tilt angle around the X-Axis where the positive Z direction, pointing straight down as shown in <figref idref="f0003">Figure 3</figref>, is 0 degrees. Z is the perpendicular distance from the X-Y plane down to the surface of a unity radius hemispheric fisheye model.
The virtual view transformation algorithm entails converting the X and Y output window coordinates to an equivalent proportion of a unity radius hemisphere model using a current Zoom factor and a measured radius-X and radius-Y from an input fisheye circular image. These adjusted values are used to calculate a corresponding Z value. The X, Y and Z coordinates are rotated around the unity radius hemisphere model using the commanded Pan and Tilt from the user input module <b>190.</b> The rotated X and Y values are then rescaled back to pixels and lines, based on measured radius-X and radius-Y from the input fisheye circular image. The rescaled X and Y are then converted to an address in the input image buffer <b>120.</b> Data from this address is then output to the encoder <b>135</b> for display. The variables Pan, Tilt, and Zoom are the angle of interest commanded by the user input module <b>190.</b> Given: <ul id="ul0003" list-style="none" compact="compact"><li>Pan = Commanded Pan angle in degrees</li><li>Tilt = Commanded Tilt angle in degrees</li><li>Zoom = Requested Zoom scale (e.g., 1, 2, 3, etc....)</li><li>Wx = Output Window pixel x coordinate (-180 to + 180)</li><li>Wy = Output Window pixel y coordinate (+120 to -120)</li><li>IRx = Image buffer fisheye image X axis radius in pixels</li><li>IRy = Image buffer fisheye image Y axis radius in pixels</li><li>ICx = Image buffer fisheye image center X coordinate in pixels, as conceptually shown in <figref idref="f0004"><b>Figure 4</b></figref></li><li>ICy = Image buffer fisheye image center Y coordinate in pixels, as conceptually shown in <figref idref="f0004"><b>Figure 4</b></figref></li></ul>
The vertical and horizontal components of the virtual view window (center at origin 0,0) are converted from pixel units to unit values from 0 to less than one by dividing the pixel number by the respective image radius. One is the maximum length from the center of the virtual output image, to the edge of the image. By scaling to the image radius much of the three-dimensional transformation math can be simplified. <maths id="math0011" num="Equation 11"><math display="block"><mrow><mi mathvariant="italic">Wx</mi><mo>=</mo><mi mathvariant="italic">WindowX</mi><mo>/</mo><mi mathvariant="italic">IRx</mi></mrow></math><img file="EP1515548B1_D0011.tif" /></maths><maths id="math0012" num="Equation 12"><math display="block"><mrow><mi mathvariant="italic">Wy</mi><mo>=</mo><mi mathvariant="italic">WindowY</mi><mo>/</mo><mi mathvariant="italic">IRy</mi></mrow></math><img file="EP1515548B1_D0012.tif" /></maths>
To scale the Wx and Wy components by Zoom, the following equations are used. <maths id="math0013" num="Equation 13"><math display="block"><mrow><mi mathvariant="italic">Wx</mi><mo>=</mo><mi mathvariant="italic">Wx</mi><mo>×</mo><msub><mrow><mmultiscripts><mrow><mo>/</mo></mrow><mprescripts /><none /><mn>1</mn></mmultiscripts></mrow><mi mathvariant="italic">Zoom</mi></msub></mrow></math><img file="EP1515548B1_D0013.tif" /></maths><maths id="math0014" num="Equation 14"><math display="block"><mrow><mi mathvariant="italic">Wy</mi><mo>=</mo><mi mathvariant="italic">Wy</mi><mo>×</mo><msub><mrow><mmultiscripts><mrow><mo>/</mo></mrow><mprescripts /><none /><mn>1</mn></mmultiscripts></mrow><mi mathvariant="italic">Zoom</mi></msub></mrow></math><img file="EP1515548B1_D0014.tif" /></maths>
The desired radius squared is calculated from the vertical and horizontal components using the Pythagorean theorem. <maths id="math0015" num="Equation 15"><math display="block"><mrow><msup><mi mathvariant="italic">Wr</mi><mn>2</mn></msup><mo>=</mo><msup><mi mathvariant="italic">Wx</mi><mn>2</mn></msup><mo>+</mo><msup><mi mathvariant="italic">Wy</mi><mn>2</mn></msup></mrow></math><img file="EP1515548B1_D0015.tif" /></maths>
For each pixel, to convert the two dimensional radius squared and scaled components to a three dimensional value with a unit radius of 1, the following equations are used. Given: <maths id="math0016" num="Equation 16"><math display="block"><mrow><msup><mi mathvariant="italic">Ix</mi><mn>2</mn></msup><mo>+</mo><msup><mi mathvariant="italic">Iy</mi><mn>2</mn></msup><mo>+</mo><msup><mi mathvariant="italic">Iz</mi><mn>2</mn></msup><mo>=</mo><mn>1</mn></mrow></math><img file="EP1515548B1_D0016.tif" /></maths> Then: <maths id="math0017" num="Equation 17"><math display="block"><mrow><mi mathvariant="italic">Iz</mi><mo>=</mo><msqrt><mrow><mn>1</mn><mo>−</mo><msup><mi mathvariant="italic">Wr</mi><mn>2</mn></msup></mrow></msqrt></mrow></math><img file="EP1515548B1_D0017.tif" /></maths>
Assuming the acquired image center is perpendicular to the Z axis, a rotation of the desired window to a desired spot on the image can be performed using the Pan and Tilt values to simulate a movable dome.
To rotate around the X axis for tilt, the following equations are used. <maths id="math0018" num="Equation 18"><math display="block"><mrow><mi mathvariant="italic">Izʹ</mi><mo>=</mo><mfenced separators=""><mi mathvariant="italic">Iz</mi><mo>×</mo><mi>cos</mi><mfenced><mi mathvariant="italic">Tilt</mi></mfenced></mfenced><mo>−</mo><mfenced separators=""><mi mathvariant="italic">Wy</mi><mo>×</mo><mi>sin</mi><mfenced><mi mathvariant="italic">Tilt</mi></mfenced></mfenced></mrow></math><img file="EP1515548B1_D0018.tif" /></maths><maths id="math0019" num="Equation 19"><math display="block"><mrow><mi mathvariant="italic">Wyʹ</mi><mo>=</mo><mfenced separators=""><mi mathvariant="italic">Wy</mi><mo>×</mo><mi>cos</mi><mfenced><mi mathvariant="italic">Tilt</mi></mfenced></mfenced><mo>+</mo><mfenced separators=""><mi mathvariant="italic">Iz</mi><mo>×</mo><mi>sin</mi><mfenced><mi mathvariant="italic">Tilt</mi></mfenced></mfenced></mrow></math><img file="EP1515548B1_D0019.tif" /></maths>
To rotate around the Z axis for pan, the following equations are used. <maths id="math0020" num="Equation 20"><math display="block"><mrow><mi mathvariant="italic">Wxʹ</mi><mo>=</mo><mfenced separators=""><mi mathvariant="italic">Wx</mi><mo>×</mo><mi>cos</mi><mfenced><mi mathvariant="italic">Pan</mi></mfenced></mfenced><mo>−</mo><mfenced separators=""><mi mathvariant="italic">Wyʹ</mi><mo>×</mo><mi>sin</mi><mfenced><mi mathvariant="italic">Pan</mi></mfenced></mfenced></mrow></math><img file="EP1515548B1_D0020.tif" /></maths><maths id="math0021" num="Equation 21"><math display="block"><mrow><mi mathvariant="italic">Wyʹ</mi><mo>=</mo><mfenced separators=""><mi mathvariant="italic">Wx</mi><mo>×</mo><mi>sin</mi><mfenced><mi mathvariant="italic">Pan</mi></mfenced></mfenced><mo>+</mo><mfenced separators=""><mi mathvariant="italic">Wyʹ</mi><mo>×</mo><mi>cos</mi><mfenced><mi mathvariant="italic">Pan</mi></mfenced></mfenced></mrow></math><img file="EP1515548B1_D0021.tif" /></maths>
To convert unit values to Image Buffer pixel units, the following equations are used. <maths id="math0022" num="Equation 22"><math display="block"><mrow><mi mathvariant="italic">Ix</mi><mo>=</mo><mi mathvariant="italic">Wxʹ</mi><mo>×</mo><mi mathvariant="italic">IRx</mi></mrow></math><img file="EP1515548B1_D0022.tif" /></maths><maths id="math0023" num="Equation 23"><math display="block"><mrow><mi mathvariant="italic">Iy</mi><mo>=</mo><mi mathvariant="italic">Wyʹ</mi><mo>×</mo><mi mathvariant="italic">IRy</mi></mrow></math><img file="EP1515548B1_D0023.tif" /></maths>
To align the origin relative to upper left of input image buffer, the following equations are used. <maths id="math0024" num="Equation 24"><math display="block"><mrow><mi mathvariant="italic">Ix</mi><mo>=</mo><mi mathvariant="italic">Ix</mi><mo>+</mo><mi mathvariant="italic">ICx</mi></mrow></math><img file="EP1515548B1_D0024.tif" /></maths><maths id="math0025" num="Equation 25"><math display="block"><mrow><mi mathvariant="italic">Iy</mi><mo>=</mo><mi mathvariant="italic">Iy</mi><mo>+</mo><mi mathvariant="italic">ICy</mi></mrow></math><img file="EP1515548B1_D0025.tif" /></maths>
The image buffer <b>120</b> may be addressed as a 1024 byte by 1024 byte array. The memory location, in the image buffer <b>120,</b> for the pixel data is calculated using the following equation. <maths id="math0026" num="Equation 26"><math display="block"><mrow><mi mathvariant="italic">PixelData</mi><mo>=</mo><mfenced separators=""><mi mathvariant="italic">Iy</mi><mo>×</mo><mn>1024</mn></mfenced><mo>+</mo><mi mathvariant="italic">Ix</mi></mrow></math><img file="EP1515548B1_D0026.tif" /></maths>
PixelData may then be sent to the encoder <b>135</b> for output to the display window.
Advantageously, the panoramic views <b>210</b> and <b>260</b> provide context for the virtual views <b>230</b> and <b>240.</b> A user never loses sight as to what is happening in the monitored area outside a virtual view, even as the user zooms in on a specific event or object. The user does not have to keep changing video sources to view areas outside the virtual views <b>230</b> and <b>240.</b> Concomitantly, the reference windows <b>220</b> and <b>250</b> provide a visual indication of the portion of a panoramic view represented by a virtual view. Thus, a user can readily determine where in a monitored area they are looking. In an embodiment that includes an additional dome camera system, the ability to switch to the additional camera to produce a high resolution, high zoom factor, virtual view gives the user the ability to resolve small details of a scene.
Other transformation algorithms may be used for transforming wide-angle image data according to the principles of the invention. In selecting or deriving suitable algorithms, various factors may come into play, including, for example, available system resources (e.g.; processor type and speed, and memory), cost, speed and output quality. Thus, an algorithm may be better suited for one system configuration over another system configuration. Additionally, a system intended for a particular purpose, e.g., a high resolution progressive display, may benefit more from or demand a fast algorithm to generate the required undistorted pixel data in a timely manner.
Referring now to <figref idref="f0005"><b>Figure 5</b></figref><b>,</b> a high level flow chart illustrating a process for producing an undistorted image not in accordance with an exemplary implementation of the invention is shown. The steps may be implemented using a system with a programmed processor as described above. <figref idref="f0005"><b>Figure 5</b></figref> may equally represent a high level block diagram of an exemplary system not constructed in accordance with the invention, implementing the steps thereof.
In step <b>500,</b> wide angle image signals are decoded into digital wide-angle image data. The signals may be supplied from a video camera system or from a source of prerecorded data.
In step <b>510,</b> the decoded wide-angle data (e.g., fisheye lens image data) is buffered. Buffering entails storing the data in an input image buffer.
Next, in step <b>520,</b> pan, tilt and zoom data are obtained to specify regions of interest from the buffered wide-angle data for display. Pan, tilt and zoom data may be supplied via a user input module, such as user input module <b>290.</b> Those skilled in the art will appreciate that values other than pan, tilt and zoom (e.g., Cartesian coordinate values) may be specified to define areas of interest in the panoramic views.
Next, in step <b>540,</b> buffered wide-angle data are transformed using a transformation algorithm. The wide-angle image data is transformed, on a pixel-by-pixel basis, as the data for a pixel is required for encoding, to produce output signals in real-time. The transformation may, for example, be carried out according to a transformation process as described above.
Next, in step <b>550,</b> as data is transformed in step <b>540,</b> the transformed data is encoded for output. The encoded output may then be sent to a display monitor and/or to a recorder.
Those skilled in the art will appreciate that the order in which some of the steps are performed may vary from the order shown in the flowchart. For example, a pre-programmed pan, tilt and zoom may be determined before wide-angle data is initially buffered.
Referring now to <figref idref="f0006"><b>Figure 6</b></figref><b>,</b> a high level flow chart illustrating another process for producing an undistorted image not in accordance with an exemplary implementation of the invention is shown. As with the process illustrated by the flowchart of <figref idref="f0005"><b>Figure 5</b></figref><b>,</b> the steps may be implemented using a system with a programmed processor as described above. <figref idref="f0006"><b>Figure 6</b></figref> may equally represent a high level block diagram of an exemplary system constructed in accordance with the invention, implementing the steps thereof.
In step <b>610,</b> wide-angle image signals are decoded into digital wide-angle image data. The signals may be supplied from a video camera system or from a source of prerecorded data. Next in step <b>615,</b> the decoded wide-angle image data (e.g., fisheye lens image data) is buffered.
Next, in step <b>620,</b> buffered wide-angle data are transformed, for example, using a panoramic transformation algorithm for panoramic view data, and using a virtual view transformation algorithm for virtual view data. The wide-angle image data are transformed, on a pixel-by-pixel basis, as the data for a pixel is required for encoding, to produce output signals in real-time. The transformation may, for example, be carried out according to a transformation process as described above.
In step <b>625</b> the dome camera is positioned. Dome camera positioning signals may be obtained from user input, such as user input of pan, tilt and zoom data or commands. The communicated positioning signals will cause the dome camera to aim at and zoom to the region of the monitored area corresponding to the determined pan, tilt and zoom values. Those skilled in the art will appreciate that values other than pan, tilt and zoom (e.g., Cartesian coordinate values) may be specified to define areas of interest in the panoramic views.
Next, in step <b>630,</b> dome camera signals are decoded into digital dome camera image data. The signals are supplied from a dome camera system. Then, in step <b>635,</b> the decoded dome camera image data is buffered. The buffered dome camera data may be encoded, without transformation, for output to a display monitor and/or to a recorder.
In step <b>640,</b> coordinates are determined for overlaying a reference window in a panoramic view. The overlaid reference window, which is generated in step <b>645,</b> reveals the portion of a panoramic view represented by a virtual view.
In step <b>650,</b> buffered dome camera data, buffered wide-angle data, and data corresponding to a reference window are combined. The combined transformed wide-angle data, dome camera data and pixel data corresponding to the reference window are encoded, as in step <b>660.</b> The dome camera data may defines a virtual view. The transformed data may define another virtual view and panoramic views. The pixel data corresponding to the reference window defines a reference window. The encoded output may be sent to a display monitor and/or to a recorder.
Those skilled in the art will appreciate that the order in which some of the steps are performed may not be important. For example, the reference overlay coordinates may be determined before, after or during transformation of the buffered data. Additionally, by way of example, a pre-programmed pan, tilt and zoom may be determined before the wide-angle data is initially buffered. As another example, dome position data may be sent before reference overlay is determined. As yet another example, dome data may be buffered after transformation of wide-angle data. Also, dome camera data may be obtained by the processor before completion of transformation. Additionally, various steps may be performed concurrently.
Contents4
32 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32
Every citation, both ways
| Document | Relation | Office |
|---|---|---|
| EP1028389A | Cites | European Patent Office (EPO) |
| US5200818A | Cites | United States of America |
| US5903319A | Cites | United States of America |
| US2002102101A1 | Cites | United States of America |
6 members in 3 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 502700P | United States of America | – | |
| 50270003 | United States of America | P | |
| 50270003 | United States of America | P | |
| 502700P | – | – | – |
| US20030502700P | – | – | – |
Members6
| Document | Office | Kind | |
|---|---|---|---|
| CA2465087A1 | Canada | A1 | |
| EP1515548A2 | European Patent Office (EPO) | A2 | |
| US2005058360A1 | United States of America | A1 | |
| EP1515548A3 | European Patent Office (EPO) | A3 | |
| CA2465087C | Canada | C | |
| EP1515548B1This record | European Patent Office (EPO) | B1 |
72 legal events, as 9 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal feeWithdrawnR119 | R119 | DE | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Notification of lapseLapsedST | ST | FR | |
| Patent lapsedLapsedMM4A | MM4A | IE | |
| Gb: european patent ceased through non-payment of renewal feeCeasedGBPC | GBPC | EP | |
| Patent ceasedCeasedPL | PL | CH | |
| Standard patents granted in hong kongGrantedGR | GR | HK | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| No opposition filedOpposition26N | 26N | EP | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| No opposition filed against granted patent, or epo opposition proceedings concluded without decisionGrantedR097 | R097 | DE | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Deletion acc. to par. 5 (withdrawal of the translation of the ep patent)MK05 | MK05 | AT | |
| Patent invalid in the netherlands as no translation has been filedMP | MP | NL | |
| Dpma publication of mentioned ep patent grantGrantedR096 | R096 | DE | |
| Reference to at number (ep patent enters austrian national phase)REF | REF | AT | |
| European patents granted designating irelandGrantedFG4D | FG4D | IE | |
| European patent takes effect as a national patent in ch/liEP | EP | CH | |
| Designated contracting statesAK | AK | EP | |
| European patent grantedGrantedFG4D | FG4D | GB | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Intention to grant announcedINTG | INTG | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| Amendment of ipc main classPREVIOUS MAIN CLASS: H04N0005262000R079 | R079 | DE | |
| Party data changed (applicant data changed or rights of an application transferred)RAP1 | RAP1 | EP | |
| Party data changed (applicant data changed or rights of an application transferred)RAP1 | RAP1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Party data changed (applicant data changed or rights of an application transferred)RAP1 | RAP1 | EP | |
| First examination report despatched17Q | 17Q | EP | |
| Designation fees paidAKX | AKX | EP | |
| Request for examination filed17P | 17P | EP | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAX | AX | EP | |
| Search report despatchedORIGINAL CODE: 0009013PUAL | PUAL | EP | |
| Requests to designate patent in hong kongDE | DE | HK | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAX | AX | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 1515548
- Publication, DOCDB
- 1515548
- Publication, EPODOC
- EP1515548
- Application
- 40101404
- Application, DOCDB
- 04010140
- Application, EPODOC
- EP20040010140
Titles3
- German
- Bilderfassungssystem und -verfahren zur Anzeige und/oder Aufnahme von unverzerrten Weitwinkelbilddaten
- English
- Imaging system and method for displaying and /or recording undistorted wide-angle image data
- French
- Système et méthode de prise de vues pour affichage et/ou enregistrement des données d'images à grand angle sans distorsion
Classification
- CPC, 6
- H04N5/23238
- H04N5/2628
- H04N23/698
- H04N5/2259
- H04N7/181
- H04N23/58
- IPC, 4
- H04N5 225
- H04N5 232
- H04N5 262
- H04N7 18
Designated states28
- Contracting states, 28
- Austria
- Belgium
- Bulgaria
- Switzerland
- Cyprus
- Czechia
- Germany
- Denmark
- Estonia
- Spain
- Finland
- France
- United Kingdom
- Greece
- Hungary
- Ireland
- Italy
- Liechtenstein
- Luxembourg
- Monaco
- Netherlands (Kingdom of the)
- Poland
- Portugal
- Romania
and 4 moreShow fewer
- Sweden
- Slovenia
- Slovakia
- Türkiye
