Regard3D is a structure-from-motion program. That means, it can create 3D models from objects using a
series of photographs taken of this object from different viewpoints.
-
For each image, features (sometimes also called keypoints) are detected. Features are points in an object
that have a high probability to be found in different images of the same object, for example corners, edges
etc. Regard3D uses A-KAZE for this purpose.
-
For each feature, a mathematical descriptor is calculated. This descriptor has the characteristic that
descriptors of the same point in an object in different images (seen from different viewpoints) is similar.
Regard3D uses LIOP (Local Intensity Order Pattern) for this purpose.
-
The descriptors from different images are matched and geometrically filtered. The result of this step is a
collection of matches between each image pair.
-
Now "tracks" are calculated. For each feature that is part of a match in an image pair, it is searched also in
other images. A track is generated from features if these features satisfy some conditions, for example a
track is seen in at least 3 images.
-
The next step is the triangulation phase. All the matches of all the image pairs are used to calculate:
-
The 3D position and characteristic of the "camera", i.e. where each image was shot and the visual
characteristics of the camera
-
The 3D position of each "track" is calculated
-
The result of the triangulation phase is a sparse point cloud. In order to obtain a more dense point cloud
("densification"), several algorithms can be used.
-
The last step is called "Surface generation". The point clouds are used to generate a surface, either with
colored vertices or with a texture.