IP Library Granted Patent US 11,922,575
Granted Patent B2
US 11,922,575 · App. 17/200,400 · Granted Mar 5, 2024

Depth hull for rendering three-dimensional models

Inventors: Himanshu Arora (San Jose, CA); Divyansh Agarwal (Mountain View, CA); Arnab Dhua (Cupertino, CA); Chun Kai Wang (Mountain View, CA)
Assignee: A9.com, Inc.
G06T17/20G06T7/55G06T2200/08G06T2207/10028
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,922,575
App. No.
17/200,400
Granted
Mar 5, 2024
Kind
B2
Abstract

Approaches described and suggested herein relate to generating three-dimensional representations of objects to be used to render virtual reality and augmented reality effects on personal devices such as smartphones and personal computers, for example. An initial surface mesh of an object is obtained. A plurality of silhouette masks of the object taken from a plurality of viewpoints is also obtained. A plurality of depth maps are generated from the initial surface mesh. Specifically, the plurality of depth maps are taken from the same plurality of viewpoints from which the silhouette images are taken. A volume including the object is discretized into a plurality of voxels. Each voxel is then determined to be either inside the object or outside of the object based on the silhouette masks and the depth data. A final mesh is then generated from the voxels that are determined to be inside the object.

Claims (93)

1. A computer-implemented method, comprising:

obtaining a plurality of images of an object taken from a plurality of viewpoints;

generating a point cloud, representing the object from the plurality of images;

generating, based at least in part on the point cloud and at least one silhouette mask, a surface mesh;

sampling points from the surface mesh determined from the point cloud;

generating, from the surface mesh, a plurality of depth maps corresponding respectively to the plurality of viewpoints;

determining, based at least in part on the surface mesh, that a confidence level of a region of at least one depth map of the plurality of depth maps, satisfies a threshold condition, the at least one depth map providing information relating to a distance associated with the surface mesh and at least one viewpoint of the plurality of viewpoints;

generating an augmented point cloud including at least the point cloud and the sampled points; and

generating a mesh representation of the object based at least in part on the augmented point cloud, the at least one depth map, and the at least one silhouette mask.

2. The computer-implemented method of claim 1 , wherein generating the augmented point cloud further includes:

adding the sampled points to the point cloud to form the augmented point cloud.

3. The computer-implemented method of claim 1 , further comprising:

generating a plurality of confidence maps corresponding respectively to the plurality of depth maps.

4. The computer-implemented method of claim 3 , further comprising:

generating a plurality of silhouette masks from the plurality of images;

discretizing an environment that the object is positioned in into a plurality of three-dimensional spatial units;

determining that a silhouette mask corresponding to a particular viewpoint of the plurality of viewpoint indicates that a three-dimensional spatial unit of the plurality of three-dimensional spatial units represents a portion of the object;

determining that the depth map corresponding to the particular viewpoint indicates that the three-dimensional spatial unit does not represent a portion of the object;

determining, based on a confidence map associated with the depth map, that the confidence level of a region of the depth map corresponding to the three-dimensional spatial unit does not satisfy a threshold condition; and

determining that the three-dimensional spatial unit represents a portion of the object according to data associated with the particular viewpoint.

5. The computer-implemented method of claim 1 , further comprising:

discretizing an environment that the object is positioned in into a plurality of three-dimensional spatial units;

determining, for a particular viewpoint of the plurality of viewpoints, whether a three-dimensional spatial unit, of the plurality of three-dimensional spatial units, represents a portion of the object based at least in part on the depth map corresponding to the particular viewpoint.

6. The computer-implemented method of claim 5 , further comprising:

aggregating determinations of whether a three-dimensional spatial unit represents a portion of the object across the plurality of viewpoints; and

designating the three-dimensional spatial unit as representing a portion of the object based on the aggregated determinations.

7. The computer-implemented method of claim 1 , further comprising:

generating a plurality of silhouette masks from the plurality of images;

discretizing an environment that the object is positioned in into a plurality of three-dimensional spatial units;

determining that a silhouette mask corresponding to a particular viewpoint of the plurality of viewpoint indicates that a three-dimensional spatial unit of the plurality of three-dimensional spatial units represents a portion of the object; and

determining that the three-dimensional spatial unit represents a portion of the object according to data associated with the particular viewpoint.

8. The computer-implemented method of claim 1 , further comprising:

generating a plurality of silhouette masks from the plurality of images;

discretizing an environment that the object is positioned in into a plurality of three-dimensional spatial units;

determining that a silhouette mask corresponding to a particular viewpoint of the plurality of viewpoint indicates that a three-dimensional spatial unit of the plurality of three-dimensional spatial units represents a portion of the object;

determining that the depth map corresponding to the particular viewpoint indicates that the three-dimensional spatial unit does not represent a portion of the object; and

designating the three-dimensional spatial unit as not representing a portion of the object according to data associated with the particular viewpoint.

9. The computer-implemented method of claim 8 , further comprising:

determining, based on a confidence map associated with the depth map, that the confidence level of a region of the depth map corresponding to the three-dimensional spatial unit satisfies a threshold condition.

10. A system, comprising:

at least one processor;

memory including instructions that, when executed by the at least one processor, cause the system to:

obtain a plurality of images of an object taken from a plurality of viewpoints;

generate a point cloud, representing the object, and at least one silhouette mask from the plurality of images;

sample points from a surface mesh determined from the point cloud;

generate, from the surface mesh, a plurality of depth maps;

determine, based at least in part on the surface mesh, that a confidence level of a region of at least one depth map of the plurality of depth maps, satisfies a threshold condition, the at least one depth map providing information relating to a distance associated with the surface mesh and at least one viewpoint of the plurality of viewpoints;

generate an augmented point cloud including at least the point cloud and the sampled points; and

generate a mesh representation of the object based at least in part on the augmented point cloud, the at least one depth map, and the at least one silhouette mask.

11. The system of claim 10 , wherein the instruction, when executed by the at least one processor, further causes the system to:

add the sampled points to the point cloud to form the augmented point cloud.

12. The system of claim 10 , wherein the instruction, when executed by the at least one processor, further causes the system to:

generate, from the point cloud, the plurality of depth maps and associated confidence maps corresponding respectively to the plurality of viewpoints.

13. The system of claim 12 , wherein the instruction, when executed by the at least one processor, further causes the system to:

generate a plurality of silhouette masks from the plurality of images;

discretize an environment that the object is positioned in into a plurality of three-dimensional spatial units;

determine that the silhouette mask corresponding to a particular viewpoint of the plurality of viewpoint indicates that a three-dimensional spatial unit of the plurality of three-dimensional spatial units represents a portion of the object;

determine that the depth map corresponding to the particular viewpoint indicates that the three-dimensional spatial unit does not represent a portion of the object;

determine, based on a confidence map associated with the depth map, that the confidence level of a region of the depth map corresponding to the three-dimensional spatial unit satisfies a threshold condition; and

designate the three-dimensional spatial unit as not representing a portion of the representation of the object according to data associated with the particular viewpoint.

14. The system of claim 12 , wherein the instruction, when executed by the at least one processor, further causes the system to:

generate a plurality of silhouette masks from the plurality of images;

discretize an environment that the object is positioned in into a plurality of three-dimensional spatial units;

determine that the silhouette mask corresponding to a particular viewpoint of the plurality of viewpoint indicates that a three-dimensional spatial unit of the plurality of three-dimensional spatial units represents a portion of the object;

determine that the depth map corresponding to the particular viewpoint indicates that the three-dimensional spatial unit does not represent a portion of the object;

determine, based on a confidence map associated with the depth map, that the confidence level of a region of the depth map corresponding to the three-dimensional spatial unit does not satisfy a threshold condition; and

determine that the three-dimensional spatial unit represents a portion of the object according to data associated with the particular viewpoint.

15. The system of claim 10 , wherein the instruction, when executed by the at least one processor, further causes the system to:

generate a plurality of silhouette masks from the plurality of images;

discretize an environment that the object is positioned in into a plurality of three-dimensional spatial units;

determine that a silhouette mask corresponding to a particular viewpoint of the plurality of viewpoint indicates that a three-dimensional spatial unit of the plurality of three-dimensional spatial units does not represent a portion of the object; and

determine that the three-dimensional spatial unit is not representative of a portion of the object according to data associated with the particular viewpoint.

16. A non-transitory computer-readable medium comprising instructions that, when executed by a processor, cause the processor to:

obtain a plurality of images of an object taken from a plurality of viewpoints;

generate a point cloud, representing the object, and at least one silhouette mask from the plurality of images;

sample points from a surface mesh determined from the point cloud;

generate, from the surface mesh, a plurality of depth maps;

determine, based at least in part on the surface mesh, that a confidence level of a region of at least one depth map of the plurality of depth maps, satisfies a threshold condition, the at least one depth map providing information relating to a distance associated with the surface mesh and at least one viewpoint of the plurality of viewpoints;

generate an augmented point cloud including at least the point cloud and the sampled points; and

generate a mesh representation of the object based at least in part on the augmented point cloud, the at least one depth map, and the at least one silhouette mask.

17. The non-transitory computer-readable medium of claim 16 , wherein the instructions further cause the processor to:

generate an initial surface mesh from the augmented point cloud using a Poisson-based meshing algorithm.

18. The non-transitory computer-readable medium of claim 16 , wherein the instructions further cause the processor to:

discretize the environment into a plurality of three-dimensional spatial units;

generate a plurality of silhouette masks from the plurality of images;

determine whether a three-dimensional spatial unit of the plurality of three-dimensional spatial units is inside the representation of the object according to a silhouette mask of the plurality of silhouette masks associated with a first viewpoint;

determine whether the three-dimensional spatial unit is inside the representation of the object according to the silhouette mask associated with a second viewpoint; and

aggregate determinations of whether the three-dimensional spatial unit is inside the representation of the object across the plurality of viewpoints.

19. The non-transitory computer-readable medium of claim 16 , wherein the instructions further cause the processor to:

discretize the environment into a plurality of three-dimensional spatial units;

generating a final surface mesh of the object based at least in part on three-dimensional spatial units that are determined to represent a portion of the object;

provide the final surface mesh to a client device; and

provide image data associated with the object for mapping onto the final surface mesh to render a three-dimensional representation of the object on the client device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2024
From: A9.COM, INC.
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 069167/0493 →
Continuity (2)
Continuation 16452050 · Jun 25, 2019
Related Publication 20210201575A1 · Jul 1, 2021
Cited By (1)
US 12,608,879