All digital measures can only record discrete data sets of reality. As the hardware gets more accurate and the amount of data gets even larger, it is more and more necessary to visualize it for a better understanding.
The process of visualization large data sets in 3D costs enormous computing power. In the case of laser scanning it is necessary to display the data sets in 3D, even on non-high performance computers like laptops.
Our solution is to align a simple 3D surface to the existing data. While the amout of data will be significantly reduced, the properties of the scanned object, particulary the shape and color, will still be preserved.
A 3D laser scanner is a device that analyzes a real-world object or environment
to collect data on its shape and possibly its appearance (i.e. color).
Many different technologies can be used to build these 3D scanning
devices, each technology comes with its own limitations, advantages
and costs. There are still some limitations in the kind of objects that
can be digitized, because optical laser scanning technologies encounter
many difficulties with shiny, mirroring or transparent objects.
Applications:
During the measuring procedure, the laser scanner integrated in the measuring head rotates by 360° along the horizontal plane. By means of a rotating mirror, the laser beam is emitted in the shape of vertical fans and thus covers of 140° of its environment in the vertical plane.
With a CCD-camera integrated in the system, it is possible to record panorama or detail images that are available for documenting the scanned object. These pictures deliver a template to automatically assign the true colors to the recorded point sets.
A 3D point cloud is a discrete set of three-dimensional points. The coordinates of these points are calculated from the angles and the distance to the scanning device.
We used the two following kind of formats to store these data sets:
While working with point clouds, we only need to store the three coordinates for each point and the according color as RGB values.
We have chosen the IndexedFaceSet geometry for storing our data, because it is easy possible to extend it to a fully meshed 3D-model.
The drawback of this format is that coordinates, colors and the mesh data are stored consecutively in the file, which leads to a suboptimal processing time.
In this format we save the coordinates and the according RGB-colors each with a single line. The benefit from this method is that it needs only half the disc space and processing time.
The only disadvantage so far is that there is no meshing saved, so it is currently only appropriate for point clouds.
mesh (engl.): "In the computer graphics representative for a polygon network for modelling 3D objects'' [2]
Modern 3D-graphic cards are not optimized for rendering point clouds but displaying triangles and triangle meshes.
Therefore meshes offer an enormous speed advantage in regard to point clouds and make a smooth illustration of complex surfaces and structures possible.
"A triangulation of a set of points P is the triangulation of the convex hull of P, with all points from P being among the vertices of the triangulation." [2]
The naive start to create a mesh is to triangulate the point set,
i.e. to connect all points to triangles respectively a triangle net.
This method has several drawbacks:
That's why we have chosen to go a different way as described in the following chapter.
For moving this square along the surface, we chose a bottom-up translation, i.e. starting from the selected point we move the square upwards along the point cloud, until no more points are found. Then we move it one of its size to the side and back to the bottom and so on, until the whole surface is covered with triangles.
In the second step, to create a closed mesh, it is mandatory to connect the created strips. Therefore the mean value for the height of two super-imposed vertices respective to the orthographic projection area has to be calculated. The triangles get rearranged according to this value, which closes the gaps between two adjacent strips.
The most time-consuming part of the algorithm was the identification of the points within the square necessary for the calculation of the mean height and color, so the triangles could be aligned to the surface of the point cloud. It was necessary to divide the given data set into several parts to achieve a good performance. The separation algorithm is based on sorting the points according to the euclidian distance to the starting point. So far the space gets partitioned into 10 equidistant spherical shells (that's why we've chosen the funny name Globefish for it). This partitioning results in a remarkable speed advantage because not the whole array of all points has to be traversed in order to find the points lying in the square.
Fig. 11: This diagram shows a speed comparison between the Globefish and a naive (non-separated data array) algorithm.
In this test we used a relatively small file and varied the size of the square (patchsize). The speed-up factor lies here at 10x and between 4x to 6x in the average case for larger point clouds.