IP Library Granted Patent US 11,650,319
Granted Patent B2
US 11,650,319 · App. 16/779,898 · Granted May 16, 2023

Assigning each point of a point cloud to a scanner position of a plurality of different scanner positions in a point cloud

Inventors: Cyril Novel (Paris, FR); Alexandre Gbaguidi Aisse (Suresnes, FR)
Assignee: Bentley Systems, Incorporated
G01S17/89G01S7/4808G06T7/521G06T7/60G06T7/73G06T2207/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,650,319
App. No.
16/779,898
Granted
May 16, 2023
Kind
B2
Abstract

In an example embodiment, a process may create a disk for each point of the point cloud, where a size of the disk and the orientation of the disk are respectively based on a computed scale and a non-oriented normal. The process may insert each disk into a search structure that is queried to determine if one or more disks intersect the paths from a given point to each scanner in the point cloud. The process may create an output corresponding to each scanner in the point cloud, where each output includes the number of intersecting disks and the distance from the given point to the scanner. The process may implement a sorting algorithm to assign the given point to a scanner position. An application may utilize the assignment of each point in the point cloud to a scanner position to generate a high-resolution 3D mesh of a scene.

Claims (55)

1. A method, comprising:

receiving a point cloud that includes a plurality of points each having a position relative to the at least one scanner, wherein the point cloud is captured by a plurality of scanners;

creating a disk for each point of the point cloud, where the disk includes a size based on a computed scale for the point and an orientation based on a computed non-oriented normal for the point;

inserting each disk into a search structure;

creating a plurality of segments for a given point of the point cloud, wherein each of the plurality of segments represents a different path from the given point to each of the plurality of scanners;

querying the search structure utilizing the plurality of segments to determine if one or more disks intersect each path from the given point to each of the plurality of scanners;

creating a plurality of outputs based on the query, wherein each output corresponds to a different scanner of the plurality of scanners, and where each output includes a number of intersecting disks intersecting the path from the given point to the different scanner and further includes a distance from the given point to the different scanner;

implementing a sorting algorithm that compares values of the plurality of outputs to identify a selected scanner of the plurality of scanners, where the selected scanner corresponds to a particular output of the plurality of outputs; and

assigning the given point to a scanner position of the selected scanner.

2. The method of claim 1 , wherein the computed scale for the point is computed by dividing the distance from the point to a neighboring point by 2.

3. The method of claim 2 , wherein the neighboring point is a 25 th nearest neighboring point of the point.

4. The method of claim 1 , wherein the computed non-oriented normal for the point is computed utilizing a principal component analysis (PCA) algorithm.

5. The method of claim 1 , wherein the search structure is an Axis Aligned Bounding Box tree (AABB tree).

6. The method of claim 1 , further comprising adjusting the number of intersecting disks for a selected output based on a determination that a particular disk is associated with noise.

7. The method of claim 1 , wherein a selected disk, for a selected point of the point cloud, has a center that lies at the x, y, and z coordinate of the selected point, and the selected disk has a radius that corresponds to the computed scale for the selected point.

8. The method of claim 7 , wherein the selected disk has an orientation in space that corresponds the computed non-oriented normal.

9. The method of claim 1 , wherein the sorting algorithm compares the values of pairs of the plurality of outputs, the sorting algorithm utilizes:

if p is visible and q is not, then p is better than q;

if q is visible and q is not, then q is a better than p;

if Np<Nq−1 or if (Np<=Nq+1 and p segment is shorter than q segment), then p is better than q;

Else q is better than p,

where p is a first selected output of the plurality of outputs, q is a second selected output of the plurality of outputs, Np is the number of intersecting disks included in the first selected output, Nq is the number of intersecting disks included in the second selected output, p segment is the distance from the given point to a first scanner associated with the first selected output, and q segment is the distance from the given point to a second scanner associated with the second selected output.

10. A system for assigning a point of a point cloud to a scanner position of a plurality of scanner positions in the point cloud, the system comprising:

processing logic configured to:

receive the point cloud that includes a plurality of points each having a position relative to at least one scanner, wherein the point cloud is captured by a plurality of scanners;

create a disk for each point of the point cloud, where the disk includes a size based on a computed scale for the point and an orientation based on a computed non-oriented normal for the point;

insert each disk into a search structure;

create a plurality of segments for a given point of the point cloud, wherein each of the plurality of segments represents a different path from the given point to each of the plurality of scanners;

query the search structure utilizing the plurality of segments to determine if one or more disks intersect each path from the given point to each of the plurality of scanners;

create a plurality of outputs based on the query, wherein each output corresponds to a different scanner of the plurality of scanners, and where each output includes a number of intersecting disks intersecting the path from the given point to the different scanner and further includes a distance from the given point to the different scanner;

implement a sorting algorithm that compares values of the plurality of outputs to identify a selected scanner of the plurality of scanners, where the selected scanner corresponds to a particular output of the plurality of outputs; and

assign the given point to a scanner position of the selected scanner.

11. The system of claim 10 , wherein the computed scale for the point is computed by dividing the distance from the point to a neighboring point by 2.

12. The system of claim 11 , wherein the neighboring point is a 25 th nearest neighboring point of the point.

13. The system of claim 10 , wherein the computed non-oriented normal for the point is computed utilizing a principal component analysis (PCA) algorithm.

14. The system of claim 10 , wherein the search structure is an Axis Aligned Bounding Box tree (AABB tree).

15. The System of claim 10 , wherein the processing logic is further configured to adjust the number of intersecting disks for a particular output based on a determination that a particular disk is associated with noise.

16. The system of claim 10 , wherein a selected disk, for a selected point of the point cloud, has a center that lies at the x, y, and z coordinate of the selected point, and the selected disk has a radius that corresponds to the computed scale for the selected point.

17. The system of claim 16 , wherein the selected disk has an orientation in space that corresponds the computed non-oriented normal.

18. The system of claim 10 , wherein the sorting algorithm compares the values of pairs of the plurality of outputs, and the processing logic is further configured to utilize a plurality of conditions that include:

if p is visible and q is not, then p is better than q;

if q is visible and q is not, then q is a better than p;

if Np<Nq−1 or if (Np<=Nq+1 and p segment is shorter than q segment), then p is better than q;

Else q is better than p,

where p is a first selected output of the plurality of outputs, q is a second selected output of the plurality of outputs, Np is the number of intersecting disks included in the first selected output, Nq is the number of intersecting disks included in the second selected output, p segment is the distance from the given point to a first scanner associated with the first selected output, and q segment is the distance from the given point to a second scanner associated with the second selected output.

19. A non-transitory electronic-device readable medium having instructions stored thereon, the instructions when executed by one or more electronic devices operable to:

receive a point cloud that includes a plurality of points each having a position relative to at least one scanner, wherein the point cloud is captured by a plurality of scanners;

create a disk for each point of the point cloud, where the disk includes a size based on a computed scale for the point and an orientation based on a computed non-oriented normal for the point;

insert each disk into a search structure;

create a plurality of segments for a given point of the point cloud, wherein each of the plurality of segments represents a different path from the given point to each of the plurality of scanners;

query the search structure utilizing the plurality of segments to determine if one or more disks intersect each path from the given point to each of the plurality of scanners;

create a plurality of outputs based on the query, wherein each output corresponds to a different scanner of the plurality of scanners, and where each output includes a number of intersecting disks intersecting the path from the given point to the different scanner and further includes a distance from the given point to the different scanner;

implement a sorting algorithm that compares values of the plurality of outputs to identify a selected scanner of the plurality of scanners, where the selected scanner corresponds to a particular output of the plurality of outputs; and

assign the given point to a scanner position of the selected scanner.

20. The non-transitory electronic-device readable medium of claim 19 , wherein the computed scale for the point is computed by dividing the distance from the point to a neighboring point by 2.

Assignments (3)
SECURITY INTEREST Recorded Oct 25, 2024
From: BENTLEY SYSTEMS, INCORPORATED
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 069268/0042 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME ON COVER SHEET PREVIOUSLY RECORDED ON REEL 051870 FRAME 0603. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 19, 2020
From: NOVEL, CYRIL; AISSE, ALEXANDRE GBAGUIDI
To: BENTLEY SYSTEMS, INCORPORATED
Reel/Frame 052189/0629 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: NOVEL, CYRIL; GBAGUIDI AISSE, ALEXANDRE
To: BENTLEY SYSTEMS, INCORPORATED\
Reel/Frame 051870/0603 →