src/tools/lvr2_reconstruct/Options.hpp
Go to the documentation of this file.
1 
28  /*
29  * Options.h
30  *
31  * Created on: Nov 21, 2010
32  * Author: Thomas Wiemann
33  */
34 
35 #ifndef OPTIONS_H_
36 #define OPTIONS_H_
37 
38 #include <iostream>
39 #include <string>
40 #include <vector>
41 #include <boost/program_options.hpp>
42 #include <float.h>
43 
45 
46 using std::ostream;
47 using std::cout;
48 using std::endl;
49 using std::string;
50 using std::vector;
51 
52 namespace reconstruct
53 {
54 
59 class Options : public lvr2::BaseOption{
60 public:
61 
66  Options(int argc, char** argv);
67  virtual ~Options();
68 
72  float getVoxelsize()const;
73 
77  int getNumThreads() const;
78 
82  bool printUsage() const;
83 
87  bool filenameSet() const;
88 
94  bool saveFaceNormals() const;
95 
99  bool colorRegions() const;
100 
105  bool saveNormals() const;
106 
110  bool saveGrid() const;
111 
116  bool saveOriginalData() const;
117 
118 
122  bool optimizePlanes() const;
123 
128  bool savePointNormals() const;
129 
134  bool recalcNormals() const;
135 
139  bool useRansac() const;
140 
144  bool doTextureAnalysis() const;
145 
150  bool generateTextures() const;
151 
156  int getKi() const;
157 
162  int getKn() const;
163 
168  int getKd() const;
169 
173  bool retesselate() const;
174 
178  bool clusterPlanes() const;
179 
183  bool writeClassificationResult() const;
184 
188  string getInputFileName() const;
189 
193  string getOutputFileName() const;
194 
198  vector<string> getOutputFileNames() const;
199 
203  string getClassifier() const;
204 
208  string getScanPoseFile() const;
209 
215  int getIntersections() const;
216 
217 
221  int getPlaneIterations() const;
222 
226  string getPCM() const;
227 
231  string getDecomposition() const;
232 
233 
237  float getNormalThreshold() const;
238 
243  int getSmallRegionThreshold() const;
244 
248  int getMinPlaneSize() const;
249 
253  int getCleanContourIterations() const;
254 
259  int getDanglingArtifacts() const;
260 
264  int getFillHoles() const;
265 
269  float getTexelSize() const;
270 
274  float getSharpFeatureThreshold() const;
275 
279  float getSharpCornerThreshold() const;
280 
284  float getLineFusionThreshold() const;
285 
289  bool extrude() const;
290 
294  float getEdgeCollapseReductionRatio() const;
295 
296 
297  unsigned int getNumStatsColors() const;
298 
299  unsigned int getNumCCVColors() const;
300 
301  unsigned int getCoherenceThreshold() const;
302 
303  float getColorThreshold() const;
304 
305  float getStatsThreshold() const;
306 
307  float getFeatureThreshold() const;
308 
309  bool getUseCrossCorr() const;
310 
311  float getPatternThreshold() const;
312 
313  float* getStatsCoeffs()const;
314 
315  string getTexturePack() const;
316 
317  int getMinimumTransformationVotes() const;
318 
319  int getTexMinClusterSize() const;
320 
321  int getTexMaxClusterSize() const;
322 
323  bool vertexColorsFromPointcloud() const;
324 
325  bool useGPU() const;
326 
327  vector<float> getFlippoint() const;
328 
329  bool texturesFromImages() const;
330 
331  string getProjectDir() const;
332 
333 private:
334 
336  float m_voxelsize;
337 
339  int m_numThreads;
340 
341 
343  string m_faceNormalFile;
344 
346  int m_numberOfDefaults;
347 
349  int m_kd;
350 
352  int m_kn;
353 
355  int m_ki;
356 
358  int m_intersections;
359 
361  bool m_retesselate;
362 
364  bool m_generateTextures;
365 
368 
370  string m_pcm;
371 
373  int m_planeIterations;
374 
377 
380 
382  int m_rda;
383 
385  int m_fillHoles;
386 
388  int m_minPlaneSize;
389 
391 
393  float m_texelSize;
394 
396  float m_lineFusionThreshold;
397 
399  float m_sft;
400 
402  float m_sct;
403 
405  string m_classifier;
406 
409 
410 
412  string m_texturePack;
413 
415  string m_statsCoeffs;
416 
418  unsigned int m_numStatsColors;
419 
421  unsigned int m_numCCVColors;
422 
424  unsigned int m_coherenceThreshold;
425 
427  float m_colorThreshold;
428 
430  float m_statsThreshold;
431 
433  float m_featuresThreshold;
434 
436  bool m_useCrossCorr;
437 
439  float m_patternThreshold;
440 
443 
446 
448 
451 
452  // Flippoint for gpu normal calculation
453  vector<float> m_flippoint;
454 
455 };
456 
457 
459 inline ostream& operator<<(ostream& os, const Options &o)
460 {
461  o.printTransformation(os);
462 
463 
464  if(o.getIntersections() > 0)
465  {
466  cout << "##### Intersections \t\t: " << o.getIntersections() << endl;
467  }
468  else
469  {
470  cout << "##### Voxelsize \t\t: " << o.getVoxelsize() << endl;
471  }
472  cout << "##### Number of threads \t: " << o.getNumThreads() << endl;
473  cout << "##### Point cloud manager \t: " << o.getPCM() << endl;
474  if(o.useRansac())
475  {
476  cout << "##### Use RANSAC\t\t: YES" << endl;
477  }
478  else
479  {
480  cout << "##### Use RANSAC\t\t: NO" << endl;
481  }
482 
483  cout << "##### Voxel decomposition: \t: " << o.getDecomposition() << endl;
484  cout << "##### Classifier:\t\t: " << o.getClassifier() << endl;
485  if(o.writeClassificationResult())
486  {
487  cout << "##### Dump classification\t: YES" << endl;
488  }
489  else
490  {
491  cout << "##### Dump classification\t: NO" << endl;
492  }
493  cout << "##### k_n \t\t\t: " << o.getKn() << endl;
494  cout << "##### k_i \t\t\t: " << o.getKi() << endl;
495  cout << "##### k_d \t\t\t: " << o.getKd() << endl;
496  if(o.getDecomposition() == "SF")
497  {
498  cout << "##### Sharp feature threshold \t: " << o.getSharpFeatureThreshold() << endl;
499  cout << "##### Sharp corner threshold \t: " << o.getSharpCornerThreshold() << endl;
500  }
501  if(o.retesselate())
502  {
503  cout << "##### Retesselate \t\t: YES" << endl;
504  cout << "##### Line fusion threshold \t: " << o.getLineFusionThreshold() << endl;
505  }
506  if(o.saveFaceNormals())
507  {
508  cout << "##### Write Face Normals \t: YES" << endl;
509  }
510 
511  if(o.getFillHoles())
512  {
513  cout << "##### Fill holes \t\t: " << o.getFillHoles() << endl;
514  }
515  else
516  {
517  cout << "##### Fill holes \t\t: NO" << endl;
518  }
519 
520  if(o.getDanglingArtifacts())
521  {
522  cout << "##### Remove DAs \t\t: " << o.getDanglingArtifacts() << endl;
523  }
524  else
525  {
526  cout << "##### Remove DAs \t\t: NO" << endl;
527  }
528 
529  if(o.optimizePlanes())
530  {
531  cout << "##### Optimize Planes \t\t: YES" << endl;
532  cout << "##### Plane iterations\t\t: " << o.getPlaneIterations() << endl;
533  cout << "##### Normal threshold \t\t: " << o.getNormalThreshold() << endl;
534  cout << "##### Region threshold\t\t: " << o.getSmallRegionThreshold() << endl;
535  cout << "##### Region min size\t\t: " << o.getMinPlaneSize() << endl;
536  }
537  if(o.saveNormals())
538  {
539  cout << "##### Save normals \t\t: YES" << endl;
540  }
541  if(o.saveOriginalData())
542  {
543  cout << "##### Save input data \t\t: YES" << endl;
544  }
545 
546  if(o.recalcNormals())
547  {
548  cout << "##### Recalc normals \t\t: YES" << endl;
549  }
550  if(o.savePointNormals())
551  {
552  cout << "##### Save points normals \t: YES" << endl;
553  }
554  if(o.vertexColorsFromPointcloud())
555  {
556  cout << "##### Vertex colors: \t\t: YES" << endl;
557  }
558  if(o.generateTextures())
559  {
560  cout << "##### Generate Textures \t: YES" << endl;
561  cout << "##### Texel size \t\t: " << o.getTexelSize() << endl;
562  cout << "##### Texture Min#Cluster \t: " << o.getTexMinClusterSize() << endl;
563  cout << "##### Texture Max#Cluster \t: " << o.getTexMaxClusterSize() << endl;
564 
565  if(o.doTextureAnalysis())
566  {
567  cout << "##### Texture Analysis \t: ON" << endl;
568  }
569  else
570  {
571  cout << "##### Texture Analysis \t\t: OFF" << endl;
572  }
573  }
574  if(o.getEdgeCollapseReductionRatio() > 0.0)
575  {
576  cout << "##### Edge collapse reduction ratio\t: " << o.getEdgeCollapseReductionRatio() << endl;
577  }
578 
579  if(o.useGPU())
580  {
581  cout << "##### GPU normal estimation \t: ON" << endl;
582  std::vector<float> flipPoint = o.getFlippoint();
583  cout << "##### Flippoint \t\t: ("
584  << flipPoint[0] << ", "
585  << flipPoint[1] << ", "
586  << flipPoint[2] << ")" << endl;
587  }else{
588  cout << "##### GPU normal estimation \t: OFF" << endl;
589  }
590 
591 
592  return os;
593 }
594 
595 } // namespace reconstruct
596 
597 
598 #endif /* OPTIONS_H_ */
bool m_useCrossCorr
Whether to use texture matching based on cross correlation.
bool printUsage() const
Prints a usage message to stdout.
int m_numberOfDefaults
The number of used default values.
float m_edgeCollapseReductionRatio
Reduction ratio for mesh reduction via edge collapse.
bool colorRegions() const
Returns true of region coloring is enabled.
int m_intersections
The number of intersections used for reconstruction.
string getClassifier() const
Returns the name of the classifier used to color the mesh.
int getPlaneIterations() const
Returns to number plane optimization iterations.
float m_featuresThreshold
Threshold for texture matching based on features.
bool saveFaceNormals() const
Returns true if the face normals of the reconstructed mesh should be saved to an extra file ("face_no...
bool saveGrid() const
Returns true if the Marching Cubes grid should be save.
int getDanglingArtifacts() const
Returns the number of dangling artifacts to remove from a created mesh.
bool recalcNormals() const
If true, normals should be calculated even if they are already given in the input file...
int getKd() const
Returns the number of neighbors used for distance function evaluation.
int m_texMinClusterSize
Minimum number of textures of a cluster needed for generating textures.
bool saveNormals() const
Returns true if the interpolated normals should be saved in the putput file.
int m_kn
The number of neighbors for normal estimation.
float getSharpFeatureThreshold() const
Returns the sharp feature threshold when using sharp feature decomposition.
bool filenameSet() const
Returns true if an output filen name was set.
int m_ki
The number of neighbors for normal interpolation.
float m_sft
Sharp feature threshold when using sharp feature decomposition.
vector< string > getOutputFileNames() const
Returns the output file names.
bool retesselate() const
Return whether the mesh should be retesselated or not.
int getCleanContourIterations() const
Number of iterations for contour cleanup.
float m_colorThreshold
Threshold for texture matching based on colors.
float getTexelSize() const
Returns the texel size for texture resolution.
int m_planeIterations
Number of iterations for plane optimzation.
int getKn() const
Returns the number of neighbors used for initial normal estimation.
float m_sct
Sharp corner threshold when using sharp feature decomposition.
int getKi() const
Returns the number of neighbors for normal interpolation.
bool extrude() const
Whether to extend the grid. Enable by default.
unsigned int m_numCCVColors
Number of colors for texture matching based on color information.
ostream & operator<<(ostream &os, const Options &o)
Overlaoeded outpur operator.
int getNumThreads() const
Returns the number of used threads.
int getSmallRegionThreshold() const
Returns the threshold for the size of small region deletion after plane optimization.
float m_lineFusionThreshold
Threshold for line fusing when tesselating.
float getVoxelsize() const
Returns the given voxelsize.
string getDecomposition() const
Returns the name of the used point cloud handler.
unsigned int m_coherenceThreshold
Coherence threshold for texture matching based on color information.
float getSharpCornerThreshold() const
Returns the sharp corner threshold when using sharp feature decomposition.
bool m_retesselate
Whether or not the mesh should be retesselated while being finalized.
int getMinPlaneSize() const
Minimum value for plane optimzation.
int m_minPlaneSize
Threshold for plane optimization.
float getNormalThreshold() const
Returns the normal threshold for plane optimization.
string m_statsCoeffs
Coefficents file for texture matching based on statistics.
bool saveOriginalData() const
Returns true if the original points should be stored together with the reconstruction.
int getFillHoles() const
Returns the region threshold for hole filling.
unsigned int m_numStatsColors
Number of colors for texture statistics.
string m_faceNormalFile
The putput file name for face normals.
string m_classifier
Name of the classifier object to color the mesh.
int m_smallRegionThreshold
Threshold for small ragions.
string getScanPoseFile() const
Returns the name of the given file with scan poses used for normal flipping.
string getInputFileName() const
Returns the input file name.
bool writeClassificationResult() const
True if region clustering without plane optimization is required.
float getEdgeCollapseReductionRatio() const
Reduction ratio for mesh reduction via edge collapse.
float m_patternThreshold
Threshold for pattern extraction from textures.
Options(int argc, char **argv)
Ctor. Parses the command parameters given to the main function of the program.
int getIntersections() const
Returns the number of intersections. If the return value is positive it will be used for reconstructi...
bool m_writeClassificationResult
Whether or not the classifier shall dump meta data to a file &#39;clusters.clu&#39;.
bool generateTextures() const
If true, textures will be generated during finalization of mesh.
float m_planeNormalThreshold
Threshold for plane optimization.
bool doTextureAnalysis() const
True if texture analysis is enabled.
bool m_vertexColorsFromPointcloud
Use pointcloud colors to paint vertices.
bool savePointNormals() const
Indicates whether to save the used points together with the interpolated normals. ...
int m_minimumTransformationVotes
Minimum number of vote to consider a texture transformation as "correct".
bool useRansac() const
If true, RANSAC based normal estimation is used.
bool optimizePlanes() const
Returns true if cluster optimization is enabled.
int m_kd
The number of neighbors for distance function evaluation.
bool clusterPlanes() const
True if region clustering without plane optimization is required.
string m_pcm
The used point cloud manager.
float getLineFusionThreshold() const
Returns the fusion threshold for tesselation.
int m_rda
Number of dangling artifacts to remove.
bool m_generateTextures
Whether or not the mesh should be retesselated while being finalized.
float m_statsThreshold
Threshold for texture matching based on statistics.
string getPCM() const
Returns the name of the used point cloud handler.
string getOutputFileName() const
Returns the output file name.
char ** argv


lvr2
Author(s): Thomas Wiemann , Sebastian Pütz , Alexander Mock , Lars Kiesow , Lukas Kalbertodt , Tristan Igelbrink , Johan M. von Behren , Dominik Feldschnieders , Alexander Löhr
autogenerated on Mon Feb 28 2022 22:46:08