In recent years, 3D scanners have become popular, and inexpensive scanners have also appeared, making it easier to scan 3D data. Data scanned with a 3D scanner can be acquired as point cloud data (PointCloud). At that time, the amount of data at the level of scanning a small object is small, but the amount of data when scanning a space (such as an office floor) becomes enormous. If the amount of data becomes enormous, there will be problems when scanning and referring to data after scanning.
This time, with the aim of not requiring much data accuracy and operating even with lower-spec H/W, a prototype was created and verified from the following viewpoints.
- Data volume reduction
- Pursuit of scan processing speed
research content
〇 System configuration
- H/W
- computer
- CPU: Intel Core i3-7100U 2.40GHz
- Memory: 8.00GB
- 3D scanner
- Intel RealSense D435i
- S/W
- OS: Windows 10
- Language: Python 3.7.6
- Point cloud library: Open3D 0.8.0
〇 Function overview
- Data acquisition from 3D scanner
┗Scan one frame from a 3D scanner and store it internally as point cloud data
<camera image>
<Stipple data display>
- Generation of virtual grids and extraction of point clouds contained in each grid
┗ Generate a virtual grid (1m x 1m x 1m cube divided into 20 sides), determine which grid each point of the scanned point cloud data is included in, and count
<Composite display of virtual grid (center of gravity) and scanned point cloud data>
- Determination of effective grid
┗Determine the number of point clouds included in the grid and other thresholds for validity, and determine whether each grid is valid or not
<Display of valid grid (center of gravity)>
- Alignment with next frame (next data acquired from scanner)
┗Acquire the point cloud data of the next frame from the 3D scanner and align it with the previous frame. Currently, the point cloud data registration algorithm is performed by the following method
(1) RANSAC (Random Sample Consensus)
RANSAC iteratively samples a set of points randomly from the set of nearest neighbors and fits a least squares fit. RANSAC can sample the corresponding points used for motion estimation so that outliers are not included.
(2) ICP (Iterative Closest Point Algorithm)
One of the representative methods of markerless registration, the ICP algorithm finds the closest points between two point clouds as corresponding points, and repeats the process of estimating motion using the corresponding relationship. move the exercise closer to the correct value
<Display of valid grid (center of gravity)>
- Wireframe generation from active grid
┗Create wireframe data based on effective grid (center of gravity) information by merging previous frame data and next frame data
<Wireframe display based on merged effective grid>
System configuration
- Data volume reduction
┗The shape of the scanned data is represented in a cube shape (minecraft style), and only the coordinates of the center of gravity of the cube are stored as coordinate values, which greatly reduces the data weight.
- Pursuit of scanning speed
┗Although it leads to the data reduction mentioned above, the processing speed is improved by reducing the amount of data.
Apply simpler and more accurate alignment logic in alignment algorithms
〇 Result
We created a prototype (ongoing) and were able to implement a series of functions. However, problems have also come into view, and satisfactory performance has not been obtained, especially in terms of processing speed. The results for the following viewpoints are as follows.
- Data volume reduction
┗The purpose of reducing the amount of data has been achieved because the amount of data is greatly reduced by the approach of representing shapes in cubes.
- Pursuit of scanning speed
┗Regarding processing speed, we were able to reduce the processing cost to some extent by simplifying the logic of the alignment algorithm, but sufficient performance was not achieved.
〇Consideration
Below are some of the issues we encountered during the prototyping process.
Improved processing speed
The following two points are key points for improving the processing speed, so we will consider them as future issues.
- Acceleration of registration algorithm (Registration algorithm is computationally intensive, so processing cost is high)
→ By reducing the point cloud data, the amount of calculation is reduced and the processing cost is reduced. Therefore, we apply a faster and more accurate alignment algorithm
- Extraction and counting of point clouds included in each grid of a virtual grid (1m x 1m x 1m cube divided into 20 sides) Since it is judged whether the point cloud is included, the processing cost is high.)
→Reduce the number of virtual grids and reduce processing costs by improving loop processing