The present disclosure pertains to a method for visualization of a multitude of data sets in the same scene, the data sets having level-of-detail structures, such as point cloud data sets. The method comprises performing a level-of-detail selection on a multitude of indexed data sets which are not necessarily aligned with respect to each other.
Level-of-detail selection is the process of selecting parts of the data from one or several data sets. For instance, U.S. Pat. No. 6,639,598 B2 discloses a rendering method involving level-of-detail selection. This selection of relevant parts of a data set is particularly important in case of memory constraints.
Level-of-detail structures may be given by a tree, such as an octree, comprising a single root node and branches with nodes having a parent-child relation with respect to each other. In terms of this application, each node in the tree (which, by convention, is considered growing downwards) has zero or more child nodes, which are below it in the tree. A node that has at least one child node is the parent node of the child node. A node that has no child nodes is a leaf node. It is known to compute a tree structure on all nodes of all data sets and do the level-of-detail selection on this level-of-detail structure. Besides of being a heavy operation for the multitude of nodes, it has computational advantages to use the traversal structure of the octrees of each data set in its original way. For instance, EP 3 828 704 B1 discloses a method for acquiring and visualizing point clouds, wherein level-of-detail structures are octrees.
It is an object of the present disclosure to provide an improved method for visualizing a multitude of data sets in the same scene.
In particular, it is an object to provide such a method that allows displaying a large number of point clouds, for which a level-of-detail structure exists individually, but not with respect to each other.
It is a further object to provide such a method that can be executed on a device having low memory available for visualizing data, for instance on a device having a small graphics memory, e.g., a hand-held and/or low-end device.
A first aspect pertains to a computer-implemented method for visualizing 3D data (e.g., point cloud data) of a multitude of data sets in a scene using a computing device having limited available memory for visualizing the 3D data. The method is performed by the computing device and comprises:
According to this aspect, selecting the nodes comprises performing a level-of-detail selection, which comprises
The allocation of the available memory comprises:
According to some embodiments, the method comprises defining a subset of data sets as background data sets based on an overlap of the nodes of the respective data set with the background frustrum, wherein the allocation of the available memory comprises:
According to some embodiments, the first tree-traversal depth is used for traversing the LOD structure of each background data set, and determining the first tree-traversal depth is also based on a number of data sets in the camera frustrum.
According to some embodiments, a second tree-traversal depth is used for traversing the LOD structure of each background data set, wherein
According to some embodiments, the allocation of the available memory comprises
In some embodiments, determining the first tree-traversal depth is based on the foreground memory, and determining the second tree-traversal depth is based on the background memory. In some embodiments, assigning memory to each region comprises assigning foreground memory to regions of the near frustrum and background memory to regions of the background frustrum.
According to some embodiments, assigning the available memory as foreground memory to the foreground and as background memory to the background comprises giving more weight to the estimated amount of 3D data in the foreground, particularly wherein more of the available memory is assigned to the foreground than to the background.
According to some embodiments, determining the first tree-traversal depth is also based on a number of data sets the near frustrum.
According to some embodiments, dividing the camera frustrum into a multitude of 3D regions comprises dividing both the near frustrum and the background frustrum into a multitude of 3D regions.
According to some embodiments, the near frustrum and/or the background frustrum are divided into at least nine 3D regions, for instance in a 3×3 matrix.
According to some embodiments, defining the subset of data sets as foreground data sets comprises determining whether the root node intersects the near frustrum.
According to some embodiments, selecting the nodes comprises removing invisible data sets before performing the level-of-detail selection, for instance wherein the invisible data sets are removed by means of bounding-box culling.
According to some embodiments, the computing device is a hand-held device, such as a tablet computer or smart phone, the hand-held device comprising a touch-sensitive display, and the 3D data loaded into the memory is visualized on the touch-sensitive display.
According to some embodiments, the memory for visualizing the data sets is a memory of a graphics card of the computing device.
A second aspect pertains to a computer program product comprising program code having computer-executable instructions for performing a method according to the first aspect.
A third aspect pertains to a hand-held computing device comprising a memory and a touch-sensitive display for visualizing 3D data loaded into the memory. For instance, the device may be a tablet computer or a smart phone. The device has stored a computer program product according to the second aspect and is configured for performing a method according to the first aspect.
Aspects will be described in detail by referring to exemplary embodiments that are accompanied by figures, in which:
A first part is related to removing invisible data sets. For instance, this may be achieved by bounding-box culling. Alternatively, especially for medium-sized numbers of data sets, a linear walk through can be similarly efficient. The bounding-box culling may include organizing the bounding boxes of the data sets into a tree structure, which may be a simple axis-aligned-bounding-box tree. The camera frustrum 10 has a near plane 11 and a far plane 12 defined by the virtual camera's viewing direction 13. The near plane 11 is thus near the virtual camera, and the far plane 12 is at the opposite end of the frustrum 10. Some of the data sets 1-5 have an overlap with the camera frustum 10. A traversal of the bounding-box tree allows rejecting those data sets that lie completely outside of the camera frustum 10. In the example of
Nevertheless, the number of nodes falling into the frustum 10 can still vastly surpass the amount of storage available. Performing a level-of-detail selection per data set by allocating an equal part of the memory available for each data set would not account for the fact that parts of some data set might be more relevant to the scene than parts of another data set and therefore should be given more space in memory. In the example of
The level-of-detail selection has only limited information about the content of the node. This information is usually its (oriented) bounding box and the point count. Based on this limited information and assuming that the point count is essentially proportional to the memory consumption of the data set, the level-of-detail selection will decide which node data needs to be loaded to the graphics card. The standard graphics pipeline will then cull the individual points in each node.
A second part is related to this selection procedure given limited information. This is illustrated in
Practically, this can be done by means of a smaller frustum (near frustum 15) close to the near plane 11 of the camera frustrum 10. The remaining part of the camera frustrum 10 thereby becomes the background frustrum 16.
For instance, all data sets which root node has an overlap with the near frustum 15 may be considered being part of the foreground (foreground data sets). In practice, often there will be a lot of large root nodes having actually no significant points inside the near frustum 15. Therefore, this search can be refined by only defining those data sets 1-5 to be part of the foreground which have nodes at a lower level-of-detail intersecting the near frustum 15. Alternatively, the absolute or relative intersecting volume between nodes and near frustum 15 can be computed and a threshold for determining the foreground data sets can be defined.
In principle, this subdivision in viewing direction could be refined by introducing a middle ground (or even further subdivisions), but for most applications the subdivision into foreground and background has proven to be sufficient.
From the number of data sets in the foreground and background, it can be estimated what share of data is present in each. If, for example, there are no data sets in the foreground, all memory will be given to the background. Otherwise, a larger portion of memory is given to the foreground as the points in the foreground tend to occlude points in the background. In addition, by zooming closer to a region, the user usually expects to have all data close to the camera appearing.
Starting with the foreground data set, the number of data sets in the foreground (near frustum 15) and the amount of memory available (e.g., available to the foreground) provide a rough estimation on how deep each tree can be traversed. In order to have some safety, each octree may be traversed somewhat deeper. The nodes 20-23 having an overlap with the camera frustum 10 are recorded. In addition, its screen space area is computed and recorded. Then, the nodes of each foreground octree are mapped to the subdivision cell having the largest share of this area. This way each node 20-23 is given an index for a subdivision region and, conversely, each subdivision region has a list of nodes. For each region, the nodes 20-23 are sorted according to their screen space area.
In case that data is provided only in the leaf nodes, then the octrees need to be traversed up to the leaf nodes and the most relevant data from the leaf nodes needs to be selected satisfying the memory constraint.
Having a memory limit for the foreground, an equal share is given to each of the subdivision regions and the nodes with largest screen space area are selected. Unused memory, for example when having empty regions, is given to regions with data. If, after this selection procedure, all foreground nodes have been selected and memory is still left, it is transferred to the background budget. The process is then repeated for the background data sets.
As a result, although the data sets are not aligned and there is no regular level-of-detail structure for all nodes of all data sets, a view of the multiple data sets can be generated which does not mass data into a single region of the scene, be it in the foreground/background or at a specific region in the view plane.
Then, the camera frustrum is divided 240 into a multitude of 3D regions. This may include subdividing both the near frustrum and the background frustrum or only one of them (particularly at least the background frustrum) into a multitude of 3D regions. For instance, each of them can be subdivided into at least nine 3D regions, e.g., in a 3×3 matrix. The available memory is allocated 250 to these 3D regions, and, based on the allocated memory, the nodes that comprise 3D data to be loaded into the available memory are selected.
Allocating 250 the available memory to the 3D regions optionally may include estimating an amount of 3D data in the foreground and/or in the background based on a number of foreground data sets and/or background data sets, so that a certain amount of the available data can be reserved as foreground memory to the foreground and/or as background memory to the background. Optionally, more weight can be given to the estimated amount of 3D data in the foreground, so that a larger amount of the available memory will be assigned to the foreground than to the background.
Starting with the foreground, allocating 250 the available memory to the 3D regions of the foreground (i.e., the near frustrum) comprises determining 260, based at least on the amount of memory available and on a number of data sets in the near frustrum (or, alternatively, on a number of all data sets in the camera frustrum), a tree-traversal depth, and traversing 262 the LOD structure of each foreground data set using this tree-traversal depth, thereby recording 264 all nodes of these data sets that have an overlap with the camera frustrum. A screen space for each of the recorded nodes is computed. Each of the recorded nodes is mapped 266 to one of the regions. In particular, each node is mapped to that region at which it has the largest area share. Each node receives an index for its region and each region has a list of nodes. For each region, the nodes may then be sorted according to their screen space area. Memory is then assigned 268 to each foreground region based on the screen spaces of all the nodes that have been mapped to the respective region.
Allocating the available memory to the 3D regions of the background (i.e., the background frustrum) comprises corresponding steps 270, 272, 274, 276 and 278. Specifically, allocating 250 the available memory to the 3D regions of the background (i.e., the background frustrum) may comprise determining 270, based at least on the amount of memory available and on a number of data sets in the background frustrum, another tree-traversal depth (i.e., not necessarily the same as for the foreground). Alternatively, a common tree-traversal depth may be determined for, both, the foreground and the background. Then, the LOD structure of each background data set is traversed 272 using the tree-traversal depth (i.e., either the common tree-traversal depth or the background tree-traversal depth), thereby recording 274 all nodes of these data sets that have an overlap with the camera frustrum. A screen space for each of the recorded nodes is computed. Each of the recorded nodes is mapped 276 to one of the regions in the background. In particular, each node is mapped to that region at which it has the largest area share. Again, each node receives an index for its region and each region has a list of nodes. For each region, the nodes may then be sorted according to their screen space area. Memory is then assigned 278 to each background region based on the screen spaces of all the nodes that have been mapped to the respective region.
Tree-traversal depths for the foreground and for the background may be different. If the available memory has been split into foreground memory and background memory, determining 260 the foreground tree-traversal depth may be based on the foreground memory, and determining 270 the background tree-traversal depth may be based on the background memory. Also, assigning 268, 278 memory to the regions may comprise assigning only the foreground memory to the regions of the foreground and only background memory to the regions of the background.
Although aspects are illustrated above, partly with reference to some preferred embodiments, it must be understood that numerous modifications and combinations of different features of the embodiments can be made. All of these modifications lie within the scope of the appended claims.
| Number | Date | Country | Kind |
|---|---|---|---|
| 23 216 367.5 | Dec 2023 | EP | regional |