The following relates generally to image processing, and more specifically, to a method and system for re-projecting and combining sensor data for visualization.
Various applications use multiple cameras to visualize an environment. In an example, cameras are installed at various locations in a shopping mall, so that security personnel can monitor camera views of the mall from a remote location. In another example, aerial drones can be equipped with cameras to image the terrain below. In another example, some mapping applications use a top-down or “bird's eye view” to help visualize, localize, and understand the environment.
However, in many applications, such as the above examples, viewpoints provided by separate cameras can differ from each other. For example, security cameras are often mounted at different heights and angles, where a set of discrete video feeds is typically displayed to an operator as a bank of displays. In order to maintain situational awareness of events occurring in the environment, these viewpoints must be mentally integrated by the operator. Understanding the spatial relationships between camera angles can be difficult, and tracking of objects across the different views can be challenging. Furthermore, the coverage from the collective set of cameras may have “blindspots”, where areas of the environment are not covered by any camera's field of view; potentially resulting in important events being missed. While wide angle cameras can provide a greater scope of coverage, they generally have a distorted image that is difficult for an operator to interpret.
In an aspect, there is provided a computer-implemented method of re-projecting and combining sensor data of a scene from a plurality of sensors for visualization, the method comprising: receiving the sensor data from the plurality of sensors; re-projecting the sensor data from each of the sensors into a new viewpoint; localizing each of the re-projected sensor data; combining the localized re-projected sensor data into a combined image; and outputting the combined image.
In a particular case of the method, the sensor data comprises red-green-blue-depth (RGB-D) channel values for each of a plurality of pixels.
In another case of the method, the values of the RGB-D channels are from a combination of two or more sensors.
In yet another case of the method, re-projecting the sensor data comprises: calibrating each of the sensors to determine one or more calibration values for the respective sensor; generating a point cloud for the respective sensor by applying the calibration values to each of the depth D channel values for each pixel; and applying a matrix representative of the new viewpoint to the point cloud for each sensor.
In yet another case of the method, calibrating each of the sensors comprises determining intrinsic parameters for each of the sensors, the intrinsic parameters comprising distortions and camera matrix.
In yet another case of the method, the localization comprises performing simultaneous localization and mapping (SLAM) to position and orient the re-projected sensor data relative to each other.
In yet another case of the method, simultaneous localization and mapping comprises performing point-to-plane iterative closest point.
In yet another case of the method, the method further comprises adding supporting elements to the combined image.
In yet another case of the method, the support elements comprise graphical elements associated with one or more objects located in the scene.
In yet another case of the method, the combined image comprises a top-down view.
In another aspect, there is provided a system for re-projecting and combining sensor data of a scene from a plurality of sensors for visualization, the system comprising one or more processors and one or more data storages, the one or more processors in communication with the one or more data storages and configured to execute: an input module to receive the sensor data from the plurality of sensors; a projection module to re-project the sensor data from each of the sensors into a new viewpoint; a localization module to localize each of the re-projected sensor data; a combination module to combine the localized re-projected sensor data into a combined image; and an output module to output the combined image.
In a particular case of the system, one or more of the processors and one or more of the data storages are distributed and local to one or more of the sensors, and wherein the distributed one or more processors are configured to execute at least the input module and the projection module.
In another case of the system, the sensor data comprises red-green-blue-depth (RGB-D) channel values for each of a plurality of pixels.
In yet another case of the system, the values of the RGB-D channels are from a combination of two or more sensors.
In yet another case of the system, re-projecting the sensor data comprises: calibrating each of the sensors to determine one or more calibration values for the respective sensor; generating a point cloud for the respective sensor by applying the calibration values to each of the depth D channel values for each pixel; applying a matrix representative of the new viewpoint to the point cloud for each sensor.
In yet another case of the system, calibrating each of the sensors comprises determining intrinsic parameters for each of the sensors, the intrinsic parameters comprising distortions and camera matrix.
In yet another case of the system, the localization comprises performing simultaneous localization and mapping (SLAM) to position and orient the re-projected sensor data relative to each other.
In yet another case of the system, the system further comprises a support module to add supporting elements to the combined image.
In yet another case of the system, the support elements comprise graphical elements associated with one or more objects located in the scene.
In yet another case of the system, the combined image comprises a top-down view.
These and other aspects are contemplated and described herein. It will be appreciated that the foregoing summary sets out representative aspects of various embodiments to assist skilled readers in understanding the following detailed description.
A greater understanding of the embodiments will be had with reference to the Figures, in which:
Embodiments will now be described with reference to the figures. For simplicity and clarity of illustration, where considered appropriate, reference numerals may be repeated among the Figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth in order to provide a thorough understanding of the embodiments described herein. However, it will be understood by those of ordinary skill in the art that the embodiments described herein may be practiced without these specific details. In other instances, well-known methods, procedures and components have not been described in detail so as not to obscure the embodiments described herein. Also, the description is not to be considered as limiting the scope of the embodiments described herein.
Various terms used throughout the present description may be read and understood as follows, unless the context indicates otherwise: “or” as used throughout is inclusive, as though written “and/or”; singular articles and pronouns as used throughout include their plural forms, and vice versa; similarly, gendered pronouns include their counterpart pronouns so that pronouns should not be understood as limiting anything described herein to use, implementation, performance, etc. by a single gender; “exemplary” should be understood as “illustrative” or “exemplifying” and not necessarily as “preferred” over other embodiments. Further definitions for terms may be set out herein; these may apply to prior and subsequent instances of those terms, as will be understood from a reading of the present description.
Any module, unit, component, server, computer, terminal, engine or device exemplified herein that executes instructions may include or otherwise have access to computer readable media such as storage media, computer storage media, or data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Examples of computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by an application, module, or both. Any such computer storage media may be part of the device or accessible or connectable thereto. Further, unless the context clearly indicates otherwise, any processor or controller set out herein may be implemented as a singular processor or as a plurality of processors. The plurality of processors may be arrayed or distributed, and any processing function referred to herein may be carried out by one or by a plurality of processors, even though a single processor may be exemplified. Any method, application or module herein described may be implemented using computer readable/executable instructions that may be stored or otherwise held by such computer readable media and executed by the one or more processors.
The following relates generally to image processing, and more specifically, to a method and system for re-projecting and combining sensor data for visualization.
Embodiments of the present disclosure can advantageously use a re-projected viewpoint from one or more cameras to enable efficient viewing and/or interaction with the re-projected view. In some cases, such efficient viewing and/or interaction can include other digital media overlaid on the view. In some cases, the images received from the camera or cameras can be used in combination with various sensors that provide information about the environment. Advantageously, such embodiments can afford better situational awareness of events in an environment while also presenting a number of opportunities for analyzing and interacting with objects in the re-projected view.
Referring now to
The sensors 130 can capture optical images and/or other data from the environment. In some cases, the sensor 130 can be a combination of sensors and devices; for example, a combination optical camera and depth sensor such as an Intel RealSense™ Depth Camera D435. But it will be understood that the sensors 130 can be any suitable sensor or combination of sensors; for example, optical cameras, laser rangefinders, Lidar, and light-field cameras. In some cases, the output from the sensors can be a red-green-blue-depth (RGB-D) image, where each pixel has a value associated with each RGB-D channel. In some cases, the values from one or more of the RGB-D channels can be a combination of two or more sensors 130. The sensors 130 can include devices that use range imaging techniques; for example, stereo triangulation, sheet of light triangulation, structured light, time-of-flight, interferometry, and coded aperture. The captured sensor data may be from a stationary sensor (for example, from a sensor mounted on a wall or on a tripod), a handheld sensor that is moving (for example, from a smartphone), a head worn sensor (for example, Snap Spectacles™, Google Glass™, Magic Leap One™), or mounted on a moving device or platform (for example, on a dolly track, robotic platform, robotic arm, camera harness).
The display device 140 can be used to display combined re-projected images and data, as described herein. In an example, the re-projected images can be displayed on a display device 140 consisting of a computer monitor. However, any suitable display device, or combination of devices, can be used; for example, a stereoscopic head-mounted display (for example, Microsoft Hololens™, Magic Leap One™, Metavision Meta 2™), a pair of smartglasses (for example, RealWear HMT™, Vuzix Blade™, Epson Moverio™), a heads-up display (for example, Garmin HUD™, Rockwell Collins HUD™), a computer tablet (for example, an Apple iPad™), a smartphone (for example, a Samsung Galaxy™), a smartwatch (for example, an Apple Watch™), a laptop, a television, or a projector.
The data storage 104 can be used to store sensor data, including images, and to store other data. In an example, the data storage 104 can be located locally, such as on a local server. However, it will be understood that the data storage 104 can be any suitable storage device, or combination of devices, such as a local storage on a local device (for example, hard drive or memory card), on a server (for example, a computer server or network access storage), or over a network such as using a cloud-based storage (for example, Amazon™ Cloud Services).
In some embodiments, the system 100 can have a distributed architecture, where the one or more processors are located on a server and communicates with sensor 130, which has its own processing capability. Such communication can include requests to receive sensor data (such as image segments) that are required to generate a combined view; such as a single top-down view or a synthesized view. In some cases, the server can communicate the required resolution and the perspective for each camera in real time.
Referring now to
In the example of
At block 204, the projection module 114 processes and re-projects the received sensor data into a new viewpoint. In an example diagrammatically illustrated in
In an example, the projection module 114 can perform re-projection by calibrating the sensors to determine their intrinsic parameters; the intrinsic parameters can include distortions and camera matrix. This calibration can be for each sensor or just for each sensor-type, as the case may be. Calibration can be used to account for distortions of the sensors, such as radial distortion and tangential distortion in captured images. In an example calibration, suitable libraries (for example, OpenCV) can be used for calibration by using an image of a chess board placed at different locations and orientations. The calibration can then be used to find the corners of the chess board then recognize the chess board pattern. The calibration can then return various calibration values, such as, sensor matrix, distortion coefficients, rotation and translation vectors, and the like.
With the above values, an undistorted image can be determined; such as by determining a region of interest and cropping to find an undistorted image or determining a mapping function from the original image to an undistorted image. In a particular case, Perspective-n-Point calibration can be performed using the checkerboard board located on a floor. This allows the projection module 114 to determine each camera position relative to the checkerboard placed on the ground. It will be appreciated that the above is an example calibration and any suitable calibration approach can be used.
In an example, the projection module 114 can perform re-projecting using a generated point cloud. The point cloud can be generated from the D channel values of the RGB-D images from the sensors 130 by applying the calibration to each of the pixel values of the D channel; for example, via applying a matrix multiplication. A re-projected viewpoint can have an extrinsic matrix representative of the location and rotation/direction of the re-projected (new) viewpoint, which is applied to the generated point clouds to generate a view from the re-projected perspective; for example, rendering each point in the cloud as a small surfel (surface element) or sphere. In an example, the re-projected view can be formed by projecting 3D points into the image plane using a perspective transformation; such as:
sm′=A[R|t]M′
where s is a skew coefficient; m′ are coordinates of the re-projected points; and [R|t] is a joint rotation-translation matrix (the matrix of extrinsic parameters received from the calibration) that translates coordinates of a point in matrix M′ to a coordinate system represented by matrix A that is a camera matrix (or a matrix of intrinsic parameters).
In further cases, other approaches to re-projecting can be used; for example, using image warping (view interpolation) or machine learning techniques (for example, using an artificial neural network such as a generative query network (GQN)). In further cases, the point cloud can be received from the sensor 130 itself.
At block 206, the localization module 116 localizes images of the re-projected sensor data relative to each other. In an example diagrammatically illustrated in
where np is the normal of point p.
In another example, the localization module 116 can perform localization using ORB-SLAM. ORB-SLAM uses ORB features to determine location. ORB-SLAM achieves tracking, mapping, relocalization and loop closing by maintaining a graph of key frames. In an example of the ORB-SLAM approach, the localization module 116 treats images from the sensors 130 as key frames to identify the pose relative to the SLAM's coordinate system. It should be noted that when using a different type of camera to perform the SLAM, the difference in the intrinsics should be taken into account. Generally, ORB-SLAM is performed using three threads: a tracking thread, a local mapping thread and a loop closing thread. The tracking thread localizes each camera, for example as described herein, and matches features with a previous frame. The local mapping thread inserts keyframes into a covisibility graph, with a spanning tree linking keyframe to keyframe having the most points in common. New map points are created by triangulating ORB features from connected keyframes in the covisibility graph. The loop closing thread is used to detect possible loops by checking similarity of keyframes to its neighbors in the covisibitlity graph.
It is understood that any suitable approach, or combination of approaches, can be used to localize the images; for example, using known relative positions and orientations of the cameras to manually align the images relative to each other.
At block 208, the combination module 118 combines the images of the localized re-projected sensor data into a combined image.
In some cases, at block 210, the support module 120 can add supporting elements to the combined image.
At block 212, the output module 122 can output the combined image; for example, to the data storage 104 and/or the display 140 via the output interface 106.
In another embodiment, the system 100 can use background subtraction to combine the images. In this way, the background of one or more of the sensor 130 images remains static while people or other foreground objects are updated against the background; for example, in real-time. This approach can advantageously be used to make the overall rendering appear more stable. This has a particular benefit when the sensor's noise affects the re-projected image. Additionally, when there is generally no requirement to focus, a complete static background can make it easier to distinguish moving objects. Additionally, moving objects are detected and separated from the background, which allows for the capability to highlight the moving object(s) in the scene; for example, via changing the color of the moving object(s) or otherwise annotating or highlighting the moving object(s).
At block 1206, the background module 124 subtracts the background from the sensor data from each sensor 130. Any suitable background subtraction approach can be used; for example, GMG, MOG, MOG2, KNN, CNT, and the like.
At block 1208, the background module 124 performs a blob detection on the images that have their background subtracted; for example, using Laplacian of Gaussian (LoG), Difference of Gaussians (DoG), Determinant of Hessian (DoH), Maximally stable extremal regions, principal curvature-based region detector (PCBR), and the like. From the blob detection, the background module 124 determines a cropped image, for each image in the sensor data, comprising the detected blob with the background subtracted.
At block 1210, the background module 124 communicates the cropped image with the background subtracted to the projection module 114, and in some cases, along with cropping information (for example, the four corners in the sensor's local space).
At block 1212, the projection module 114 determines the cropped image's position with respect to the combined view, using the cropping information for the respective sensor 130, and overlays it on-top of the static background combined image.
At block 1214, the output module 122 outputs the combined image with the cropped image overlaid.
In some cases, the static combined background image can be updated periodically with some appropriate predetermined frequency (for example, every 10 seconds).
The present embodiments can be used in a number of applications. In an example, the present embodiments can be used in a security system for a room, as illustrated in
In another example application, the present embodiments can be used in an industrial warehouse setting. In this example, a worker could be walking in the environment, viewing the live top-down video (for example, on a smartphone or smart-glasses). This would enable a number of uses. For example, the worker can be provided instructions annotated on the top-down view on how to reach a certain location. In such an example, the top-down view may remain in a “North up” orientation (displaying North as being up on the display), or continually rotate “Track-up” (to ensure that the forward facing direction is always facing up in the display). In another example use, areas that should not be accessed by the worker, based on, for example, security clearance or hazards, can be marked as such on the top-down view. The worker can be alerted when he enters the restricted area. In another example use, potential hazards, such as forklifts, that are moving towards the individuals can be highlighted and the worker can be notified.
In some embodiments, as part of the system 100, one or more of the processors 102 and further data storages 104 can be distributed, such as being local to one or more of the sensors 130. In this way, these local components can perform decoding and other initial processing, and in some cases, can perform the re-projection. In this embodiment, a centralized computing device comprising the one or more processors 102 can be responsible for generating the combined view. This is advantageous, as in some circumstances, processing all the RGB-D data at a centralized computing device may not be feasible due to the large amounts of data to stream and process.
The embodiments described herein can advantageously be used to lower the cognitive load on users by combining the multiple views because the users would otherwise have to mentally combine multiple views into spatial information. In an environment where there are many camera feeds like surveillance cameras, significant cognitive overhead is required to understand where the camera feed is coming from. Such cognitive load that is relieved includes knowing whether and where there are blind spots in camera configuration and which camera feed to look next when tracking a person in the camera feed. Additionally, such user would otherwise have to go back and forth between a top-down view and camera views, forcing the user to develop suboptimal cognitive and perceptual strategies in attending to the various views.
Although the invention has been described with reference to certain specific embodiments, various modifications thereof will be apparent to those skilled in the art without departing from the spirit and scope of the invention as outlined in the claims appended hereto. The entire disclosures of all references recited above are incorporated herein by reference.
The present application is a continuation of U.S. patent application Ser. No. 17/680,802, filed Feb. 25, 2022, which is a continuation of U.S. patent application Ser. No. 16/791,203, filed Feb. 14, 2020 and now issued as U.S. patent Ser. No. 11/288,842 on Mar. 29, 2022, which itself claimed the benefit of U.S. Provisional Patent Application No. 62/806,324, filed Feb. 15, 2019; the entire contents of which are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
8587583 | Newcombe et al. | Nov 2013 | B2 |
9269187 | Chang et al. | Feb 2016 | B2 |
9807365 | Cansizoglu et al. | Oct 2017 | B2 |
9858722 | Fei et al. | Jan 2018 | B2 |
10003786 | Kouperman et al. | Jun 2018 | B2 |
10375376 | Yamamoto et al. | Aug 2019 | B2 |
10448000 | Klusza et al. | Oct 2019 | B2 |
10546385 | Indelman | Jan 2020 | B2 |
10574974 | Arora et al. | Feb 2020 | B2 |
10600210 | Citraro et al. | Mar 2020 | B1 |
10628949 | Aflalo et al. | Apr 2020 | B2 |
10645366 | Rowell | May 2020 | B2 |
10666934 | Wang et al. | May 2020 | B1 |
10705217 | Korkalo et al. | Jul 2020 | B2 |
10789752 | Yu | Sep 2020 | B2 |
10848731 | Simek et al. | Nov 2020 | B2 |
10855932 | Wen | Dec 2020 | B2 |
10893251 | Koyama et al. | Jan 2021 | B2 |
10916035 | Kroeger | Feb 2021 | B1 |
10984583 | Meilland | Apr 2021 | B2 |
11051000 | Taguchi et al. | Jun 2021 | B2 |
11094137 | Gausebeck et al. | Aug 2021 | B2 |
11158056 | Lukac et al. | Oct 2021 | B2 |
11164394 | Gausebeck | Nov 2021 | B2 |
11288842 | Lee | Mar 2022 | B2 |
11555903 | Kroeger | Jan 2023 | B1 |
11715236 | Lee | Aug 2023 | B2 |
11761790 | Kolagheichi-Ganjineh | Sep 2023 | B2 |
20110102550 | Daniel et al. | May 2011 | A1 |
20130016223 | Kim et al. | Jan 2013 | A1 |
20140285486 | Chang et al. | Sep 2014 | A1 |
20140300736 | Reitinger et al. | Oct 2014 | A1 |
20160012589 | Hamer et al. | Jan 2016 | A1 |
20180018787 | Giancola et al. | Jan 2018 | A1 |
20180035033 | McCain et al. | Feb 2018 | A1 |
20180091800 | Ratcliff et al. | Mar 2018 | A1 |
20180139431 | Simek et al. | May 2018 | A1 |
20180249144 | Feng et al. | Aug 2018 | A1 |
20180302564 | Liu et al. | Oct 2018 | A1 |
20180308254 | Fu et al. | Oct 2018 | A1 |
20190012840 | Finman et al. | Jan 2019 | A1 |
20190188435 | Davis et al. | Jun 2019 | A1 |
20190304170 | Meilland | Oct 2019 | A1 |
20190325580 | Lukac et al. | Oct 2019 | A1 |
20190325608 | Taya | Oct 2019 | A1 |
20190371003 | Lin | Dec 2019 | A1 |
20200005489 | Kroeger | Jan 2020 | A1 |
20200011668 | Derhy et al. | Jan 2020 | A1 |
20200098164 | Bruns et al. | Mar 2020 | A1 |
20200258257 | Shimoyama | Aug 2020 | A1 |
20200273200 | Ellwein et al. | Aug 2020 | A1 |
20200288102 | Um et al. | Sep 2020 | A1 |
20210029345 | Matsunobu et al. | Jan 2021 | A1 |
20210042898 | Wu et al. | Feb 2021 | A1 |
20210082147 | Drejak | Mar 2021 | A1 |
20210105593 | Hu et al. | Apr 2021 | A1 |
20210136342 | Bina et al. | May 2021 | A1 |
20210166428 | Kehl | Jun 2021 | A1 |
20210279957 | Eder et al. | Sep 2021 | A1 |
20210335010 | Fukuda et al. | Oct 2021 | A1 |
20210375044 | George | Dec 2021 | A1 |
20210407113 | Tomioka | Dec 2021 | A1 |
20220164988 | Dotsenko et al. | May 2022 | A1 |
20220222842 | McCombe et al. | Jul 2022 | A1 |
20220365186 | Schwiesow | Nov 2022 | A1 |
20220377307 | Shklyar et al. | Nov 2022 | A1 |
20220383462 | Yin et al. | Dec 2022 | A1 |
Number | Date | Country | |
---|---|---|---|
20230326078 A1 | Oct 2023 | US |
Number | Date | Country | |
---|---|---|---|
62806324 | Feb 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 17680802 | Feb 2022 | US |
Child | 18208937 | US | |
Parent | 16791203 | Feb 2020 | US |
Child | 17680802 | US |