IP Library Granted Patent US 11,830,163
Granted Patent B2
US 11,830,163 · App. 16/918,434 · Granted Nov 28, 2023

Method and system for image generation

Inventors: Kevin Wong (Mountain View, CA); Qiqin Dai (Mountain View, CA); Kaimo Lin (Mountain View, CA); Brian Totty (Mountain View, CA); Jianfeng Yin (Mountain View, CA); Yacine Alami (Mountain View, CA); Michael Bernardo (Mountain View, CA); Paul Gauthier (Mountain View, CA); Philip Guindi (Mountain View, CA); Qing Guo (Mountain View, CA); Luis Puig Morales (Mountain View, CA); Brian Pugh (Mountain View, CA); Konstantinos Nektarios Lianos (Mountain View, CA); Angus Dorbie (Redwood City, CA)
Assignee: Geomagical Labs, Inc.
G06T3/4038G06T3/0093G06T7/11G06T7/174G06T7/248G06T7/30G06T17/205G06T2207/10028G06T2207/20021
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,830,163
App. No.
16/918,434
Granted
Nov 28, 2023
Kind
B2
Abstract

Systems and methods for generating a panorama image. Captured images are coarsely aligned, and then finely aligned based on a combination of constraint values. The panorama image is generated from the finely aligned images.

Claims (138)

1. A method executed by one or more computing devices of an image processing platform for generating a panorama image, the method comprising:

capturing, with an image sensor of the image processing platform, video;

displaying, with a display device of the image processing platform, the video in real-time;

with the mobile device, performing guided image capture to automatically capture a set of captured images using the image sensor during display of the video, wherein performing guided image capture comprises:

superimposing a plurality of image centering targets onto the displayed video, each image centering target being associated with an image index;

automatically capturing images of scenes that include a centered image centering target; and

for each captured image, assigning the image index of the centered image centering target to the image;

coarsely aligning the set of captured images in accordance with the assigned image indexes to generate a set of coarsely aligned images;

finely aligning pairs of images in the set of coarsely aligned images to generate a set of finely aligned images, comprising, for at least one image in the set of coarsely aligned images:

dividing the image into one or more depth-stacked image layers,

dividing each image layer into a mesh of cells, defined by 2D cell vertices,

adjusting cell vertices to maximize a combination of constraint values including at least a feature constraint value and a global shape anchor constraint value, and

warping the image in accordance with the adjusted cell vertices to generate a finely warped image;

generating the panorama image by using the finely aligned images; and

storing the panorama image in a storage device.

2. The method of claim 1 , further comprising:

identifying a center image in the set of captured images, based on the assigned image indexes;

wherein coarsely aligning the captured images comprises projecting each non-center image in the set of captured images onto an image plane of the center image.

3. The method of claim 2 , wherein automatically capturing a set of captured images comprises:

simultaneously capturing IMU (inertial measurement unit) data for each captured image by using an IMU of the mobile device;

wherein generating the panorama image by using the finely aligned images comprises:

estimating a gravity vector for at least one image in the set of finely aligned images by using at least the captured IMU data;

adjusting orientation of at least one region in the set of finely aligned images to vertically align each estimated gravity vector to generate a set of gravity aligned images; and

compositing the set of gravity aligned images into the panorama image.

4. The method of claim 3 , wherein coarsely aligning the captured images further comprises:

for each non-center image, identifying feature correspondences between features in the non-center image and features in an adjacent image that is in the image plane of the center image;

wherein projecting the non-center image comprises:

determining one or more transformations by using the identified feature correspondences; and

applying one or more determined transformations to the non-centered images to generate a warped image; and

wherein coarsely aligning the captured images further comprises aligning each warped image with the corresponding adjacent image such that features included in the warped image align with the corresponding features in the corresponding adjacent image.

5. The method of claim 4 , wherein identifying correspondences between features comprises:

detecting at least one feature in the non-center image; and

performing video-based motion tracking to track each detected to a location in the adjacent image.

6. The method of claim 4 , wherein identifying correspondences between features comprises:

detecting at least one feature in the non-center image; and

identifying correspondences between features by performing feature matching.

7. The method of claim 6 , wherein detecting at least one feature in the non-center image comprises:

detecting at least one line segment;

wherein performing feature matching comprises performing line segment matching; and

wherein performing line segment matching comprises accessing a semantic segmentation context for each line feature and comparing the semantic segmentation context of the line features being compared.

8. The method of claim 7 , wherein adjusting vertices comprises:

generating one or more sets of adjusted vertices; and

for each set of adjusted vertices:

calculating each constraint value;

calculating a combined constraint value by combining the calculated constrain values; and

selecting a set of adjusted vertices having a highest combined constraint value.

9. The method of claim 8 , wherein calculating a feature constraint value for a set of adjusted vertices comprises:

calculating a score that identifies whether a line segment feature in an overlapping region of an image whose vertices are being adjusted is collinear with a corresponding line segment feature in an adjacent image after the vertices have been adjusted.

10. The method of claim 9 , wherein calculating a feature constraint value for a set of adjusted vertices further comprises:

identifying a 3D location of at least one point feature detected in the image whose vertices are being adjusted, by using the set of captured images and the captured IMU data;

projecting each point feature onto an image plane of the adjacent image by using at least the associated 3D location; and

for each point feature detected in the image whose vertices are being adjusted, calculating a score that identifies whether the point feature in the image whose vertices are being adjusted is aligned with the corresponding projection in the image plane of the adjacent image after the vertices have been adjusted.

11. The method of claim 10 , wherein calculating a global shape anchor constraint value for a set of adjusted vertices comprises:

calculating a value that identifies a difference between a location of each pre-adjustment vertex and the corresponding adjusted vertex location;

wherein coarsely aligning the set of captured images comprises using virtual-real epipoles to estimate stationary regions within the set of captured images and select pixels for compositing.

12. The method of claim 11 , wherein finely aligning pairs of images comprises performing multi-layer mesh warping using a plurality of mesh layers corresponding to a respective depth.

13. A method executed by one or more computing devices of an image processing platform for generating a panorama image, the method comprising:

receiving a set of captured images and an assigned image index for each image in the set of captured images from a mobile device;

identifying a center image in the set of captured images based on the assigned image indexes;

coarsely aligning the set of captured images to generate a set of coarsely aligned images, wherein coarsely aligning the captured images comprises projecting each non-center image in the set of captured images onto an image plane of the center image;

finely aligning pairs of images in the set of coarsely aligned images to generate a set of finely aligned images, comprising, for at least one image in the set of coarsely aligned images:

dividing the image into one or more depth-stacked image layers,

dividing each image layer into a mesh of cells, defined by 2D cell vertices,

adjusting cell vertices to maximize a combination of constraint values including at least a feature constraint value and a global shape anchor constraint value, and

warping the image in accordance with the adjusted cell vertices to generate a finely warped image;

generating the panorama image by using the finely aligned images; and

transmitting the panorama image to the mobile device.

14. The method of claim 13 , wherein adjusting cell vertices comprises:

generating one or more sets of adjusted vertices; and

for each set of adjusted vertices:

calculating each constraint value;

calculating a combined constraint value by combining the calculated constrain values; and

selecting a set of adjusted vertices having a highest combined constraint value.

15. The method of claim 14 , wherein calculating each constraint value comprises:

calculating a score that identifies whether a line segment feature in an overlapping region of an image whose vertices are being adjusted is collinear with a corresponding line segment feature in an adjacent image after the vertices have been adjusted.

16. The method of claim 13 , further comprising:

receiving IMU data for each image in the set of captured images from the mobile device, wherein calculating a feature constraint value for a set of adjusted vertices further comprises:

identifying a 3D location of at least one point feature detected in the image whose vertices are being adjusted, by using the set of captured images and the IMU data;

projecting each point feature onto an image plane of the adjacent image by using at least the associated 3D location; and

for each point feature detected in the image whose vertices are being adjusted, calculating a score that identifies whether the point feature in the image whose vertices are being adjusted is aligned with the corresponding projection in the image plane of the adjacent image after the vertices have been adjusted.

17. The method of claim 16 , wherein calculating a global shape anchor constraint value for a set of adjusted vertices comprises:

calculating a value that identifies a difference between a location of each pre-adjustment vertex and the corresponding adjusted vertex location.

18. An image processing apparatus for generating a panorama image, the apparatus comprising:

one or more processors; and

one or more memories operatively coupled to at least one of the one or more processors and having instructions stored thereon that, when executed by at least one of the one or more processors, cause at least one of the one or more processors to:

capture, with an image sensor of the image processing apparatus, video;

display, with a display device of the image processing apparatus, the video in real-time;

perform guided image capture to automatically capture a set of captured images using the image sensor during display of the video, wherein performing guided image capture comprises:

superimposing a plurality of image centering targets onto the displayed video, each image centering target being associated with an image index;

automatically capturing images of scenes that include a centered image centering target; and

for each captured image, assigning the image index of the centered image centering target to the image;

coarsely align the set of captured images in accordance with the assigned image indexes to generate a set of coarsely aligned images;

finely align pairs of images in the set of coarsely aligned images to generate a set of finely aligned images, comprising, for at least one image in the set of coarsely aligned images:

dividing the image into one or more depth-stacked image layers,

dividing each image layer into a mesh of cells, defined by 2D cell vertices,

adjusting cell vertices to maximize a combination of constraint values including at least a feature constraint value and a global shape anchor constraint value, and

warping the image in accordance with the adjusted cell vertices to generate a finely warped image;

generate the panorama image by using the finely aligned images; and

store the panorama image in a storage device.

19. An image processing apparatus for generating a panorama image, the apparatus comprising:

one or more processors; and

one or more memories operatively coupled to at least one of the one or more processors and having instructions stored thereon that, when executed by at least one of the one or more processors, cause at least one of the one or more processors to:

receive a set of captured images and an assigned image index for each image in the set of captured images from a mobile device;

identify a center image in the set of captured images based on the assigned image indexes;

coarsely align the set of captured images to generate a set of coarsely aligned images, wherein coarsely aligning the captured images comprises projecting each non-center image in the set of captured images onto an image plane of the center image;

finely align pairs of images in the set of coarsely aligned images to generate a set of finely aligned images, comprising, for at least one image in the set of coarsely aligned images:

dividing the image into one or more depth-stacked image layers;

dividing each image layer into a mesh of cells, defined by 2D cell vertices;

adjusting cell vertices to maximize a combination of constraint values including at least a feature constraint value and a global shape anchor constraint value; and

warping the image in accordance with the adjusted cell vertices to generate a finely warped image;

generate the panorama image by using the finely aligned images; and

transmit the panorama image to the mobile device.

20. At least one non-transitory computer-readable medium storing computer- readable instructions for generating a panorama image that, when executed by one or more computing devices, cause at least one of the one or more computing devices to:

capture, with an image sensor of the image processing apparatus, video;

display, with a display device of the image processing apparatus, the video in real-time;

perform guided image capture to automatically capture a set of captured images using the image sensor during display of the video, wherein performing guided image capture comprises:

superimposing a plurality of image centering targets onto the displayed video, each image centering target being associated with an image index;

automatically capturing images of scenes that include a centered image centering target; and

for each captured image, assigning the image index of the centered image centering target to the image;

coarsely align the set of captured images in accordance with the assigned image indexes to generate a set of coarsely aligned images;

finely align pairs of images in the set of coarsely aligned images to generate a set of finely aligned images, comprising, for at least one image in the set of coarsely aligned images:

dividing the image into one or more depth-stacked image layers,

dividing each image layer into a mesh of cells, defined by 2D cell vertices,

adjusting cell vertices to maximize a combination of constraint values including at least a feature constraint value and a global shape anchor constraint value, and

warping the image in accordance with the adjusted cell vertices to generate a finely warped image;

generate the panorama image by using the finely aligned images; and

store the panorama image in a storage device.

21. At least one non-transitory computer-readable medium storing computer-readable instructions for generating a panorama image that, when executed by one or more computing devices, cause at least one of the one or more computing devices to:

receive a set of captured images and an assigned image index for each image in the set of captured images from a mobile device;

identify a center image in the set of captured images based on the assigned image indexes;

coarsely align the set of captured images to generate a set of coarsely aligned images, wherein coarsely aligning the captured images comprises projecting each non-center image in the set of captured images onto an image plane of the center image;

finely align pairs of images in the set of coarsely aligned images to generate a set of finely aligned images, comprising, for at least one image in the set of coarsely aligned images:

dividing the image into one or more depth-stacked image layers,

dividing each image layer into a mesh of cells, defined by 2D cell vertices,

adjusting cell vertices to maximize a combination of constraint values including at least a feature constraint value and a global shape anchor constraint value, and

warping the image in accordance with the adjusted cell vertices to generate a finely warped image;

generate the panorama image by using the finely aligned images; and

transmit the panorama image to the mobile device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2020
From: WONG, KEVIN; DAI, QIQIN; LIN, KAIMO; TOTTY, BRIAN; YIN, JIANFENG; ALAMI, YACINE; BERNARDO, MICHAEL; GAUTHIER, PAUL; GUINDI, PHILIP; GUO, QING; MORALES, LUIS PUIG; PUGH, BRIAN; LIANOS, KONSTANTINOS NEKTARIOS; DORBIE, ANGUS
To: GEOMAGICAL LABS, INC.
Reel/Frame 053333/0286 →
Continuity (2)
Provisional Application 62869222 · Jul 1, 2019
Related Publication 20210004933A1 · Jan 7, 2021
Cited By (2)
US 12,272,020 US 12,469,155