IP Library Granted Patent US 10,740,955
Granted Patent B2
US 10,740,955 · App. 15/829,786 · Granted Aug 11, 2020

Systems and methods for real-time large-scale point cloud surface reconstruction

Inventors: Srinivas Kaza (Burr Ridge, IL); Patrick Cozzi (Drexel Hill, PA); Sean Lilley (Exton, PA)
Assignee: Cesium GS, Inc.
G06T15/08G06T5/002G06T5/005G06T5/20G06T7/12G06T7/187G06T7/60G06T2207/20032G06T2207/20192
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 10,740,955
App. No.
15/829,786
Granted
Aug 11, 2020
Kind
B2
Abstract

A system and method of real-time surface reconstruction upon unstructured point clouds via a series of screen space operations are provided herein. A point occlusion operator, performed in a deferred pass upon a simple point splat, is used to determine point visibility and an ambient occlusion factor to estimate a solid angle of a visibility cone produced by each point in the splat by splitting the screen space local neighborhood of the point into sectors and accumulating the maximum viable sector angle. Points are valid or invalid. A density estimation pass is then used. Maps are used to determine the required number of region growing iterations to cover every invalid pixel. The density is then pruned by edge creep reduction to minimize the error around edges. A median filter is used to fill invalid pixels, while edge-preserving blur is applied to the valid pixels.

Claims (52)

1. A method for real-time large scale point cloud surface reconstruction, the method comprising:

receiving a large scale point cloud comprising a plurality of unstructured splatted points that each comprise a pixel;

performing a plurality of screen space operations on the plurality of unstructured splatted points;

applying an edge removal filter to the plurality of unstructured splatted points;

performing sparse region growing to the filtered plurality of splatted points to reconstruct the plurality of unstructured splatted points into a reconstructed point cloud surface;

determining visibility of splatted points in the point cloud, the splatted points each comprising at least one pixel;

filling empty regions between the splatted points using stenciling;

blurring filled regions within the point cloud; and

computing an eye-space density map of a scene that comprises the point cloud.

2. The method according to claim 1 , further comprising pruning density near edges of the eye-space density map using an edge creep operation during creation of the eye-space density map.

3. The method according to claim 1 , wherein determining visibility of splatted points in the point cloud comprises: performing point occlusion using eye-space coordinates provided by a floating-point texture function to generate a single linearized depth output or an invalid value, so as to determine the splatted points' visibility for a view frustum.

4. The method according to claim 3 , further comprising enhancing precision of the point occlusion by sampling on a primary ray when a gradient of a depth of a splatted point of the splatted points is not in a direction of a z-axis.

5. The method according to claim 4 , further comprising enhancing precision of the point occlusion by:

assuming a local depth neighborhood of the at least one pixel is similar to itself; and

processing a ray distance using a triangle wave function in order to prevent aliasing from local depth neighborhood discontinuities.

6. The method according to claim 1 , further comprising calculating an approximation of a maximum solid angle that can be produced by a cone in an object space without clipping another point in the object space.

7. The method according to claim 6 , wherein calculating the approximation of the maximum solid angle comprises: splitting a visibility cone into sectors and accumulating the maximum solid angle in each of the sectors.

8. The method according to claim 7 , wherein calculating the approximation of the maximum solid angle comprises: for each of the splatted points:

determining an angle between an eye-space vector from a viewpoint of interest to a splatted point of the splatted points; and

determining a vector offset of a horizon point from the viewpoint of interest.

9. The method according to claim 1 , further comprising flagging as invalid a portion of the splatted points that comprise accumulated solid angles that do not meet or exceed an accumulated solid angle threshold.

10. The method according to claim 9 , further comprising determining a distance from each pixel of the portion of the splatted points flagged as invalid to its nearest valid pixel, in order to estimate a density thereof.

11. The method according to claim 10 , wherein valid pixels in a linearized depth buffer are determined to be visible in a view frustum.

12. The method according to claim 11 , wherein the invalid splatted points are filled using the nearest valid pixel.

13. The method according to claim 12 , further wherein the nearest valid pixels are blurred based on edge-preserving blur.

14. The method according to claim 1 , further comprising computing an ambient occlusion term that is utilized when the point cloud is blended into the scene.

15. A system for real-time large scale point cloud surface reconstruction, the system comprising:

a hardware processor;

a memory communicatively coupled with the hardware processor, the memory storing instructions which when executed by the hardware processor performs a method, the method comprising:

receiving a large scale point cloud comprising a plurality of unstructured splatted points that each comprise a pixel;

performing a plurality of screen space operations on the plurality of unstructured splatted points;

applying an edge removal filter to the plurality of unstructured splatted points;

performing sparse region growing to the filtered plurality of splatted points to reconstruct the plurality of unstructured splatted points into a reconstructed point cloud surface;

determining visibility of splatted points in the point cloud, the splatted points each comprising at least one pixel;

filling empty regions between the splatted points using stenciling;

blurring filled regions within the point cloud; and

computing an eye-space density map of a scene that comprises the point cloud.

16. The system according to claim 15 , wherein the method further comprises pruning density near edges of the eye-space density map using an edge creep operation during creation of the eye-space density map.

17. The system according to claim 15 , wherein determining visibility of splatted points in the point cloud comprises: performing point occlusion using eye-space coordinates provided by a floating-point texture function to generate a single linearized depth output or an invalid value, so as to determine the splatted points' visibility for a view frustum.

18. The system according to claim 17 , further comprising enhancing precision of the point occlusion by sampling on a primary ray when a gradient of a depth of a splatted point of the splatted points is not in a direction of a z-axis.

19. The system according to claim 17 , further comprising enhancing precision of the point occlusion by:

assuming a local depth neighborhood of the at least one pixel is similar to itself; and

processing a ray distance using a triangle wave function in order to prevent aliasing from local depth neighborhood discontinuities.

20. A non-transitory computer-readable storage medium having embodied instructions thereon, the instructions executable by a processor to:

receive a large scale point cloud comprising a plurality of unstructured splatted points that each comprise a pixel;

perform a plurality of screen space operations on the plurality of unstructured splatted points;

apply an edge removal filter to the plurality of unstructured splatted points;

perform sparse region growing to the filtered plurality of splatted points to reconstruct the plurality of unstructured splatted points into a reconstructed point cloud surface;

determine visibility of splatted points in the point cloud, the splatted points each comprising at least one pixel;

fill empty regions between the splatted points using stenciling;

blur filled regions within the point cloud; and

compute an eye-space density map of a scene that comprises the point cloud.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Aug 29, 2024
From: SILICON VALLEY BANK
To: ANALYTICAL GRAPHICS, INC.
Reel/Frame 068446/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2020
From: ANALYTICAL GRAPHICS, INC.
To: CESIUM GS, INC.
Reel/Frame 052432/0353 →
SUPPLEMENT TO INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 11, 2018
From: ANALYTICAL GRAPHICS, INC.
To: SILICON VALLEY BANK
Reel/Frame 046336/0191 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 5, 2018
From: KAZA, SRINIVAS; COZZI, PATRICK; LILLEY, SEAN
To: ANALYTICAL GRAPHICS, INC.
Reel/Frame 044544/0749 →