Artec 3D Scanning SDK  2.0
Algorithms.h
Go to the documentation of this file.
1 /********************************************************************
2 *
3 * Project Artec 3D Scanning SDK
4 *
5 * Purpose: Algorithms creator declarations
6 *
7 * Copyright: Artec Group
8 *
9 ********************************************************************/
10 
11 #ifndef _ALGORITHMS_H_
12 #define _ALGORITHMS_H_
13 
15 #include <artec/sdk/base/Errors.h>
17 #include <artec/sdk/base/Point.h>
19 
20 namespace artec { namespace sdk { namespace base
21 {
22  class ICompositeMesh;
23  class IScan;
24  class ICompositeContainer;
25  class IModel;
26  class ICancellationToken;
27  class IProgressInfo;
28  struct AlgorithmWorkset;
29 } } }
30 
31 namespace artec { namespace sdk { namespace algorithms
32 {
33 using namespace artec::sdk::base::errors;
34 
35 class IAlgorithm;
36 
37 /// Enum for Poisson Fusion and Texturization algorithms.
39 {
40  /// Algorithm will use only frames with set texture key-frame attribute.
41  /// This type is used by default.
43 
44  /// Algorithm considers all frames that do not have empty textures.
46 };
47 
48 //////////////////////////////////////////////////////////////////////////
49 /// Parameters for Fast fusion algorithm (algorithm quickly creates a simple model)
51 {
52  /// Scanner type
54 
55  /// Mesh resolution (in millimeters) is a step of grid which is used to reconstruct a polygonal model.
56  /// Parameter defines the minimal space unit where the polygon of the model will be built.
57  /// Resolution for data from EVA should be no less than 0.5
58  /// Resolution for data from Spider should be no less than 0.1
59  /// Resolution for data from L2 should be no less than 0.5
60  float resolution;
61 
62  /// Radius(for Fast Fusion only) is a factor to define vicinity
63  /// that algorithm takes into consideration when adding each new minimal space unit.
64  int radius;
65 
66  /// If true, then calculate normals for created mesh
68 };
69 
70 ///Fusion type
72 {
73  PoissonFusionType_Sharp, ///< Sharp fusion
74  PoissonFusionType_Smooth, ///< Smooth fusion
75 
76  PoissonFusionType_ForceDword = 0x7fffffff ///< Force 32-bit size enum
77 };
78 
79 /// What kind of holes to fill
81 {
82  /// Automatically fills in all holes in the mesh
84 
85  /// All holes having radius no greater than the specified in "maxHoleRadius" value will be filled in;
87 
88  FillHolesType_ForceDword = 0x7fffffff ///< Force 32-bit size enum
89 };
90 /// Parameters for Sharp/Smooth fusion algorithms
92 {
93  /// Scanner type
95 
96  /// Fusion type
98 
99  /// Settle the algorithm to fill holes in the mesh being reconstructed (for PoissonFusion).
101 
102  /// Mesh resolution (in millimeters) is a step of grid which is used to reconstruct a polygonal model.
103  /// Parameter defines the minimal space unit where the polygon of the model will be built.
104  float resolution;
105 
106  /// Maximum hole radius in millimeters
108 
109  /// If it is true, then erase small embossments from surfaces on which targets are placed.
111 
112  /// Round type target - black circle diameter (in millimeters)
114 
115  /// Round type target - white circle diameter (in millimeters)
117 
118  /// If true, then calculate normals for created mesh
120 
121  /// Type of frames for algorithm to use.
123 };
124 
125 ///Serial registration type
127 {
128  SerialRegistrationType_Rough, ///< Register surfaces by geometry.
129  ///< Use this registration type only if no frames were registered during scanning.
130  ///< It is suited for any data types. It is fast, but less accurate.
131  SerialRegistrationType_RoughTextured, ///< Register surfaces by both texture and geometry (hybrid registration).
132  ///< Use this registration type only if no frames were registered during scanning.
133  ///< It is suited for all frames that have texture. It is fast, but less accurate.
134  SerialRegistrationType_Fine, ///< Register surfaces by geometry.
135  ///< Use this registration type for any data types.
136  SerialRegistrationType_FineTextured, ///< Register surfaces by both texture and geometry (hybrid registration).
137  ///< Use this registration type only if all frames have texture.
138 
139  SerialRegistrationType_ForceDword = 0x7fffffff ///< Force 32-bit size enum
140 };
141 
142 /// Parameters for Fine registration algorithm
144 {
145  /// Scanner type
147 
148  /// Serial registration type
150 };
151 
152 /// Parameters for Auto-alignment algorithm (Algorithm that assembles scans)
154 {
155  /// Scanner type
157 };
158 
159 
160 /// Global registration type
162 {
163  GlobalRegistrationType_Geometry, ///< Use this registration type for any data types
164  GlobalRegistrationType_GeometryAndTexture, ///< Use this registration type only if all frames have texture
165 
166  GlobalRegistrationType_ForceDword = 0x7fffffff ///< Force 32-bit size enum
167 };
168 /// Parameters for Global registration algorithm (algorithm optimizes frames within scans, launch it for a pre-aligned batch of scans or for a single scan)
170 {
171  /// Scanner type
173 
174  /// Global registration type
176 };
177 
178 /// Texturing algorithm type
180 {
181  TexturizeType_Advanced = 0, ///< Each vertex gets multiple coordinates for each of the adjacent triangles,
182  ///< final texture coordinates are continuous only for a given triangle area.
183 
184  TexturizeType_Atlas, ///< Unfold mesh to UV plane, then generate the texture image
185 
186  TexturizeType_KeepAtlas, ///< Keep UV coordinates and regenerate the texture image
187 
188  TexturizeType_VertexColorToAtlas, ///< Not implemented yet. Intended to texturize based on the vertex color data.
189 
190  TexturizeType_ForceDword = 0x7fffffff ///< Force 32-bit size enum
191 };
192 
193 /// Resolution of texture output file (in pixels)
195 {
196  TexturizeResolution_512x512 = 0, ///< 0.5K texture file resolution
197  TexturizeResolution_1024x1024, ///< 1K texture file resolution
198  TexturizeResolution_2048x2048, ///< 2K texture file resolution
199  TexturizeResolution_4096x4096, ///< 4K texture file resolution
200  TexturizeResolution_8192x8192, ///< 8K texture file resolution
201  TexturizeResolution_16384x16384, ///< 16K texture file resolution
202 
203  TexturizeResolution_ForceDword = 0x7fffffff ///< Force 32-bit size enum
204 };
205 
206 /// Parameters for Texturing algorithm
208 {
209  /// Scanner type
211 
212  /// Texturing type to use
214 
215  /// Resolution of texturing output (in pixels)
217 
218  /// Enable background segmentation for input texture frames
220 
221  /// Enable compensation of ambient light
223 
224  /// Set the limit for number of polygons for mesh unfolding:
225  /// 0 - disable simplification (unfold original mesh)
226  /// N - reduce number of polygons to N, then make unfolding and reproject atlas to the original mesh
228 
229  /// Interpolate colors for empty texture areas
231 
232  /// Correct texture brightness for Artec scanners
234 
235  /// Type of frames for algorithm to use
237 };
238 
239 /// What size of object to erase?
241 {
242  SmallObjectsFilterType_LeaveBiggestObject = 0, ///< Erase all objects except the one with the most polygons
243  SmallObjectsFilterType_FilterByThreshold = 1, ///< Erases all objects whose number of polygons is less than
244  ///< the amount specified in filterThreshold.
245 
246  SmallObjectsFilterType_ForceDword = 0x7fffffff ///< Force 32-bit size enum
247 };
248 
249 /**
250 * Parameters for Small-object filter.
251 * Algorithm erases small extraneous surfaces. Launch if after Fusion.
252 *
253 */
255 {
256  /// Scanner type
258 
259  /// Small-object filter type
261 
262  /// Threshold is the maximum number of triangles for FilterByThreshold.
264 };
265 
266 /// Simplification-algorithm target
268 {
269  SimplifyType_TriangleQuantity, ///< Reduce triangle count to the given number
270  SimplifyType_Accuracy, ///< Keep accuracy of the mesh being simplified
271  SimplifyType_Remesh, ///< Remove triangles whose edge lengths are less than the remeshEdgeThreshold value
272  SimplifyType_TriangleQuantityFast, ///< Quickly reduce triangle count to the given number (Fast mesh simplification)
273 
274  SimplifyType_ForceDword = 0x7fffffff ///< Force 32-bit size enum
275 };
276 
277 /// Simplification method. What exactly algorithm does to meet the target.
278 
280 {
281  SimplifyMetric_EdgeLength, ///< Ensure that the new edges are less than the specified length (error)
282  SimplifyMetric_EdgeLengthAndAngle, ///< Ensure that the new edges are less than the specified length (error)
283  ///< and angles between normals to the new neighboring faces are less than the specified value (angleThreshold)
284  SimplifyMetric_DistanceToSurface, ///< Ensure that the distance to the new faces are less than the specified value (error)
285  SimplifyMetric_DistanceToSurfaceIterative, ///< Ensure that the distance to the new faces are less than the specified value (error)
286 
287  SimplifyMetric_ForceDword = 0x7fffffff ///< Force 32-bit size enum
288 };
289 /// Parameters for Mesh simplification algorithm
291 {
292  /// Scanner type
294 
295  /// Simplification target: TriangleQuantity, Accuracy, Remesh, TriangleQuantityFast
297 
298  /// Simplification method: EdgeLength, DistanceToSurface etc. Not supported by Fast simplification.
300 
301  /// Triangle count after simplification
303 
304  /// Maintains boundary of the surface
306 
307  /// Maximum angle between neighboring normals (in degrees). Not supported by Fast simplification.
309 
310  /// Maximum edge length (in millimeters) after the Remesh operation. Not supported by Fast simplification.
312 
313  /// Maximum error or length (in millimeters). Not supported by Fast simplification.
314  float error;
315 };
316 /// Parameters for Fast mesh simplification algorithm
318 {
319  /// Scanner type
321 
322  /// Triangle number to target
324 
325  /// Maintains boundary of the surface.
327 
328  /// Simplification stops if either of the thresholding criteria below isn't satisfied.
330 
331  /// Limits maximum distance between the original and simplified meshes.
333 
334  /// Max error (in units^2).
336 
337  /// Limit the maximum normals deviation.
339 
340  /// Maximum angle between normals to the neighboring faces (in degrees).
342 
343  /// Limits edges length ratio.
345 
346  /// Maximum available ratio of the edges in triangle.
348 };
349 
350 /**
351 * Parameters for Loop closure algorithm designed
352 * to compensate for accumulated error during scanning.
353 * No need to utilize this algorithm. Starting from SDK ver. 2.0, you can skip it and run Global registration.
354 */
355 
357 {
358  /// Scanner type
360 };
361 
362 /**
363 * Parameters for Outlier removal algorithm designed
364 * to erases small extraneous surfaces.
365 * Use either this algorithm or the Small-object filter. Also watch the order.
366 */
368 {
369  /// Scanner type
371 
372  /// Standard deviation multiplier.
374 
375  /// Marching cube resolution (in millimeters).
376  float resolution;
377 };
378 
379 //////////////////////////////////////////////////////////////////////////
380 
381 extern "C"
382 {
383  /// Check whether the algorithms are available on this machine
384  ///
385  /// @retval true if algorithm creation is permitted
386  /// @retval false if algorithm creation is forbidden
389 
390  /// Initializes Fast Fusion algorithm descriptor with scanner related defaults
393 
394  /// Initializes Sharp/Smooth fusion algorithm descriptor with scanner related defaults
397 
398  /// Initialize Texturing algorithm descriptor with scanner related defaults
401 
402  /// Initializes Small-object filter descriptor with scanner related defaults
405 
406  /// Initializes Mesh simplification descriptor with scanner related defaults
409 
410  /// Initializes Fast mesh simplification descriptor with scanner related defaults
413 
414  /// Initializes Outliers removal descriptor with scanner related defaults
417 
418 
419  /// Creates Fast fusion algorithm
422 
423  /// Creates Sharp/Smooth fusion algorithm
426 
427  /// Creates Fine/Rough serial registration algorithm
429  createSerialRegistrationAlgorithm( IAlgorithm** serialRegistration, const SerialRegistrationSettings* desc );
430 
431  /// Creates Auto-align algorithm
433  createAutoalignAlgorithm( IAlgorithm** autoalign, const AutoAlignSettings* desc);
434 
435  /// Creates Global registration algorithm
437  createGlobalRegistrationAlgorithm( IAlgorithm** globalRegistration, const GlobalRegistrationSettings* desc );
438 
439  /// Creates texturing algorithm
442 
443  /// Creates Small-object filter
445  createSmallObjectsFilterAlgorithm( IAlgorithm** smallObjectsFilter, const SmallObjectsFilterSettings* desc );
446 
447  /// Creates Mesh simplification algorithm
449  createMeshSimplificationAlgorithm( IAlgorithm** meshSimplification, const MeshSimplificationSettings* desc );
450 
451  /// Creates Fast mesh simplification algorithm
454 
455  /// Creates Loop closure algorithm.
456  /// No need to utilize this algorithm. Starting from SDK ver. 2.0, you can skip it and run Global registration instead.
458  createLoopClosureAlgorithm( IAlgorithm** loopClosure, const LoopClosureSettings* desc );
459 
460  /// Creates Outlier removal algorithm
462  createOutliersRemovalAlgorithm( IAlgorithm** outliesRemoval, const OutliersRemovalSettings* desc );
463 }
464 
465 } } } // namespace artec::sdk::algorithms
466 
467 #endif // _ALGORITHMS_H_
SimplifyMetric simplifyMetrics
Simplification method: EdgeLength, DistanceToSurface etc. Not supported by Fast simplification.
Definition: Algorithms.h:299
ErrorCode AALGORITHMSDK_LINK_SPEC createMeshSimplificationAlgorithm(IAlgorithm **meshSimplification, const MeshSimplificationSettings *desc)
Creates Mesh simplification algorithm.
Keep accuracy of the mesh being simplified.
Definition: Algorithms.h:270
bool removeTargets
If it is true, then erase small embossments from surfaces on which targets are placed.
Definition: Algorithms.h:110
All holes having radius no greater than the specified in "maxHoleRadius" value will be filled in;...
Definition: Algorithms.h:86
int atlasUnfoldingPolygonLimit
Set the limit for number of polygons for mesh unfolding: 0 - disable simplification (unfold original ...
Definition: Algorithms.h:227
Parameters for Loop closure algorithm designed to compensate for accumulated error during scanning...
Definition: Algorithms.h:356
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:146
bool enableAngleThreshold
Limit the maximum normals deviation.
Definition: Algorithms.h:338
ErrorCode AALGORITHMSDK_LINK_SPEC createGlobalRegistrationAlgorithm(IAlgorithm **globalRegistration, const GlobalRegistrationSettings *desc)
Creates Global registration algorithm.
Quickly reduce triangle count to the given number (Fast mesh simplification)
Definition: Algorithms.h:272
Ensure that the new edges are less than the specified length (error) and angles between normals to th...
Definition: Algorithms.h:282
TexturizeType
Texturing algorithm type.
Definition: Algorithms.h:179
GlobalRegistrationType
Global registration type.
Definition: Algorithms.h:161
ErrorCode AALGORITHMSDK_LINK_SPEC createFastMeshSimplificationAlgorithm(IAlgorithm **meshSimplification, const FastMeshSimplificationSettings *desc)
Creates Fast mesh simplification algorithm.
ErrorCode AALGORITHMSDK_LINK_SPEC initializeFastFusionSettings(FastFusionSettings *desc, base::ScannerType scannerType)
Initializes Fast Fusion algorithm descriptor with scanner related defaults.
Use this registration type only if all frames have texture.
Definition: Algorithms.h:164
FillHolesType
What kind of holes to fill.
Definition: Algorithms.h:80
InputFilter inputFilterType
Type of frames for algorithm to use.
Definition: Algorithms.h:236
ErrorCode AALGORITHMSDK_LINK_SPEC initializePoissonFusionSettings(PoissonFusionSettings *desc, base::ScannerType scannerType)
Initializes Sharp/Smooth fusion algorithm descriptor with scanner related defaults.
SerialRegistrationType registrationType
Serial registration type.
Definition: Algorithms.h:149
bool keepBoundary
Maintains boundary of the surface.
Definition: Algorithms.h:305
SmallObjectsFilterType
What size of object to erase?
Definition: Algorithms.h:240
Parameters for Fast mesh simplification algorithm.
Definition: Algorithms.h:317
float resolution
Mesh resolution (in millimeters) is a step of grid which is used to reconstruct a polygonal model...
Definition: Algorithms.h:104
float angleThreshold
Maximum angle between neighboring normals (in degrees). Not supported by Fast simplification.
Definition: Algorithms.h:308
float targetOuterSize
Round type target - white circle diameter (in millimeters)
Definition: Algorithms.h:116
Ensure that the distance to the new faces are less than the specified value (error) ...
Definition: Algorithms.h:284
bool enableAmbientLightingCompensation
Enable compensation of ambient light.
Definition: Algorithms.h:222
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:94
Each vertex gets multiple coordinates for each of the adjacent triangles, final texture coordinates a...
Definition: Algorithms.h:181
ErrorCode AALGORITHMSDK_LINK_SPEC createOutliersRemovalAlgorithm(IAlgorithm **outliesRemoval, const OutliersRemovalSettings *desc)
Creates Outlier removal algorithm.
Parameters for Small-object filter.
Definition: Algorithms.h:254
bool generateNormals
If true, then calculate normals for created mesh.
Definition: Algorithms.h:67
PoissonFusionType
Fusion type.
Definition: Algorithms.h:71
float angleThreshold
Maximum angle between normals to the neighboring faces (in degrees).
Definition: Algorithms.h:341
Parameters for Auto-alignment algorithm (Algorithm that assembles scans)
Definition: Algorithms.h:153
float maxHoleRadius
Maximum hole radius in millimeters.
Definition: Algorithms.h:107
ErrorCode AALGORITHMSDK_LINK_SPEC createFastFusionAlgorithm(IAlgorithm **fusion, const FastFusionSettings *desc)
Creates Fast fusion algorithm.
Remove triangles whose edge lengths are less than the remeshEdgeThreshold value.
Definition: Algorithms.h:271
Reduce triangle count to the given number.
Definition: Algorithms.h:269
ErrorCode AALGORITHMSDK_LINK_SPEC initializeSmallObjectsFilterSettings(SmallObjectsFilterSettings *desc, base::ScannerType scannerType)
Initializes Small-object filter descriptor with scanner related defaults.
InputFilter
Enum for Poisson Fusion and Texturization algorithms.
Definition: Algorithms.h:38
SimplifyMetric
Simplification method. What exactly algorithm does to meet the target.
Definition: Algorithms.h:279
TexturizeType texturizeType
Texturing type to use.
Definition: Algorithms.h:213
ErrorCode AALGORITHMSDK_LINK_SPEC initializeFastMeshSimplificationSettings(FastMeshSimplificationSettings *desc, base::ScannerType scannerType)
Initializes Fast mesh simplification descriptor with scanner related defaults.
ErrorCode AALGORITHMSDK_LINK_SPEC createSerialRegistrationAlgorithm(IAlgorithm **serialRegistration, const SerialRegistrationSettings *desc)
Creates Fine/Rough serial registration algorithm.
float aspectRatioThreshold
Maximum available ratio of the edges in triangle.
Definition: Algorithms.h:347
ErrorCode AALGORITHMSDK_LINK_SPEC initializeTexturizationSettings(TexturizationSettings *desc, base::ScannerType scannerType)
Initialize Texturing algorithm descriptor with scanner related defaults.
Use this registration type for any data types.
Definition: Algorithms.h:163
Keep UV coordinates and regenerate the texture image.
Definition: Algorithms.h:186
float resolution
Mesh resolution (in millimeters) is a step of grid which is used to reconstruct a polygonal model...
Definition: Algorithms.h:60
bool enableAdditionalCriteria
Simplification stops if either of the thresholding criteria below isn't satisfied.
Definition: Algorithms.h:329
bool useTextureNormalization
Correct texture brightness for Artec scanners.
Definition: Algorithms.h:233
Ensure that the new edges are less than the specified length (error)
Definition: Algorithms.h:281
bool enableBackgroundSegmentation
Enable background segmentation for input texture frames.
Definition: Algorithms.h:219
ErrorCode AALGORITHMSDK_LINK_SPEC initializeMeshSimplificationSettings(MeshSimplificationSettings *desc, base::ScannerType scannerType, SimplifyType simplifyType)
Initializes Mesh simplification descriptor with scanner related defaults.
SerialRegistrationType
Serial registration type.
Definition: Algorithms.h:126
Algorithm will use only frames with set texture key-frame attribute.
Definition: Algorithms.h:42
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:172
Erases all objects whose number of polygons is less than the amount specified in filterThreshold.
Definition: Algorithms.h:243
SimplifyType
Simplification-algorithm target.
Definition: Algorithms.h:267
Register surfaces by both texture and geometry (hybrid registration).
Definition: Algorithms.h:131
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:370
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:359
ErrorCode AALGORITHMSDK_LINK_SPEC createPoissonFusionAlgorithm(IAlgorithm **fusion, const PoissonFusionSettings *desc)
Creates Sharp/Smooth fusion algorithm.
PoissonFusionType fusionType
Fusion type.
Definition: Algorithms.h:97
#define AALGORITHMSDK_LINK_SPEC
bool enableTextureInpainting
Interpolate colors for empty texture areas.
Definition: Algorithms.h:230
float error
Maximum error or length (in millimeters). Not supported by Fast simplification.
Definition: Algorithms.h:314
Parameters for Sharp/Smooth fusion algorithms.
Definition: Algorithms.h:91
InputFilter inputFilterType
Type of frames for algorithm to use.
Definition: Algorithms.h:122
int filterThreshold
Threshold is the maximum number of triangles for FilterByThreshold.
Definition: Algorithms.h:263
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:257
ErrorCode AALGORITHMSDK_LINK_SPEC createAutoalignAlgorithm(IAlgorithm **autoalign, const AutoAlignSettings *desc)
Creates Auto-align algorithm.
FillHolesType fillType
Settle the algorithm to fill holes in the mesh being reconstructed (for PoissonFusion).
Definition: Algorithms.h:100
Automatically fills in all holes in the mesh.
Definition: Algorithms.h:83
ErrorCode AALGORITHMSDK_LINK_SPEC createTexturizationAlgorithm(IAlgorithm **texturizer, const TexturizationSettings *desc)
Creates texturing algorithm.
float standardDeviationMultiplier
Standard deviation multiplier.
Definition: Algorithms.h:373
float resolution
Marching cube resolution (in millimeters).
Definition: Algorithms.h:376
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:210
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:293
Parameters for Texturing algorithm.
Definition: Algorithms.h:207
int radius
Radius(for Fast Fusion only) is a factor to define vicinity that algorithm takes into consideration w...
Definition: Algorithms.h:64
int triangleNumber
Triangle count after simplification.
Definition: Algorithms.h:302
Parameters for Outlier removal algorithm designed to erases small extraneous surfaces.
Definition: Algorithms.h:367
ErrorCode AALGORITHMSDK_LINK_SPEC createLoopClosureAlgorithm(IAlgorithm **loopClosure, const LoopClosureSettings *desc)
Creates Loop closure algorithm.
bool enableAspectRatioThreshold
Limits edges length ratio.
Definition: Algorithms.h:344
Parameters for Fine registration algorithm.
Definition: Algorithms.h:143
Base interface for algorithms.
Definition: IAlgorithm.h:23
SimplifyType simplifyType
Simplification target: TriangleQuantity, Accuracy, Remesh, TriangleQuantityFast.
Definition: Algorithms.h:296
float remeshEdgeThreshold
Maximum edge length (in millimeters) after the Remesh operation. Not supported by Fast simplification...
Definition: Algorithms.h:311
bool enableDistanceThreshold
Limits maximum distance between the original and simplified meshes.
Definition: Algorithms.h:332
bool AALGORITHMSDK_LINK_SPEC checkAlgorithmsPermission()
Check whether the algorithms are available on this machine.
Parameters for Fast fusion algorithm (algorithm quickly creates a simple model)
Definition: Algorithms.h:50
Not implemented yet. Intended to texturize based on the vertex color data.
Definition: Algorithms.h:188
Register surfaces by both texture and geometry (hybrid registration).
Definition: Algorithms.h:136
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:53
GlobalRegistrationType registrationType
Global registration type.
Definition: Algorithms.h:175
Erase all objects except the one with the most polygons.
Definition: Algorithms.h:242
ErrorCode AALGORITHMSDK_LINK_SPEC initializeOutliersRemovalSettings(OutliersRemovalSettings *desc, base::ScannerType scannerType)
Initializes Outliers removal descriptor with scanner related defaults.
base::ScannerType scannerType
Scanner type.
Definition: Algorithms.h:156
float targetInnerSize
Round type target - black circle diameter (in millimeters)
Definition: Algorithms.h:113
bool generateNormals
If true, then calculate normals for created mesh.
Definition: Algorithms.h:119
Parameters for Mesh simplification algorithm.
Definition: Algorithms.h:290
TexturizeResolution texturizeResolution
Resolution of texturing output (in pixels)
Definition: Algorithms.h:216
Parameters for Global registration algorithm (algorithm optimizes frames within scans, launch it for a pre-aligned batch of scans or for a single scan)
Definition: Algorithms.h:169
TexturizeResolution
Resolution of texture output file (in pixels)
Definition: Algorithms.h:194
Algorithm considers all frames that do not have empty textures.
Definition: Algorithms.h:45
SmallObjectsFilterType filterType
Small-object filter type.
Definition: Algorithms.h:260
Ensure that the distance to the new faces are less than the specified value (error) ...
Definition: Algorithms.h:285
bool keepBoundary
Maintains boundary of the surface.
Definition: Algorithms.h:326
ErrorCode AALGORITHMSDK_LINK_SPEC createSmallObjectsFilterAlgorithm(IAlgorithm **smallObjectsFilter, const SmallObjectsFilterSettings *desc)
Creates Small-object filter.
Unfold mesh to UV plane, then generate the texture image.
Definition: Algorithms.h:184