Video user interface system and method
4 claims: 4 independent, 0 dependent
- 1A system (200) for creating signals indicative of a graphical user interface from wide-angle image data corresponding to a monitored area, said system (200) comprising:a buffer (220) configured to receive wide-angle image data corresponding to the monitored area;a processor (225) operably coupled to said buffer (220) and configured to transform wide angle image data received by the buffer (220) into panoramic view data corresponding to at least one panoramic view (110, 160) of the monitored area;a source of wide-angle image data operably coupled to said buffer (220), whereby the source of wide-angle image data is or comprises a video camera (210) equipped with a wide-angle lens (205),a dome camera system (250) operably coupled to the processor (225), said dome camera system (250) having a dome camera (260), and being configured to aim the dome camera (260) at a portion of the monitored area according to pan, tilt and zoom command data (292) corresponding to user input commands;wherein the dome camera image data exhibits a higher resolution than the wide-angle image data;and whereinthe portion of the monitored area at which the dome camera (260) is aimed corresponds to a virtual view (130, 140), and wherein the processor is further configured to provide reference data in form of graphically generated reference windows (120, 150) overlaid in the panoramic view (110, 160) corresponding to the undistorted virtual view generated by the dome camera system (250);wherebythe processor (225) is configured to process and transform said wide-angle image data received from the buffer (220) into panoramic view data corresponding to at least one panoramic view (110, 160) of the monitored area and into virtual view data corresponding to at least one virtual view (130, 140) of a portion of the at least one panoramic view (110, 160);wherebythe at least one panoramic view (110, 160) corresponds to a substantially undistorted view of the monitored area, and the at least one virtual view (130, 140) corresponds to a portion of the at least one panoramic view (110, 160), wherebythe panoramic view transformation process involves mathematically transforming wide-angle image data into two-dimensional space for producing panoramic views;whereby the processor (225) is configured to generate virtual view data from dome camera image data produced by the dome camera system (250), whereby the provision of the dome camera (260) enables switching by a user from a low resolution virtual view (130, 140) derived from transformed wide-angle image data to a high resolution virtual view (130, 140), with high zoom factor capability, generated from video image data produced by the dome camera (260);wherebythe system (200) further comprisesan user input module (290) configured to provide said user command data (292) to said processor (225), whereby said processor (225) is further configured to determine the virtual view data based on the user command data (292);anda display device (246) operably coupled to said processor (225) to display the at least one panoramic view (110, 160) with overlaid reference windows (120, 150) and the at least one virtual view (130, 140). System (200) zur Erzeugung von Signalen, die eine grafische Benutzeroberfläche anzeigen, aus Weitwinkel-Bilddaten, die einem überwachten Bereich entsprechen, wobei dieses System (200) aufweist: einen Zwischenspeicher (220), der eingerichtet ist, Weitwinkel-Bilddaten entsprechend dem überwachten Bereich zu empfangen;einen Prozessor (225), der mit dem Zwischenspeicher (220) wirkverbunden ist und eingerichtet ist, Weitwinkel-Bilddaten, die von dem Zwischenspeicher (220) empfangen wurden, in Panoramaansicht-Daten zu transformieren, die zumindest einer Panoramaansicht (110, 160) des überwachten Bereichs entsprechen;eine Quelle von Weitwinkel-Bilddaten, die mit dem Zwischenspeicher (220) wirkverbunden sind, wobei die Quelle der Weitwinkel-Bilddaten eine Videokamera (210) ist oder aufweist, die mit einem Weitwinkelobjektiv (205) ausgerüstet ist,ein Dome-Kamerasystem (250), das mit dem Prozessor (225) wirkverbunden ist, wobei das Dome-Kamerasystem (250) eine Dome-Kamera (260) aufweist, und eingerichtet ist, die Dome-Kamera (260) auf einen Teil des überwachten Bereichs entsprechend Schwenk-, Kipp- und Zoom-Befehlsdaten (292) auszurichten, die Nutzereingabebefehlen entsprechen;wobei die Dome-Kamera-Bilddaten eine höhere Auflösung zeigen als die Weitwinkel-Bilddaten;und wobeider Teil des überwachten Bereichs, auf den die Dome-Kamera (260) ausgerichtet ist, einer virtuellen Ansicht (130, 140) entspricht, und wobei der Prozessor ferner eingerichtet ist, Referenzdaten in Form von grafisch erzeugten Referenzfenstern (120, 150) bereitzustellen, die in der Panoramaansicht (110, 160) entsprechend der unverzerrten virtuellen Ansicht überlagert werden, die von dem Dome-Kamerasystem (250) erzeugt wird;wobeider Prozessor (225) eingerichtet ist, die Weitwinkelbilddaten, die von dem Zwischenspeicher (220) empfangen werden, in Panoramaansichtsdaten, die zumindest einer Panoramaansicht (110, 160) des überwachten Bereichs entsprechen, und in Daten einer virtuellen Ansicht, die zumindest einer virtuellen Ansicht (130, 140) eines Teils der zumindest einen Panoramaansicht (110, 160) entsprechen, zu verarbeiten und zu transformieren;wobeidie zumindest eine Panoramaansicht (110, 160) einer im Wesentlichen unverzerrten Ansicht des überwachten Bereichs entspricht, und die zumindest eine virtuelle Ansicht (130, 140) einem Teil der zumindest einen Panoramaansicht (110, 160) entspricht, wobeider Panoramaansicht-Transformationsprozess das mathematische Transformieren von Weitwinkel-Bilddaten in einen zweidimensionalen Raum umfasst, um Panoramaansichten zu erzeugen;wobeider Prozessor (225) eingerichtet ist, Daten einer virtuellen Ansicht aus Dome-Kamera-Bilddaten zu erzeugen, die von dem Dome-Kamerasystem (250) erzeugt werden, wobeidie Bereitstellung der Dome-Kamera (260) es dem Nutzer ermöglicht, von einer virtuellen Ansicht mit geringer Auflösung (130, 140), die aus transformierten Weitwinkel-Bilddaten gewonnen wird, in eine virtuelle Ansicht mit hoher Auflösung (130, 140) und der Fähigkeit zu einem hohen Zoom-Faktor umzuschalten, die aus Videobilddaten erzeugt wird, die von der Dome-Kamera (260) erzeugt werden, wobeidas System (200) ferner aufweist: ein Nutzereingabemodul (290), das eingerichtet ist, diese Nutzerbefehlsdaten (292) an den Prozessor (225) bereitzustellen, wobei der Prozessor (225) ferner eingerichtet ist, die Daten einer virtuellen Ansicht basierend auf den Nutzerbefehlsdaten (292) zu bestimmen;undeine Anzeigevorrichtung (246), die mit dem Prozessor (225) wirkverbunden ist, um die zumindest eine Panoramaansicht (110, 160) mit überlagerten Referenzfenstern (120, 150) und die zumindest eine virtuelle Ansicht (130, 140) anzuzeigen. Système (200) pour créer des signaux indiquant une interface utilisateur graphique à partir de données d'image grand-angle correspondant à une zone surveillée, ledit système (200) comprenant : un tampon (200) configuré pour recevoir des données d'image grand-angle correspondant à la zone surveillée ;un processeur (225) fonctionnellement couplé audit tampon (220) et configuré pour transformer des données d'image grand-angle reçues par le tampon (220) en données de vue panoramique correspondant à au moins une vue panoramique (110, 160) de la zone surveillée ;une source de données d'image grand-angle fonctionnellement couplée audit tampon (220), moyennant quoi la source de données d'image grand-angle est ou comprend une caméra vidéo (210) équipée d'un objectif grand-angle (205), un système de caméra dôme (250) fonctionnellement couplé au processeur (225), ledit système de caméra dôme (250) ayant une caméra dôme (260), et étant configuré pour diriger ledit système de caméra dôme (260) au niveau d'une partie de la zone surveillée en fonction de données d'instruction de panoramique, d'inclinaison et de zoom (292) correspondant à des instructions entrées par l'utilisateur ;dans lequel les données d'image de caméra dôme présentent une résolution supérieure à celle des données d'image grand-angle ;et dans lequella partie de la zone surveillée au niveau de laquelle la caméra dôme (260) est dirigée correspond à une vue virtuelle (130, 140), et dans lequel le processeur est en outre configuré pour fournir des données de référence sous la forme de fenêtres de référence générées graphiquement (120, 150) couvertes dans la vue panoramique (110, 160) correspondant à la vue virtuelle sans distorsion générée par le système de caméra dôme (250) ;moyennant quoi le processeur (225) est configuré pour traiter et transformer lesdites données d'image grand-angle reçues du tampon (220) en données de vue panoramique correspondant à au moins une vue panoramique (110, 160) de la zone surveillée et en données de vue virtuelle correspondant à au moins une vue virtuelle (130, 140) d'une partie de l'au moins une vue panoramique (110, 160) ;moyennant quoil'au moins une vue panoramique (110, 160) correspond à une vue sensiblement sans distorsion de la zone surveillée, et l'au moins une vue virtuelle (130, 140) correspond à une partie de l'au moins une vue panoramique (110, 160), moyennant quoile traitement de transformation de vue panoramique implique une transformation mathématique de données d'image grand-angle en espace bidimensionnel pour produire des vues panoramiques ;moyennant quoi le processeur (225) est configuré pour générer des données de vue virtuelle à partir de données d'image de caméra dôme produites par le système de caméra dôme (250), moyennant quoi la fourniture de la caméra dôme (260) permet une commutation par un utilisateur d'une vue virtuelle basse-résolution (130, 140) dérivée à partir de données d'image grand-angle vers une vue virtuelle haute-résolution (130, 140), avec une capacité de facteur de zoom élevée, générée à partir de données d'image vidéo produites par la caméra dôme (260) ;moyennant quoile système (200) comprend en outreun module d'entrée d'utilisateur (290) configuré pour fournir lesdites données d'instruction d'utilisateur (292) audit processeur (225), moyennant quoi ledit processeur (225) est en outre configuré pour déterminer les données de vue virtuelle sur la base des données d'instruction d'utilisateur (292) ;etun dispositif d'affichage (246) fonctionnellement couplé audit processeur (225) pour afficher l'au moins une vue panoramique (110, 160) avec des fenêtres de référence couvertes (120, 150) et l'au moins une vue virtuelle (130, 140).
- 2A system according to claim 1, wherein said processor (225) performs operations on the wide-angle image data to correct distortion in the wide-angle image data, such that said panoramic view (110, 160) is a corrected image. System nach Anspruch 1, wobei der Prozessor (225) Operationen an den Weitwinkel-Bilddaten durchführt, um eine Verzerrung in den Weitwinkel-Bilddaten zu korrigieren, so dass die Panoramaansicht (110, 160) ein korrigiertes Bild ist. Système selon la revendication 1, dans lequel ledit processeur (225) réalise des opérations sur les données d'image grand-angle pour corriger une distorsion dans les données d'image grand-angle, de sorte que ladite vue panoramique (110, 160) est une image corrigée.
- 3A system according to claim 1, wherein the system (200) transforms wide-angle image data received by the buffer into panoramic view data corresponding to at least one panoramic view (110, 160) in real time. System nach Anspruch 1, wobei das System (200) Weitwinkel-Bilddaten, die von dem Puffer empfangen werden, in Echtzeit in Panoramaansichtsdaten transformiert, die zumindest einer Panoramaansicht (110, 160) entsprechen. Système selon la revendication 1, dans lequel le système (200) transforme des données d'image grand angle reçues par le tampon en données de vue panoramique correspondant à au moins une vue panoramique (110, 160) en temps réel.
- 4A system according to claim 1, wherein:the at least one panoramic view (110, 160) includes a first panoramic view (110) and a second panoramic view (160), the first panoramic view (110) corresponding to a first portion of the monitored area, and the second panoramic view (160) corresponding to the remaining portion of the monitored area, andthe at least one virtual view (130, 140) includes a first virtual view (130) and a second virtual view (140), the first virtual view (130) corresponding to a first portion of the first panoramic view (110), and the second virtual view (140) corresponding to a second portion of the second panoramic view (160). System nach Anspruch 1, wobei die zumindest eine Panoramaansicht (110, 160) eine erste Panoramaansicht (110) und eine zweite Panoramaansicht (160) umfasst, wobei die erste Panoramaansicht (110) einem ersten Teil des überwachten Bereichs entspricht, und die zweite Panoramaansicht (160) dem übrigen Teil des überwachten Bereichs entspricht, und die zumindest eine virtuelle Ansicht (130, 140) eine erste virtuelle Ansicht (130) und eine zweite virtuelle Ansicht (140) umfasst, wobei die erste virtuelle Ansicht (130) einem ersten Teil der ersten Panoramaansicht (110) entspricht, und die zweite virtuelle Ansicht (140) einem zweiten Teil der zweiten Panoramaansicht (160) entspricht. Système selon la revendication 1, dans lequel : l'au moins une vue panoramique (110, 160) inclut une première vue panoramique (110) et une seconde vue panoramique (160), la première vue panoramique (110) correspondant à une première partie de la zone surveillée, et la seconde vue panoramique (160) correspondant à la partie restante de la zone surveillée, etl'au moins une vue virtuelle (130, 140) inclut une première vue virtuelle (130) et une seconde vue virtuelle (140), la première vue virtuelle (130) correspondant à une première partie de la première vue panoramique (110), et la seconde vue virtuelle (140) correspondant à une seconde partie de la seconde vue panoramique (160).
Independent claims4
85 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 a graphical user interface from image data, such as video images.
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. One shortcoming of such conventional systems is that they do not conveniently enable a user to discern the part of the monitored area represented by the displayed portion. For example, a video surveillance system may display a close-up image of a person or an object (the displayed portion) in a room or a parking lot (the monitored area). Without an image of the entire room or lot and an indication of the area represented by the close-up image, it may be difficult or impossible to quickly determine the position of the person or object in the monitored room or lot. This is especially true for a crowded room or lot, where it may be difficult to distinguish one isolated portion from another.
Another shortcoming is that video surveillance systems typically do not allow an operator to see anything but the portions of monitored areas being displayed. The undisplayed portions may comprise a substantial portion of a monitored area, in which significant activity of interest may occur. For example, if a displayed image represents only 10% of a monitored parking lot, the other 90% may be unmonitored at any given time.
Yet another shortcoming is that high zoom factor images mathematically derived from wide-angle lens image data tend to exhibit low resolution. The greater the zoom factor, the lower the resolution. This impairs an operator's ability to distinguish fine details (e.g., facial features or automobile license plate numbers) in a monitored area.
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 devices and methods, particularly those employing images of moving objects, regardless of the particular format of the image data.
<patcit id="pcit0001" dnum="WO9750252A1"><text>WO 97/50252 A1</text></patcit> discloses an apparatus for capturing panoramic images, said apparatus comprising: a convex mirror, said convex mirror reflecting light from 360 degrees around said convex mirror; an astigmatism correction lens, said astigmatism correction lens correcting astigmatism in said light reflected from said convex mirror; an objective lens for focusing said light reflected from said convex mirror; and an image capture mechanism, said image capture mechanism capturing said light reflected from said convex mirror.
<patcit id="pcit0002" dnum="WO9945511A1"><text>WO 99/45511 A1</text></patcit> discloses a system and method for monitoring and surveillance employing both wide-angle and narrow-angle imaging systems. The system includes a first imaging system having a wide-angle field of view approximately equal to or greater than the area. The system also includes one or more second imaging systems having adjustable view settings, each of said one or more second imaging systems positioned to view portions of said area and being capable of producing images of said portions with a resolution greater than said first imaging system. The system also includes one or more controls for controlling the adjustable view settings of the one or more second imaging systems, so as to obtain high-resolution, magnified images of regions of interest within the area being monitored. In a preferred embodiment, the adjustable view settings include pan, tilt, and zoom settings for adjusting the panning, tilting, and zooming of the one or more second imaging systems.
<patcit id="pcit0003" dnum="US20010019355A1"><text>US 2001/0019355 A1</text></patcit> discloses a controller for a photographing apparatus having a photographing portion with driving means that allows the photographing direction of photographing means, which is a pan tilter camera, to be varied.
SUMMARY OF THE INVENTION
The invention avoids the drawbacks of the prior art by providing a graphical user interface that may, according to one aspect of the invention, include one or more panoramic views of a monitored area, one or more virtual views preferably corresponding to portions of the monitored area, and/or reference data such as a reference window overlaid in a panoramic view to identify a portion of the panoramic view corresponding to a virtual view. Panoramic views of the invention, which may be derived from wide-angle lens image data, exhibit a determined (e.g., upright) orientation and substantially reduced (or no) wide-angle image distortion, thus providing a readily discernible view. Virtual views of the invention, which may be based upon either transformed wide-angle lens image data or image data from a camera system without a wide-angle lens, also exhibit substantially reduced (or no) wide-angle image distortion, thus providing a readily discernible view. The virtual views and reference windows may respond to operator commands.
In particular, according to the invention, a system according to Claim 1 is provided
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 without limiting the scope of the invention as claimed.
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 illustrates a graphical user interface constructed in accordance with the principles of the invention;</li><li><figref idref="f0002">Figure 2</figref> is a block diagram that conceptually shows an imaging system for producing a graphical user interface in accordance with an exemplary embodiment of the invention;</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 an exemplary implementation 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 an exemplary implementation 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 in accordance with an exemplary implementation 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 in accordance with an exemplary implementation of the invention.</li></ul>
DETAILED DESCRIPTION
User Interface
An exemplary system in accordance with the invention includes a processor configured to transform digital image data corresponding to the wide-angle images, such as video images, of a monitored area into data corresponding to one or more panoramic views of the monitored area. Referring to <figref idref="f0001"><b>Figure 1</b></figref><b>,</b> a user interface in accordance with an exemplary implementation of the invention is conceptually shown. Strips <b>110</b> and <b>160,</b> which may be rectangular in shape as illustrated, correspond to transformed panoramic views. The transformed panoramic views <b>110</b> and <b>160</b> exhibit upright orientation and substantially reduced (or no) wide-angle image distortion, thus providing a readily discernible view of the monitored area. Examples of a suitable transformation carried out by the processor are discussed subsequently.
The processor is also configured to provide data corresponding to one or more virtual views <b>130</b> and <b>140,</b> each of which is an undistorted (or substantially undistorted) view of a user-determined portion of the panoramic views <b>110</b> and <b>160.</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) or a telephoto lens to produce image data for the determined portion of the monitored area. Again, a suitable transformation to obtain the virtual view data is discussed subsequently.
The processor may be further configured to provide reference data (e.g., windows - i.e., graphically generated boxes or other shapes overlaid in the panoramic views - boxes as shown in <figref idref="f0001"><b>Figure 1</b></figref>) corresponding to the undistorted view of the determined portions of the panoramic views represented by the virtual views 130 and <b>140.</b> Thus, the reference data reveals what portions of the panoramic views are represented by the virtual views <b>130</b> and <b>140.</b>
As an operator pans, tilts or zooms either of the virtual views <b>130</b> and <b>140</b> to correspond to any part of either of panoramic views <b>110</b> and <b>160,</b> the corresponding reference window <b>120</b> or <b>150</b> overlaid on top of a panoramic view <b>110</b> and <b>160</b> moves in the panoramic view <b>110</b> or <b>160,</b> thus indicating the part of the panoramic view <b>110</b> and <b>160</b> represented by the virtual view <b>130</b> or <b>140.</b>
The system is preferably configured to allow a user to select which virtual view <b>130</b> or <b>140</b> to currently control. The active (i.e., currently controlled) virtual view <b>130</b> or <b>140</b> may be distinguished from the inactive virtual view by an indicia. For example, a white frame may surround the active virtual window and a black frame may surround the inactive virtual view. The corresponding reference window <b>120</b> or <b>150</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 486 by 720 pixels. The exemplary panoramic views, as shown in <figref idref="f0001"><b>Figure 1</b></figref><b>,</b> are each 720 pixels wide and 120 pixels high. The exemplary virtual views, as shown in <figref idref="f0001"><b>Figure 1</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 data (e.g., reference windows <b>120</b> and <b>150</b>) may be controllable via a user input device, such as a joystick, cursors or other pointing device. Thus, for example, a user may move and resize reference windows <b>120</b> and <b>150</b> to cover any portions of the panoramic views <b>110</b> and <b>160.</b> The portions of the panoramic views covered by the reference windows <b>120</b> and <b>150</b> correspond to or define the virtual views <b>130</b> and <b>140.</b> The system may also automatically determine the portions of the panoramic views <b>110</b> and <b>160</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). Other manifestations of reference data, such as numerical coordinates or cross hairs, may be used in lieu of or in addition to reference windows <b>120</b> and <b>150.</b>
Panoramic views <b>110</b> and <b>160</b> and virtual views <b>130</b> and <b>140</b> may be displayed concurrently on a display monitor, thus providing a readily discernible view of the entire monitored area and an undistorted (or substantially undistorted) view of a portion of the monitored area. The reference data may also be displayed with the panoramic views <b>110</b> and <b>160,</b> thus enabling a user to readily identify the portions of the panoramic views <b>110</b> and <b>160</b> that are represented by the virtual views <b>130</b> and <b>140.</b>
Those skilled in the art will appreciate that the invention is not limited to the exemplary number, size, shape or arrangement of panoramic views and/or reference windows shown in <figref idref="f0001"><b>Figure 1</b></figref> and discussed above. For example, one or more panoramic views <b>110</b> and <b>160,</b> virtual views <b>130</b> and <b>140</b> and or reference windows <b>120</b> and <b>150</b> may be provided without departing from the scope of the invention. Additionally, the user interface components may be arranged as shown in <figref idref="f0001"><b>Figure 1</b></figref> and discussed above, or differently, on one or more display monitors, or in one or more windowed portions of one or more display monitors, without departing from the scope of the invention. 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>110</b> or <b>160,</b> and/or a virtual view <b>130</b> or <b>140</b> and/or a reference window <b>120</b> or <b>150;</b> or hide all virtual views <b>130</b> and <b>140</b> reference windows <b>120</b> and <b>150;</b> or opt to display only a selected panoramic view <b>110</b> or <b>160</b> or virtual view <b>130</b> or <b>140.</b>
Hardware
Various image sources comprising a video camera (201) equipped with a wide-angle lens (205) 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 standard 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="f0002">Figure 2</figref>, a high-level block diagram of a video imaging system 200 for use with a system in accordance with an exemplary implementation of the invention is shown. The video imaging system <b>200</b> includes a video camera <b>210</b> equipped with a wide-angle lens <b>205,</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 50 degrees or more. The wide-angle lens 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, and which may have a field of view of 180 degrees, may be utilized. The camera <b>210</b> may be a digital camera such as a camera that employs 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. Alternatively, the camera <b>210</b> may be an analog camera that produces analog (e.g. NTSC or PAL) output signals.
The wide-angle lens <b>205</b> is aimed at the area to be monitored. The lens <b>205</b> may be a fisheye lens or another type of wide-angle lens that provides a 180° field of view, or a wider or narrower field of view. The position and orientation may generate a fisheye view of the entire monitored area.
A video decoder <b>215</b> operably coupled to the camera translates analog signals from the camera into digital video data. The decoder <b>215</b> may 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>217</b> from the clock circuit may be transmitted to processor <b>225.</b>
By way of example and not limitation, a suitable decoder <b>215</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. It is 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 accepts as analog inputs CVBS (i.e., composite Chroma Video Blanking & Sync inputs) or S-video (Y/C).
Digital video data from decoder <b>215</b> may be stored in an image buffer <b>220.</b> The image buffer <b>220</b> provides a means for storing wide-angle image data corresponding to a monitored area. The image buffer <b>220</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>225 ,</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 period of time elapses. The buffer <b>220</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>290</b> may also be provided to generate user commands. By way of example, the module may include an input device <b>275</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>275</b> may be operably coupled to an input processor <b>280</b> and input memory <b>285</b> configured to produce user command data <b>292</b> corresponding to user input commands. The input processor <b>280</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; a programmable logic device such as a field programmable gate array (FPGA), or the like. The input memory <b>285</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>280.</b> Using a user input device <b>275,</b> a user may identify a portion of a panoramic view to be displayed as a virtual view. A user may also control zoom factors for virtual views, and other display parameters via the user input device <b>275.</b>
An image data processor <b>225</b> may receive buffered image data <b>222,</b> clock signals <b>217</b> and user command data <b>292</b> to produce panoramic view data, virtual view data and reference data. The image data processor <b>225</b> thus provides a means for processing and transforming data received from the storing means (i.e., the image buffer <b>220</b>) into panoramic view data corresponding to at least one panoramic view of the monitored area and into virtual view data corresponding to at least one virtual view of a portion of the at least one panoramic view. The processor <b>225</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; 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>225.</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>225</b> may also be operably coupled to memory <b>230,</b> which may, for example, be non-volatile memory in the form of electronically erasable programmable read only memory (EEPROM), such as flash memory, with or without a controller; a solid-state floppy-disk card (SSFDC) such as SmartMedia® memory commercially available from Kabushiki Kaisha Toshiba, Toshiba Corporation, and Toshiba America Electronic Components, Inc.; CompactFlash® memory by SanDisk Corporation; hard disk enabled virtual memory; and/or other non-volatile storage devices. Illustratively, memory <b>230</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>225</b> resources. By way of example and not limitation, memory <b>230</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>225</b> calculations. The use of pre-determined stored values conserves processor resources and may lead to an appreciable increase in overall computation speed.
As discussed more fully below, the image data processor <b>225</b> mathematically transforms wide angle video image data in the image buffer <b>220</b> into panoramic views using a panoramic view transformation algorithm. Depending upon the implementation, the image data processor <b>225</b> may also transform wide angle video image data in the image buffer <b>220</b> into virtual views using a virtual view transformation algorithm, as discussed more fully below.
Upon transformation, the processor <b>225</b> sends transformed video data to an encoder <b>235.</b> The encoder converts the digital video data into output signals compatible with an output device such as a display monitor <b>240</b> and/or video recorder <b>245.</b>
By way of example and not limitation, the encoder 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>235</b> is sent to an output device, such as a standard display monitor <b>240</b> and/or video recorder <b>245.</b> The display monitor may be any device configured to visually display images based on electronic video signals output from the encoder <b>235.</b> The recorder may be any device configured to record video signals from the encoder <b>235</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>240</b> and recorder <b>245</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).
Instead of transforming wide angle video image data in the image buffer <b>220</b> into a virtual view using a virtual view transformation algorithm, the image data processor <b>225</b> may generates virtual view data from video image data produced by one or more additional camera systems <b>250.</b> An additional camera system may include an analog or digital camera <b>260</b> with a normal lens <b>255</b> (i.e., not a wide angle lens) aimed at a determined portion of the monitored area. The lens <b>255</b> may have a narrower Field of View (FOV), e.g., 45°, which would provide higher resolution than wide-angle lens <b>205,</b> thus providing a more detailed video image for a virtual view. Thus, the additional camera enables switching from a low resolution virtual view derived from wide-angle lens image data to a high resolution virtual view, with high 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>250</b> may also include a video decoder <b>265</b> that is operably coupled to the camera and configured to translate analog signals from the camera into digital video data. The decoder <b>265</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>267</b> may be transmitted to processor <b>225.</b>
The additional camera system <b>250</b> may further include an image buffer <b>270.</b> The image buffer <b>270</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>270</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 272 may be transmitted to processor <b>225.</b> That data may then be processed and encoded <b>235</b> for display in either virtual view <b>130</b> or <b>140.</b>
Moreover, the additional camera system <b>250</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. The dome camera <b>260</b> may be coupled to a processor programmed to produce control signals causing the camera <b>260</b> to aim at particular portions of a monitored area in particular patterns. Alternatively, processor <b>225</b> may produce control data <b>294,</b> based upon user command data <b>292</b> from user input module <b>290,</b> to control positioning and movement of the dome camera. A control interface (not shown) may also be operably coupled to dome camera <b>260</b> and processor <b>225,</b> as necessary to convert control data output from the processor <b>225</b> into signals for controlling dome camera <b>260</b> position, movement and zooming.
Transformation Methodologies
Referring again to <figref idref="f0001"><b>Figure 1</b></figref><b>,</b> panoramic views <b>110</b> and <b>160</b> and virtual views <b>130</b> and <b>140</b> may be produced by transforming wide-angle image data (including fisheye image data) into 2-dimensional space, without distortion (or with substantially reduced distortion). Many such 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 panoramic views <b>110</b> and <b>160</b> and virtual views <b>130</b> and <b>140</b> with linear perspective geometry 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.
The 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>220</b> for pixel data to be encoded and output to a display <b>240</b> and/or recorder <b>245.</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>110</b> and <b>160</b> are produced. One panoramic view <b>110</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>290.</b> Given: <ul id="ul0002" list-style="none" compact="compact"><li>Zoom_1X_Tilt_FOV = 45°</li><li>ScaleFactorX(SFx) = 180°/720 pixels = 0.25°/pixel</li><li>Zoom Scale(ZS) = 1 (Requested zoom factor ie: 1, 2, 3 etc.)</li><li>ScaleFactorY(SFy) = (Zoom_1X_FOV) × (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 down 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">Figure 4</figref></li><li>ICy = Image buffer fisheye image center Y coordinate in pixels, as conceptually shown in <figref idref="f0004">Figure 4</figref>.</li></ul>
The horizontal component of the panoramic view (starting with output window upper left at <b>-360,+120</b>) is converted from pixel units to degrees(<b>SFx</b>). Each output pixel equates to .25 degrees (<b>180</b>°/<b>720</b> pixels). The programmable <b>Pan</b> value is added to each pixel value. The second panoramic view <b>160</b> is offset from the first <b>110</b> by <b>+180</b> degrees.
Therefore: <maths id="math0001" num="Equation 1"><math display="block"><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></math><img file="EP1515546B1_D0001.tif" /></maths><maths id="math0002" num="Equation 2"><math display="block"><mi>θ</mi><mo>=</mo><mn>0.25</mn><mo></mo><mi mathvariant="italic">Wx</mi><mo>+</mo><mn>90</mn><mo>+</mo><mi mathvariant="italic">Pan</mi></math><img file="EP1515546B1_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"><mi>ϕ</mi><mo>=</mo><mfenced separators=""><mfrac bevelled="true"><mi>π</mi><mn>2</mn></mfrac><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></math><img file="EP1515546B1_D0003.tif" /></maths><maths id="math0004" num="Equation 4"><math display="block"><mi>ϕ</mi><mo>=</mo><mn>90</mn><mo>−</mo><mi mathvariant="italic">Tilt</mi><mo>−</mo><mn>0.375</mn><mo></mo><mi mathvariant="italic">Wy</mi><mo>−</mo><mn>22.5</mn></math><img file="EP1515546B1_D0004.tif" /></maths><maths id="math0005" num="Equation 5"><math display="block"><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></math><img file="EP1515546B1_D0005.tif" /></maths><maths id="math0006" num="Equation 6"><math display="block"><mi mathvariant="italic">Radius</mi><mo>=</mo><mo>−</mo><mfrac bevelled="true"><mi>ϕ</mi><mrow><mi>π</mi><mo>/</mo><mn>2</mn></mrow></mfrac></math><img file="EP1515546B1_D0006.tif" /></maths><maths id="math0007" num="Equation 7"><math display="block"><mi mathvariant="italic">Radius</mi><mo>=</mo><mo>−</mo><mfrac bevelled="true"><mi>ϕ</mi><mn>90</mn></mfrac></math><img file="EP1515546B1_D0007.tif" /></maths>
Next, the input image X,Y (Ixy) pixel is calculated, as follows: <maths id="math0008" num="Equation 8"><math display="block"><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></math><img file="EP1515546B1_D0008.tif" /></maths><maths id="math0009" num="Equation 9"><math display="block"><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></math><img file="EP1515546B1_D0009.tif" /></maths>
The image buffer <b>220</b> 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"><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></math><img file="EP1515546B1_D0010.tif" /></maths>
PixelData may then be sent to the encoder <b>235</b> for output to the output device such as a display monitor <b>240</b> and or a recorder <b>245.</b> Pixel Data for each pixel comprising the panoramic views <b>110</b> and <b>160</b> may be determined in a similar manner.
Each virtual view window <b>130</b> and <b>140</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>110</b> or <b>160.</b> The virtual view windows are preferably 360 pixels wide and 240 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">Figure 3</figref>, 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 290. 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 capture buffer. Data from this address is then output to the encoder for display. The variables Pan, Tilt, and Zoom are the angle of interest commanded by the user input module <b>290.</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 (ie: 1,2,3,etc....)</li><li>Wx = Output Window pixel x coordinate (-180 to +180)</li><li>Wy = Output Window pixel y coordinate (+120 down 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">Figure 4</figref></li><li>ICy = Image buffer fisheye image center Y coordinate in pixels, as conceptually shown in <figref idref="f0004">Figure 4</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 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 3-dimensional transformation math can be simplified. <maths id="math0011" num="Equation 11"><math display="block"><mi mathvariant="italic">Wx</mi><mo>=</mo><mi mathvariant="italic">WindowX</mi><mo>/</mo><mi mathvariant="italic">IRx</mi></math><img file="EP1515546B1_D0011.tif" /></maths><maths id="math0012" num="Equation 12"><math display="block"><mi mathvariant="italic">Wy</mi><mo>=</mo><mi mathvariant="italic">WindowY</mi><mo>/</mo><mi mathvariant="italic">IRy</mi></math><img file="EP1515546B1_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"><mi mathvariant="italic">Wx</mi><mo>=</mo><mi mathvariant="italic">Wx</mi><mo>×</mo><mfrac bevelled="true"><mn>1</mn><mi mathvariant="italic">Zoom</mi></mfrac></math><img file="EP1515546B1_D0013.tif" /></maths><maths id="math0014" num="Equation 14"><math display="block"><mi mathvariant="italic">Wy</mi><mo>=</mo><mi mathvariant="italic">Wy</mi><mo>×</mo><mfrac bevelled="true"><mn>1</mn><mi mathvariant="italic">Zoom</mi></mfrac></math><img file="EP1515546B1_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"><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></math><img file="EP1515546B1_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"><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></math><img file="EP1515546B1_D0016.tif" /></maths> Then: <maths id="math0017" num="Equation 17"><math display="block"><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></math><img file="EP1515546B1_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"><mi mathvariant="italic">Iz</mi><mo>′</mo><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></math><img file="EP1515546B1_D0018.tif" /></maths><maths id="math0019" num="Equation 19"><math display="block"><mi mathvariant="italic">Wy</mi><mo>′</mo><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></math><img file="EP1515546B1_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"><mi mathvariant="italic">Wx</mi><mo>′</mo><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><mo>×</mo><mi>sin</mi><mfenced><mi mathvariant="italic">Pan</mi></mfenced></mfenced></math><img file="EP1515546B1_D0020.tif" /></maths><maths id="math0021" num="Equation 21"><math display="block"><mi mathvariant="italic">Wy</mi><mo>′</mo><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><mo>×</mo><mi>cos</mi><mfenced><mi mathvariant="italic">Pan</mi></mfenced></mfenced></math><img file="EP1515546B1_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"><mi mathvariant="italic">Ix</mi><mo>=</mo><mi mathvariant="italic">Wx</mi><mo>′</mo><mo>×</mo><mi mathvariant="italic">IRx</mi></math><img file="EP1515546B1_D0022.tif" /></maths><maths id="math0023" num="Equation 23"><math display="block"><mi mathvariant="italic">Iy</mi><mo>=</mo><mi mathvariant="italic">Wy</mi><mo>′</mo><mo>×</mo><mi mathvariant="italic">IRy</mi></math><img file="EP1515546B1_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"><mi mathvariant="italic">Ix</mi><mo>=</mo><mi mathvariant="italic">Ix</mi><mo>+</mo><mi mathvariant="italic">ICx</mi></math><img file="EP1515546B1_D0024.tif" /></maths><maths id="math0025" num="Equation 25"><math display="block"><mi mathvariant="italic">Iy</mi><mo>=</mo><mi mathvariant="italic">Iy</mi><mo>+</mo><mi mathvariant="italic">ICy</mi></math><img file="EP1515546B1_D0025.tif" /></maths>
The image buffer 220 may be addressed as a 1024 byte by 1024 byte array. The memory location, in the image buffer 220, for the pixel data is calculated using the <maths id="math0026" num="Equation 26"><math display="block"><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></math><img file="EP1515546B1_D0026.tif" /></maths>
PixelData may then be sent to the encoder 235 for output to the display window.
Advantageously, the panoramic views <b>110</b> and <b>160</b> provided by the invention provide context for the virtual views <b>130</b> and <b>140.</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>130</b> and <b>140.</b> Concomitantly, the reference windows <b>120</b> and <b>150</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. The provision of an additional dome camera system, creates 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.
Referring now to <figref idref="f0005"><b>Figure 5</b></figref><b>,</b> a high level flow chart for a process of creating a video user interface 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 constructed in accordance with the invention, implementing the steps thereof.
In step <b>510,</b> wide-angle data (e.g., fisheye lens image data) is buffered. The data may be supplied from a video camera system with a decoder or from a source of pre-recorded data.
Next, in step <b>520,</b> pan, tilt and zoom angles are determined to specify regions of interest in the panoramic views for display in virtual views. Pan, tilt and zoom angles may be supplied by a programmed algorithm, a table or a user input module. 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>530,</b> reference data for reference windows are determined. The reference data preferably corresponds to rectangular windows overlaying the virtual view regions of interest within the panoramic views. Preferably, the rectangular windows move according to a programmed algorithm, a table or user commands from a user input module. As the rectangular windows move, the virtual views correspondingly change.
Next, in step <b>540,</b> buffered wide-angle data are transformed using a panoramic transformation algorithm for panoramic view data, and using a virtual view transformation algorithm for virtual view data.
Next, in step <b>550,</b> the transformed data and reference data are encoded for output. The transformed data defines any other virtual views and the panoramic views. The reference data defines the reference windows. 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 may vary from the order shown in the flowchart without departing from the scope of the invention, For example, reference data may be determined before, after or during transformation of the buffered data. Additionally, 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 for another process of creating video user interface in accordance with an exemplary implementation of the invention is shown. As with the process illustrated by the flowchart of <figref idref="f0005">Figure 5</figref>, 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 data (e.g., fisheye lens image data) is buffered. The data may be supplied from a video camera system with a decoder .
Next, in step <b>620,</b> pan, tilt and zoom angles are determined to specify regions of interest in the panoramic views for display in virtual views. Pan, tilt and zoom angles may be supplied by a programmed algorithm, a table or a user input module. 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> reference data for reference windows are determined. The reference data preferably corresponds to rectangular windows overlaying the virtual view regions of interest within the panoramic views. Preferably, the rectangular windows move according to a programmed algorithm, a table or user commands from a user input module. As the rectangular windows move, the virtual views correspondingly change.
Next, in step <b>640,</b> position data is communicated to a dome camera system. The communicated position data 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.
In step <b>650,</b> dome camera data is buffered. The buffered data may be encoded, without transformation, for output to a display monitor and/or to a recorder as a virtual view.
Next, in step <b>660,</b> buffered wide-angle data are transformed using a panoramic transformation algorithm for panoramic view data, and using a virtual view transformation algorithm for virtual view data.
Next, in step <b>670,</b> buffered dome camera data are obtained for encoding. The dome camera data may be obtained form a dome camera buffer by a processor and communicated with transformed wide-angle data for encoding.
Next, in step <b>680,</b> the transformed data, dome camera data and reference data are encoded for output. The dome camera data defines one virtual view. The transformed data defines any other virtual views and the panoramic views. The reference data defines the reference windows. 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 data 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 data 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. Such variations in order are intended to come within the scope of the invention.
Although the foregoing description is directed to preferred embodiments of the invention, it is noted that other variations and modifications will be apparent to those skilled in the art, and may be made without departing from the scope of the invention as claimed.
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 |
|---|---|---|
| EP0714081A1 | Cites | European Patent Office (EPO) |
| EP1363255A2 | Cites | European Patent Office (EPO) |
| WO9750252A1 | Cites | World Intellectual Property Organization (WIPO) |
| WO9945511A1 | Cites | World Intellectual Property Organization (WIPO) |
| US5107117A | Cites | United States of America |
| US2001019355A1 | Cites | United States of America |
9 members in 4 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 502728P | United States of America | – | |
| 50272803 | United States of America | P | |
| 50272803 | United States of America | P | |
| 502728P | – | – | – |
| US20030502728P | – | – | – |
Members9
| Document | Office | Kind | |
|---|---|---|---|
| CA2465045C | Canada | C | |
| CA2465045A1 | Canada | A1 | |
| EP1515546A2 | European Patent Office (EPO) | A2 | |
| US2005062845A1 | United States of America | A1 | |
| EP1515546A3 | European Patent Office (EPO) | A3 | |
| US2013300822A1 | United States of America | A1 | |
| US9955073B2 | United States of America | B2 | |
| EP1515546B1This record | European Patent Office (EPO) | B1 | |
| ES2748129T3 | Spain | T3 |
70 legal events, as 10 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Applications withdrawn, deemed to be withdrawn, or refused after publication in hong kongWithdrawnWD | WD | HK | |
| 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 | |
| Patent expired after termination of 20 yearsExpiredPE20 | PE20 | GB | |
| Announcement of lapse in spainLapsedFD2A | FD2A | ES | |
| Expiry of rightR071 | R071 | DE | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Amendment of ipc main classPREVIOUS MAIN CLASS: H04N0005232000R079 | R079 | 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 because of non-payment of the annual feeLapsedMM | MM | BE | |
| 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 | |
| Patent ceasedCeasedPL | PL | CH | |
| 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 | |
| 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 | |
| Definitive protectionFG2A | FG2A | ES | |
| 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 | |
| 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 | |
| Patent invalid in the netherlands as no translation has been filedMP | MP | NL | |
| European patents granted designating irelandGrantedFG4D | FG4D | IE | |
| Dpma publication of mentioned ep patent grantGrantedR096 | R096 | DE | |
| European patent takes effect as a national patent in ch/liEP | EP | CH | |
| Reference to at number (ep patent validated in austria)REF | REF | AT | |
| Designated contracting statesAK | AK | EP | |
| European patent grantedGrantedFG4D | FG4D | GB | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: THE PATENT HAS BEEN GRANTEDSTAA | STAA | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Intention to grant announcedINTG | INTG | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: GRANT OF PATENT IS INTENDEDSTAA | STAA | EP | |
| 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 | |
| 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
- 1515546
- Publication, DOCDB
- 1515546
- Publication, EPODOC
- EP1515546
- Application
- 40101396
- Application, DOCDB
- 04010139
- Application, EPODOC
- EP20040010139
Titles3
- German
- Videobenutzerschnittstellensystem und -verfahren
- English
- Video user interface system and method
- French
- Système d'interface d'utilisateur vidéo et méthode
Classification
- CPC, 15
- G06F3/04815
- H04N5/23238
- H04N23/698
- G08B13/19628
- G08B13/19682
- G08B13/19689
- G08B13/19691
- H04N5/232
- H04N7/181
- H04N5/23216
- H04N23/62
- H04N23/635
- H04N23/695
- H04N5/232945
- H04N5/23299
- IPC, 3
- H04N5 232
- G06F3 048
- 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
