Isprs 2012
Isprs 2012
One billion points in the cloud – an octree for efficient processing of 3D laser scans
Jan Elseberg, Dorit Borrmann, Andreas Nüchter ⇑
Jacobs University Bremen gGmbH, Automation Group, School of Engineering and Science, Campus Ring 1, 28759 Bremen, Germany
a r t i c l e i n f o a b s t r a c t
Article history: Automated 3-dimensional modeling pipelines include 3D scanning, registration, data abstraction, and
Available online 4 December 2012 visualization. All steps in such a pipeline require the processing of a massive amount of 3D data, due
to the ability of current 3D scanners to sample environments with a high density. The increasing sam-
Keywords: pling rates make it easy to acquire Billions of spatial data points. This paper presents algorithms and data
Octree structures for handling these data. We propose an efficient octree to store and compress 3D data without
Tree data structure loss of precision. We demonstrate its usage for an exchange file format, fast point cloud visualization,
Data compression
sped-up 3D scan matching, and shape detection algorithms. We evaluate our approach using typical ter-
Frustum culling
Ray casting
restrial laser scans.
RANSAC Ó 2012 International Society for Photogrammetry and Remote Sensing, Inc. (ISPRS) Published by Elsevier
Nearest neighbor search B.V. All rights reserved.
1. Introduction ment octree encoding that fulfills these requirements and is capa-
ble of storing 1 billion points in 8 GB of memory. It is also possible
Laser range scanning provides an efficient way to actively ac- to employ disk caching with the data structure, i.e., larger data sets
quire accurate and dense 3D point clouds of object surfaces or can be streamed from a mass storage device when processing it.
environments. 3D point clouds provide a basis for rapid modeling For achieving our goal to process 1 billion points in main mem-
in industrial automation, architecture, agriculture, construction ory on a standard computer, we have implemented an efficient
or maintenance of tunnels and mines, facility management, and ur- data structure for 3D point clouds. In addition to the octree, this
ban and regional planning. Modern terrestrial and kinematic laser paper presents several algorithms exploiting the properties of
scan systems acquire data at an astonishing rate. For example, the our data structure. These algorithms include a novel and efficient
Faro Focus3D delivers up to 976,000 3D points per second and the RANSAC implementation for shape detection and a novel nearest
Velodyne HDL-64E yields 1.8 million range measurements per sec- neighbor search algorithm for ICP-based scan matching. Further-
ond. Kinematic laser scan systems often use multiple line scanners more, we show that our memory efficient encoding is also univer-
and also produce a huge amount of 3D data points. A common way sal enough to allow for other uses such as fast visualization. All
to deal with the data is to process only a small subset of it. While presented algorithms are available under the GPL license in the
this is an acceptable way of handling the data for some applica- 3DTK – The 3D Toolkit and can be downloaded from http://three-
tions it calls into question why so many measurements were ac- dtk.de. The toolkit contains a small show application that uses
quired in the first place. the frustum culling and processes 1 billion points while still en-
In this paper we describe a spatial data structure called an oc- abling the user to navigte smoothly through the point cloud. In
tree. Using innovations from the computer graphics community, case more points have to be rendered than the graphics card is able
we develop an octree implementation with advantageous proper- to process in a given time, the point density is reduced dynami-
ties. First, we prefer a data structure that stores the raw point cloud cally, by sending only a fraction of points to the graphics card.
over a highly approximative voxel representation. While the latter Thus, the user is able to inspect large 3D scenes. Fig. 1 shows a
one is perfectly justifiable for some use cases, it is incompatible scene with dynamic point reduction. The scene was recorded on
with tasks that require exact point measurements like data visual- the campus of the Jacobs University using a Riegl VZ-400 scanner.
ization and scan matching. Second, the octree ought to be fast, i.e., The data set contains 876,820,018 3D points and is easily process-
access, insert and delete operations must be in O(log n), where n is able with our octree implementation. The data set and windows
the number of stored points. Last and most important, the data executables are given at http://plum.eecs.jacobs-university.de/
structure has to be memory efficient. We present an easy to imple- download/isprs2011/JacobsUni.zip. To view the 3D point cloud
using the described frustum culling on a 64-Bit Windows system,
⇑ Corresponding author. please unzip it and change into the directory win_x64. Afterwards,
E-mail addresses: [email protected] (J. Elseberg), d.borrmann@ call the program as show -s 31 -e 80–loadOct../dat/, which
jacobs-university.de (D. Borrmann), [email protected] (A. Nüchter). loads the provided 50 terrestrial 3D scans (starting with scan
0924-2716/$ - see front matter Ó 2012 International Society for Photogrammetry and Remote Sensing, Inc. (ISPRS) Published by Elsevier B.V. All rights reserved.
http://dx.doi.org/10.1016/j.isprsjprs.2012.10.004
J. Elseberg et al. / ISPRS Journal of Photogrammetry and Remote Sensing 76 (2013) 76–88 77
Fig. 1. Dynamic point reduction in 3DTK – The 3D Toolkit (http://threedtk.de). Top: reduced point cloud to obtain a frate rate of 20 fps. Bottom: All 3D points.
number 31 ending with scan number 80) and shows them in a technically dimensionless, i.e., there is no volume associated with
small OpenGL-based viewing program. them. When storing a point cloud, we must therefore define a stop-
ping rule for occupied volumes. We define both a maximal depth
2. Octrees for storing 3D point clouds and a minimal number of points as a stopping criteria. If either
the maximal depth is exceeded or the number of points is below
An octree is a tree data structure that is used for indexing the given limit leaf nodes, instead of inner nodes, are generated.
3-dimensional data. It is the generalization of binary trees and Defining a maximal depth is equivalent to defining the smallest
quadtrees, which store one and 2-dimensional data respectively. possible leaf size, also referred to as the voxel size. A list of points
Each node in an octree represents the volume formed by a rectan- is stored in each occupied leaf. By applying two simple criteria we
gular cuboid, often, also in our implementation, simplified to an avoid building a perfect octree, i.e., an octree, where all leaves are
axis aligned cube. This is analogous to representing a line segment, at the same depth and all other nodes have exactly eight children.
or rectangle for binary and quadtrees. Consequently an octree node First and foremost the uniformity criteria above is applied to vol-
has up to eight children, each corresponding to one octant of the umes without points, such that subdivision is not necessary in
overlying cube/node. A node having no children usually implies empty nodes. In fact, we only create child nodes for octree volumes
that the corresponding volume can be uniformly represented, i.e., that contain points. All nodes without children are interpreted as
no further subdivision is necessary to disambiguate. This conven- empty space. Second, we do not subdivide a volume further that
tion is not completely applicable when storing points, which are contains only a single point. Laser scanners sample only the surface
78 J. Elseberg et al. / ISPRS Journal of Photogrammetry and Remote Sensing 76 (2013) 76–88
Table 1
Memory requirements for the sparse Kurt3D point cloud using several octree implementations and different resolutions. The first column gives the size of the smallest leaf in the
tree, i.e., half of its side length. The second and third columns give the number of nodes and leaf nodes for the 8 bytes per node implementation. The real size in memory as well as
the average construction time follows in the next two columns. After those, the number of nodes for the 7 bytes implementation is given as well as the percentual increase and
the real size in memory. Construction time has been omitted, as it is virtually equally to the 8 bytes implementation. The memory requirements and construction time for the
implementation with 100 bytes per node are listed in the last two columns. (cf. Fig. 3).
Fig. 5. An example of a simple octree as it is stored using the proposed encoding. The node in the upper left has three valid children, one of which is a leaf. Therefore, the child
pointer only points to three nodes stored consecutively in memory. The leaf node in this example is a simple pointer to an array which stores both the number of points and
the points with all their attributes.
precision the smallest volume in the octree must have a side length algorithm that has negligible memory requirements and a runtime
of 6.5 cm. Assuming a desired precision of 10 lm, which is still two of O(n log (n)) in the number of points. First, the bounding box of
orders of magnitude smaller than typical specified measurement the point cloud is computed and the root node is initialized. The
precisions, the largest node is allowed to have a side length of construction of the tree is then accomplished by sorting the point-
65 cm. At this voxel size the octree overhead is minimal even for list similar to quicksort. At each node the given list of points is first
large scans. reorded with respect to the center of the node in one dimension.
The resulting two sublists are then both reordered with respect
2.3. Efficient construction of an Octree to the center in the next dimension. The same is done with the last
dimension. This operation results in eight possibly empty lists of
When constructing octrees from unorganized pointclouds care points, one for each possible child. As this is done recursively in
must be taken not to exceed the available memory while still pro- quicksort fashion for every node the initial list is sorted into the
cessing the high number of points as fast as possible. We give an Morton order. The construction of the tree that takes place
Fig. 6. Three point clouds are used for the following analysis. The left point cloud is a 3D scan that was acquired by the mobile robot Kurt3D using an actuated SICK LMS200
laser scanner in an office environment with 81,360 points (1.5 MB). Statistics for this data set is given in Table 1. The middle scan is a high resolution scan taken in the city
center in Bremen using the Riegl VZ-400 3D scanner. The point cloud contains 15,896,875 points (303 MB). Refer to Table 2 for data on this point cloud. The right scan was
also acquired by the RIEGL VZ-400, but in a large scale indoor environment, the bunker Valentin in Bremen-Farge. The point cloud is therefore very dense with 22,538,374
points (420 MB). Results are given in Table 2.
J. Elseberg et al. / ISPRS Journal of Photogrammetry and Remote Sensing 76 (2013) 76–88 81
Table 2
Statistics for the Bremen city data set (cf. Table 1).
Table 3
Statistics for the bunker Valentin data set (cf. Table 1).
simultaneously is therefore in O(n log (n)). The necessary memory most dense dataset, several things speak against this constraint. At
never exceeds the point list plus the octree structure. no resolution the memory benefit is particularly significant in the
first place. The maximal memory saving in the bunker Valentin
2.4. Experiments and results data set is only approx 20 kB. Compared to the size of the point
cloud itself, which is about 700 MB this is neglegible. On the other
To demonstrate the effectiveness of the proposed octree enco- hand, when the constant depth restriction results in a larger mem-
dings, we computed the required memory for the octree data ory footprint, the penalty is several orders of magnitude larger
structure (without the points) with different depths. This was done than the benefit could ever be. The penalty also tends to increase
for three representative scans of differing density as given in Fig. 6. polynomially with the tree depth. On level 15 the constant depth
The data is given in Table 1–3 for different leaf sizes. It is important implementation requires almost 100 MB more memory. This is of
to note that the leaf size is only half of the side length of the leaf course caused by the drastically increasing number of nodes re-
nodes, due to the way the octree volume is stored in our imple- quired to pad the tree. A further consequence of this padding is
mentation. For all tests, the root volume and therefore all octree the increased computations involved in iterating over the octree
volumes axis aligned cubes. The size and position of the root is structure.
such that it represents the smallest cube possible to contain the The time needed for the construction of either octree is near lin-
entire data set. The time needed to construct the reference as well ear in the depth of the octree.. The reference octree is always faster
as the proposed octree has also been determined experimentally. by some fixed amount of time. This time difference is caused by the
For each leaf size the average construction time for the octrees reallocation of the point data in the leaves, which happens in the
out of 10 trials performed on an Intel(R) Xeon(R) proposed octree but not in the reference. In fact, if the construction
[email protected] is shown in Table 1–3. of the reference also reallocates the points in a more compact fash-
The first data set has the smallest number of points, and is the ion, it is slower than the proposed variant.
least dense, i.e., it contains many points with large distances to
their neighbors. Consequently, the performance of the constant
depth octree very quickly deteriorates (cf. Table 1. Already, at a 3. An open file format for exchanging 3D point clouds
depth of five the memory benefit of the smaller node representa-
tion is negated. In the larger and denser datasets (cf. Tables 2 Due to the great diversity of terrestrial 3D modeling applica-
and 3), the octree reaches a depth of 10 before the constant depth tions several software products exists, which are suitable for spe-
requirement results in a larger memory footprint. Yet, even in the cial tasks. For airborne and kinematic laser scans there exists a
82 J. Elseberg et al. / ISPRS Journal of Photogrammetry and Remote Sensing 76 (2013) 76–88
common lidar data exchange format, the .las format (Samberg, Table 4
2007). ‘‘This binary file format is an alternative to proprietary sys- Compression results for the data sets. The compression ratio between the original
binary data and the octree representation as well as the average error for representing
tems or a generic ASCII file interchange system used by many com- the point of the data sets and their octree representation are given.
panies. A problem with proprietary systems is that data cannot be
easily taken from one system or process flow to another. In addi- Data set File size File size binary File size Ratio % Error lm
.txt MB 64 (32 Bits) MB compressed
tion, processing performance is degraded because the reading octree MB
and interpretation of ASCII elevation data can be very slow and
Kurt3D 1.907 1.862 (0.931) 0.472 50.73 4.165
the file size can be extremely large, even for small amounts of Bremen city 477.0 424.4 (242.5) 121.6 50.14 5.102
data.’’(American Society for Photogrammetry and Remote Sensing, Bunker Valentin 665.7 601.8 (343.9) 172.1 50.04 6.677
2011). This applies also for terrestrial 3D modeling pipelines, but
there is currently no standard format available. Kern et al. (2009)
defines a binary point cloud format that hence reduces the process-
ing time. point is. Consequently, if an octree volume is outside with respect
The octree as given in Section 2 is well suited for storing large to a plane, the node and all its children are not visible. If, on the
point cloud data, as it is a lossless compression, which reduces other hand, the volume is entirely on the inside, culling with the
the size of a point cloud by a factor of roughly two and comes with respective plane is discontinued for all children.
a fast indexing. Table 4 presents the compression results for the
three data sets. The serialization of the proposed octree results in To summarize, the given algorithm first determines which
an efficient method for storing point clouds. frustum planes are relevant for the children. Simultaneously, it
checks wether the current octree volume is visible and termi-
4. Efficient algorithms on octrees nates accordingly. The second step is to either display the points
in the current leaf, or to recursively continue culling in the child
4.1. Adaptive visualization using frustum culling nodes. In this fashion, one foregoes unneccessary collision checks
both inside and outside of the viewing frustum. Furthermore,
To exploit the octree structure for fast visualization we imple- checks are also minimized for the intersection case, as only rel-
mented frustum culling. The octree then works as a hierarchy of evant frustum planes will be used. Fig. 7 illustrates this
bounding volumes. Much like in the software qsplat (Rus- principle.
inkiewicz and Levoy, 2000) it is used to quickly decide which The main bottleneck in a software culling implementation is
points are visible. In addition, it also enables one to dynamically transmitting the point information to the graphics card when a
vary the level of detail to enforce a high framerate by rendering large number of them is within the viewing frustum. Using the
only a faction of points. octree structure this problem can be mitigated in several ways.
In computer graphics the frustum is the visible region of space. First, when an octree volume would appear as a single pixel it
For a perspective projection, this region is a rectangular pyramid, is sufficient to also send only a single vertex instead of all con-
constituted of six planes. Frustum culling is the process of distin- tained points without decreasing image quality. Second, we may
guishing which parts of the scene are within and which parts are dynamically adjust rendering quality to allow for navigation in
outside of the frustum, thus finding the visible parts of the scene. the scene, similar to Richter and Döllner (2010) and Dachsbach-
Non-visible elements do not need to be drawn, hence increasing er et al. (2003). As before, we send only single vertices in any
the performance. Algorithm 1 describes how to efficiently imple- octree volume that falls below a level-of-detail threshold
ment the frustum culling using the octree data structure. The algo- (number of pixels on screen). The size of the rendered vertex
rithm is initally called at the root of the octree, with the full is adjusted accordingly. With thresholds greater than 1, this
viewing frustum. trades resolution for speed. An example of levels of details
are given in Fig. 8.
Algorithm 1. display(sethplanei frustum, octree node) We have conducted experiments to find the optimal voxel res-
olution. Fig. 9 presents framerates for a point display employing
the frustum culling implemented on the CPU. Several different
sethplanei childfrustum;
voxel resolutions as well as the standard implementation with
for all p 2 frustum do
no software culling are plotted. To achieve comparable situations
if PlaneAABBCollision(p, this) = within then
the point display has rendered a 3D-flight-through, where the
childfrustum.insert(p)
camera moves on a path through the Bremen city data set. The
els if PlaneAABBCollision(p, this) = outside then
camera started at a position, where the entire point cloud was
return
visible, then proceeded to move through the point cloud close
end if
to the point of origin until it reached a position within the vol-
end for
ume, where about 1% of the point cloud is visible. One observes
if isLeaf(node) then
a low framerate in the beginning, and an ever increasing speedup.
drawPoints(node)
The time for the rendering of each frame was measured by a
else
clock with millisecond accuracy, so that the maximal framerate
for all child 2 node.children do
is 1000 frames per second.
display(childfrustum, child)
The speedup gained by the frustum culling is small when large
end for
portions of the point cloud occupy the frustum. Reducing the num-
end if
ber of points increases the framerate considerably more when
using the octree culling as compared to the default point display.
Algorithm 1 employs the function PlaneAABBCollision(), which Note, that for scans that occupy an area this large it is more typical
determines the position of an octree volume with respect to a to only view a small fraction of the scene.
plane, i.e., whether the plane is within the volume or outside. Comparing performances for various voxel sizes, we see that
The latter case has two subcases. Each plane of the frustum is ori- while large voxel sizes still result in some speedup, performance
ented such that it is trivial to determine on which side a given becomes more and more unsteady when a large number of points
J. Elseberg et al. / ISPRS Journal of Photogrammetry and Remote Sensing 76 (2013) 76–88 83
Fig. 7. The principle of frustum culling using octrees. Gray nodes are known to be partially within the frustum, so that culling must continue. Light gray Nodes are known to
be entirely within the frustum, so that culling is discontinued. Dark gray nodes are entirely on the outside of the frustum.
100
50
20
10
1
1.04 cm
4.17 cm
16.7 cm
33.4 cm
133 cm
267 cm
No culling
Visible points
0 200 400 600 800 1000
Fig. 9. Framerates of the octree culling with different voxel sizes over the frame index in the rendered video. The percentage of visible points in each frame is also plotted.
Please note that the y-axis is on a logarithmic scale to be able to differentiate in the areas of both low and high framerates.
Algorithm 2. lookup(Vector3i index, octree node, octree ⁄parent- Algorithm 4. castRay(Ray ray, octree root)
Trace, int depth)
octree ⁄parentTrace[maxDepth]
loop int depth = 0
int childBit = childBitDepth[depth] octree node = lookup(ray.origin, root, parentTrace, depth)
int childIndex = (index.x & childBit –0) 2 j (index.y & Vector3i ci = Bresenham(ray);
childBit –0) 1 j (index.z & childBit –0) Vector3i cci = ci;
octree ⁄parentTrace[depth] = & node loop
depth++ while contains(node, ci) do
node=node.children[childIndex] cci=ci;
if isLeaf(node) then ci=Bresenham(ray)
return end while
end if node = findNeighbor(ci, cci, parentTrace)
end loop if isLeaf(node) then
drawPoints(node)
return
end if
end loop
Table 5 planes, sort them and select the appropriate sequence of traversal
Average computing time for the ICP algorithm employing nearest neighbor search for a closest child first search for every traversed node. Compared
using k-d trees and octrees. The average was computed over 100 and 20 runs of ICP
for the Kurt3D data set and the larger Riegl data sets, respectively. Default parameters
to this, the traversal order for a k-d tree order is instantly deter-
were used for every test, with a maximal point-to-point distance of 25 cm and 50 ICP mined by a single proximity check, thereby avoiding unnecessary
iterations. Random noise was added to the initial pose estimate for each run. The computations if nodes need not to be visited.
translational error was linearly distributed between 25 and 25 cm, whereas the The regular subdivisions of an octree are still leveraged for an
rotational error was linearly distributed between 10° and 10°. Construction time for
NNS that is in most cases faster or as fast as in a k-d tree. The larg-
the trees is not included, all times are in milliseconds.
est benefit is that fast indexing as in Section 4.2 is possible in an
Data set k-d Tree Octree octree. This allows us to directly traverse to the deepest octree
Kurt3D 3043.099 2386.881 node, which contains the bounding sphere of the query point, with
Bremen city 355848.476 314506.905 a constant number of floating point operations. The full NNS with
Bunker Valentin 837675.381 784241.905
closest child first and backtracking is then performed on this node.
Kurt3D reduced 757.514 625.683
Bremen city reduced 91735.667 74706.85 The initial node lookup is considerably faster than the equivalent
Bunker Valentin reduced 91153.0 74821.238 operation, essentially a point lookup that is already in the tree, is
in a k-d tree. However, the speedup gained by this is clearly depen-
dant on the maximal allowed distance to the query point. The
smaller the maximal distance, the deeper the initial node lookup
1977), where k = 3. As k-d trees are binary trees they allow an effi- can traverse on average. The deeper said node is, the fewer compu-
cient implementation of NNS. Principally, octrees should allow for tations are performed in the following NNS. To evaluate the perfor-
the same efficiency. In fact, due to the octree’s regular subdivision mance of the NNS for varying maximal distances, we performed
it ought to be better suited for NNS than the popular k-d tree (Arya ICP scan matching employing the octree and a k-d tree NNS. Re-
et al., 1998). The complication arises during the implementation of sults are given in Table 5 and Fig. 10. Despite the previous argu-
NNS in an octree. The key to an efficient traversal to the node con- mentation, the octree based NNS does not suffer considerably
taining the nearest neighbor for both tree variants is the order in more from larger maximal distances than the kd tree based NNS.
which children are visited. The number of nodes that we need to We observe however, that there is an increase in the variance for
visit is best reduced by the closest child first criteria (best bin first), the time required for the NNS using the octree. Conversely, the var-
i.e., the order of traversal is determined by the distance to the iance of the k-d tree based NNS is stable over all distances. This
query point. This is trivial to do for the binary k-d tree, but requires suggests that the octree is more vulnerable to the combination of
some effort for an octree which may have one to eight child nodes. large maximal distances and unfavorable starting pose estimates.
For any octree node with eight children there is a total of 48 For ease of implementation and to further reduce the number of
possible sequences in which to traverse the children. Every child floating point operations, we restrict the number of traversals to
corresponds to an octant of the entire coordinate space. The query eight instead of 48. Since the order of traversal only depends on
point may fall into any of those eight octants. For each of those the octant into which the query point falls, there is no need for
cases there are six possible traversals determined by the order of proximity checks or sorting. Consequently, no floating point oper-
proximity of the query point to the three split planes. Therefore, ations are required in our NNS implementation except in the leaves
NNS in an octree has to make proximity checks to three split of the octree, where the list of stored points are checked against
3
time s
Octree
kd-tree
0
0 250 500 750 1000
minimal distance cm
Fig. 10. Plot of the average and standard deviation of the computing time of ICP using k-d trees and octrees with respect to the maximal allowed matching distance. For each
data point 100 runs of ICP, with 50 iterations each, were done with noise applied to the initial starting pose estimate as in Table 5.
86 J. Elseberg et al. / ISPRS Journal of Photogrammetry and Remote Sensing 76 (2013) 76–88
Algorithm 5. FindClosest
Algorithm 6. FindClosestInNode
Fig. 12. Extracted planes using RANSAC for the three data sets presented in Fig. 6.
file format. Furthermore, we would like to thank Prashant K.C. for Samberg, A., 2007. An Implementation of the ASPRS LAS Standard. International
Archives of Photogrammetry, Remote Sensing and Spatial Information Sciences
acquiring many terrestrial laser scans on our campus.
36 (Part 3/W52), 363–372.
Schnabel, R., Wahl, R., Klein, R., 2007. Efficient RANSAC for point-cloud shape
References detection. Computer Graphics Forum 26 (2), 214–226.
Wand, M., Berner, A., Bokeloh, M., Fleck, A., Hoffmann, M., Jenke, P., Maier, B.,
Morton, 1966. Tech. Rep. Ottawa, Ontario, Canada, IBM Ltd. Staneker, D., Schilling, A., 2007. In: Proceedings Symposium on Point-Based
Friedman, J.H., Bentley, J.L., Finkel, R.A., 1977. An algorithm for finding best matches Graphics (PBG ’07), pp. 37–46.
in logarithmic expected time. ACM Transaction on Mathematical Software 3 (3), Enrico, Gobbetti, Fabio, Marton, Guiti, Iglesias, Antonio, Jose, 2008. A single-pass
209–226. GPU ray casting framework for interactive out-of-core rendering of massive
Fischler, M.A., Bolles, R.C., 1981. Random sample consensus: a paradigm for model volumetric datasets. The Visual Computer: International Journal of Computer
fitting with applications to image analysis and automated cartography. Graphics 24 (7), 797–806.
Communications of the ACM 24 (6), 381–395. Borrmann, D., Elseberg, J., Lingemann, K., Nüchter, A., Hertzberg, J., 2008. Globally
Meagher, Donald, 1982. Geometric modeling using octree encoding. Computer consistent 3D mapping with scan matching. Journal Robotics and Autonomous
Graphics and Image Processing 19 (2), 129–147. Systems (JRASs) 56 (2), 130–142.
Roth, Scott D., 1982. Ray casting for modeling solids. Computer Graphics and Image Knoll, Aaron M., Wald, Ingo, Hansen, Charles D., 2009. Coherent multiresolution
Processing 18 (2), 109–144. isosurface ray tracing. The Visual Computer: International Journal of Computer
Gervauts, M., Purgathofer, W., 1990. A Simple Method for Color Quantization: Graphics 25 (3), 209–225.
Octree Quantization. In: Graphics Gems. Academic Press Professional Inc., San Fredie Kern, Michael Pospis, Olaf Prümm, 2009. In: Photogrammetrie Laserscanning
Diego, CA, USA, pp. 287–293. Optische 3D-Messtechnik, Beiträge der Oldenburger 3D-Tage, pp. 20–30.
Besl, P., McKay, N., 1992. A method for registration of 3-D shapes. IEEE Transactions Laine, Samuli, Karras, Tero, 2010. Efficient sparse voxel octrees. In: Proceedings of
on Pattern Analysis and Machine Intelligence (PAMI) 14 (2), 239–256. the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (I3D
Arya, S., Mount, D.M., Netanyahu, N.S., Silverman, R., Wu, A.Y., 1998. An optimal ’10), pp. 55–63.
algorithms for approximate nearest neighbor searching in fixed dimensions. Wurm, K.M., Hornung, A., Bennewitz, M., Stachniss, C., Burgard, W., 2010. OctoMap:
Journal of the ACM (JACM) 45 (6), 891–923. a probabilistic, flexible, and compact 3D map representation for robotic
Thrun, S., Fox, D., Burgard, W., 2000. A Real-time Algorithm for Mobile Robot systems. In: Proceedings of the IEEE ICRA Workshop on Best Practice in 3D
Mapping with Application to Multi Robot and 3D Mapping. In: Proceedings of Perception and Modeling for Mobile Manipulation. Anchorage, AK, USA.
the IEEE International Conference on Robotics and Automation (ICRA ’00), San R. Richter, J. Döllner, 2010. Out-of-core real-time visualization of massive 3D point
Francisco, CA, USA, pp. 321–328. clouds. In: Proceedings of the 7th International Conference on Computer
Szymon Rusinkiewicz, Marc Levoy, 2000. QSplat: A multiresolution point rendering Graphics, Virtual Reality, Visualisation and Interaction in Africa, AFRIGRAPH ’10,
system for large meshes. In: Proceedings of the ACM SIGGRAPH. pp., 343–352. pp. 121–128.
Frisken, Sarah F., Perry, Ronald N., 2002. Simple and efficient traversal methods for Radu Bogdan Rusu, Steve Cousins, 2011. 3D is here: Point Cloud Library (PCL). In:
quadtrees and octrees. Journal of Graphics Tools 7 (3), 1–11. Proceedings of the IEEE International Conference on Robotics and Automation
Dachsbacher, C., Vogelgsang, C., Stamminger, M., 2003. Sequential point trees. In: (ICRA ’11), ICRA Communications, pp. 1–4.
ACM SIGGRAPH 2003 Papers. SIGGRAPH ’03, pp. 657–662. Girardeau-Montaut, D., 2011. Cloudcompare. <http://www.danielgm.net/cc>
Girardeau-Montaut, D., Roux, M., Marc, R., Thibault, G., 2005. Change detection on (Accessed 14.08.12).
points cloud data acquired with a ground laser scanner. International Archives American Society for Photogrammetry and Remote Sensing, 2011. Common Lidar
of Photogrammetry, Remote Sensing and Spatial Information Sciences 36 (Part Data Exchange Format. <http://www.asprs.org/Committee-General/LASer-LAS-
3/W19), 30–35. File-Format-Exchange-A%ctivities.html> (Accessed 14.08.12).
Bielak, J., Ghattas, O., Kim, E.J., 2005. Parallel octree-based finite element method for Wurm, K.M., et al., 2011. Octomap. <http://octomap.sourceforge.net/> (Accessed
large-scale earthquake ground motion simulation. Computer Modeling in 14.08.12).
Engineering and Sciences 10 (2), 99–112. Radu Bogdan Rusu, et al., 2011. Point Cloud Library. <http://pointclouds.org/>
Knoll, A., Wald, I., Parker, S., Hansen, C., 2006. Interactive isosurface ray tracing of (Accessed 14.08.12).
large octree volumes. 115–124. M., Wand, Berner, A., Bokeloh, M., Fleck, A., Hoffmann, M., Jenke, P., Maier, B.,
Schnabel, R., Klein, R., 2006. Octree-based point-cloud compression. In: Symposium Staneker, D., Parys, R., 2011. xgrt. <http://www.gris.uni-tuebingen.de/xgrt>
on Point-Based Graphics 2006, pp. 111–120. (Accessed 14.08.12).