Started working on tutorial on surface reconstruction

This commit is contained in:
Simon Giraudot 2015-09-23 08:36:50 +02:00
parent 8d7ab98b4e
commit ed8c8ddd5c
8 changed files with 1551 additions and 0 deletions

View File

@ -0,0 +1,96 @@
/*!
\page tuto_reconstruction Reconstruction
\author Simon Giraudot
Surface reconstruction from point clouds is a wide research topic in
geometry processing. It can be achieved in many different ways
depending on the input properties and the output requirements. This
tutorials explains how the different algorithms of \cgal to perform
reconstruction in the most relevant way.
\section TutorialsReconstruction_algorithms Which algorithm should I use?
\cgal \cgalReleaseNumber offers three different algorithms for surface
reconstruction:
- \ref PkgSurfaceReconstructionFromPointSets
- \ref PkgAdvancingFrontSurfaceReconstruction
- \ref PkgScaleSpaceReconstruction3
\todo Tabular with input/output properties and corresponding method
\section TutorialsReconstruction_input Reading Input
The reconstruction algorithms on \cgal take a range of iterators on a
container as input and use property maps to access the points (and the
normals if they are needed). Points are typically stored in plain text
format (denoted as 'xyz' format), each point separated by a newline
character and each coordinate separated by a white space. \cgal
provides functions to read such a format:
- `read_xyz_points()`
- `read_xyz_points_and_normals()`
Point may also be stored in an 'off' container, for which we also
provide function:
- `read_off_points()`
- `read_off_points_and_normals()`
Using these functions is pretty straightforward, as can be seen on the
following example:
\code{.cpp}
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/IO/read_xyz_points.h>
#include <vector>
#include <fstream>
// types
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::Point_3 Point;
int main(int argc, char*argv[])
{
std::vector<Point> points;
char* filename = "my_file.xyz";
std::ifstream stream(filename);
if (!stream ||
!CGAL::read_xyz_points(stream, std::back_inserter(points)))
{
std::cerr << "Error: cannot read file " << filename << std::endl;
return -1;
}
std::cout << "Read " << points.size () << " point(s)" << std::endl;
return 0;
}
\endcode
\section TutorialsReconstruction_preprocessing Preprocessing
Because reconstruction algorithms have some specific requirements that
point clouds do not always meet, some preprocessing might be necessary
to get the best results.
\subsection TutorialsReconstruction_preprocessing_simplification Simplification
\subsection TutorialsReconstruction_preprocessing_smoothing Smoothing
\section TutorialsReconstruction_reconstruction Reconstruction
\section TutorialsReconstruction_postprocessing Postprocessing
\section TutorialsReconstruction_output Writing Output
*/

View File

@ -0,0 +1,7 @@
/*!
\page tutorials Tutorials
- \subpage tuto_reconstruction
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

View File

@ -54,6 +54,7 @@ For releases X.Y, with 3.1 <= X.Y <= 4.1 visit
\subpage general_intro
\subpage packages
\subpage dev_manual
\subpage tutorials
\htmlonly
</div>