mirror of https://github.com/CGAL/cgal
Update files with new package name (Poisson_surface_reconstruction_3)
This commit is contained in:
parent
43f7f3cdff
commit
d9d94f082e
|
|
@ -842,7 +842,7 @@ EXAMPLE_RECURSIVE = YES
|
|||
IMAGE_PATH = ../Generator/doc/Generator/fig \
|
||||
../Straight_skeleton_2/doc/Straight_skeleton_2/fig \
|
||||
../Polynomial/doc/Polynomial/fig \
|
||||
../Surface_reconstruction_points_3/doc/Surface_reconstruction_points_3/fig \
|
||||
../Poisson_surface_reconstruction_3/doc/Poisson_surface_reconstruction_3/fig \
|
||||
../GraphicsView/doc/GraphicsView/fig \
|
||||
../Minkowski_sum_3/doc/Minkowski_sum_3/fig \
|
||||
../Triangulation_3/doc/Triangulation_3/fig \
|
||||
|
|
@ -1806,7 +1806,7 @@ SKIP_FUNCTION_MACROS = YES
|
|||
TAGFILES = ./tags/Generator.tag=../../CGAL.CGAL.Geometric-Object-Generators/html \
|
||||
./tags/Straight_skeleton_2.tag=../../CGAL.CGAL.2D-Straight-Skeleton-and-Polygon-Offsetting/html \
|
||||
./tags/Polynomial.tag=../../CGAL.CGAL.Polynomial/html \
|
||||
./tags/Surface_reconstruction_points_3.tag=../../CGAL.CGAL.Surface-Reconstruction-from-Point-Sets/html \
|
||||
./tags/Poisson_surface_reconstruction_3.tag=../../CGAL.CGAL.Poisson-Surface-Reconstruction/html \
|
||||
./tags/GraphicsView.tag=../../CGAL.CGAL.CGAL-and-the-Qt-Graphics-View-Framework/html \
|
||||
./tags/Minkowski_sum_3.tag=../../CGAL.CGAL.3D-Minkowski-Sum-of-Polyhedra/html \
|
||||
./tags/Triangulation_3.tag=../../CGAL.CGAL.3D-Triangulations/html \
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ IMAGE_PATH = ${CMAKE_SOURCE_DIR}/Documentation/doc/Documentation/fig \
|
|||
${CMAKE_SOURCE_DIR}/Subdivision_method_3/doc/Subdivision_method_3/fig \
|
||||
${CMAKE_SOURCE_DIR}/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig \
|
||||
${CMAKE_SOURCE_DIR}/Surface_mesh/doc/Surface_mesh/fig \
|
||||
${CMAKE_SOURCE_DIR}/Surface_reconstruction_points_3/doc/Surface_reconstruction_points_3/fig \
|
||||
${CMAKE_SOURCE_DIR}/Poisson_surface_reconstruction_3/doc/Poisson_surface_reconstruction_3/fig \
|
||||
${CMAKE_SOURCE_DIR}/Stream_lines_2/doc/Stream_lines_2/fig \
|
||||
${CMAKE_SOURCE_DIR}/Stream_support/doc/Stream_support/fig \
|
||||
${CMAKE_SOURCE_DIR}/Surface_modeling/doc/Surface_modeling/fig \
|
||||
|
|
|
|||
|
|
@ -501,7 +501,7 @@ to speed up operations of the Polynomial package, such as GCDs. It is recommende
|
|||
\sc{Eigen} is a `C++` template library for linear algebra. \sc{Eigen} supports all
|
||||
matrix sizes, various matrix decomposition methods and sparse linear solvers.
|
||||
|
||||
In \cgal, \sc{Eigen} provides sparse linear solvers in the \ref PkgSurfaceReconstructionFromPointSets
|
||||
In \cgal, \sc{Eigen} provides sparse linear solvers in the \ref PkgPoissonSurfaceReconstruction
|
||||
and the \ref PkgSurfaceParameterization packages.
|
||||
|
||||
In addition, \sc{Eigen} also provides singular value decomposition for the \ref PkgJet_fitting_3
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ Voronoi_diagram_2
|
|||
Surface_mesh_simplification
|
||||
Subdivision_method_3
|
||||
Surface_mesh_parameterization
|
||||
Surface_reconstruction_points_3
|
||||
Poisson_surface_reconstruction_3
|
||||
Surface_mesh_segmentation
|
||||
Stream_lines_2
|
||||
Stream_support
|
||||
|
|
|
|||
|
|
@ -93,12 +93,15 @@ h1 {
|
|||
|
||||
\package_listing{Mesh_2}
|
||||
\package_listing{Surface_mesher}
|
||||
\package_listing{Surface_reconstruction_points_3}
|
||||
\package_listing{Scale_space_reconstruction_3}
|
||||
\package_listing{Advancing_front_surface_reconstruction}
|
||||
\package_listing{Skin_surface_3}
|
||||
\package_listing{Mesh_3}
|
||||
|
||||
\section PartReconstruction Surface Reconstruction
|
||||
|
||||
\package_listing{Poisson_surface_reconstruction_3}
|
||||
\package_listing{Scale_space_reconstruction_3}
|
||||
\package_listing{Advancing_front_surface_reconstruction}
|
||||
|
||||
\section PartGeometryProcessing Geometry Processing
|
||||
|
||||
\package_listing{Polygon_mesh_processing}
|
||||
|
|
|
|||
|
|
@ -1965,7 +1965,7 @@
|
|||
- \ref CGAL::Surface_mesh_simplification::LindstromTurk_cost `cgal_manual/Surface_mesh_simplification_ref/FunctionObjectClass_Surface_mesh_simplification--LindstromTurk_cost.html`
|
||||
- \ref CGAL::Surface_mesh_simplification::LindstromTurk_placement `cgal_manual/Surface_mesh_simplification_ref/FunctionObjectClass_Surface_mesh_simplification--LindstromTurk_placement.html`
|
||||
- \ref CGAL::Surface_mesh_simplification::Midpoint_placement `cgal_manual/Surface_mesh_simplification_ref/FunctionObjectClass_Surface_mesh_simplification--Midpoint_placement.html`
|
||||
- \ref CGAL::Poisson_reconstruction_function `cgal_manual/Surface_reconstruction_points_3_ref/Class_Poisson_reconstruction_function.html`
|
||||
- \ref CGAL::Poisson_reconstruction_function `cgal_manual/Poisson_surface_reconstruction_3_ref/Class_Poisson_reconstruction_function.html`
|
||||
- \ref CGAL::compute_intersection_points() `cgal_manual/Sweep_line_2_ref/Function_compute_intersection_points.html`
|
||||
- \ref CGAL::compute_subcurves() `cgal_manual/Sweep_line_2_ref/Function_compute_subcurves.html`
|
||||
- \ref CGAL::do_curves_intersect() `cgal_manual/Sweep_line_2_ref/Function_do_curves_intersect.html`
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ points or points with normals (alignment is not covered in \cgal);
|
|||
-# Smoothing to reduce noise in the input data;
|
||||
-# Normal estimation and orientation when the normals are not already provided
|
||||
by the acquisition device; and
|
||||
-# Surface reconstruction. Chapter \ref Chapter_Surface_Reconstruction_from_Point_Sets "Surface Reconstruction from Point Sets"
|
||||
-# Surface reconstruction. Chapter \ref Chapter_Poisson_Surface_Reconstruction "Poisson Surface Reconstruction"
|
||||
deals with surface reconstruction from point sets with normal attributes.
|
||||
|
||||
\cgalFigureBegin{Point_set_processing_3figpipeline,pipeline.jpg}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ STL_Extension
|
|||
Algebraic_foundations
|
||||
Circulator
|
||||
Stream_support
|
||||
Surface_reconstruction_points_3
|
||||
Poisson_surface_reconstruction_3
|
||||
Property_map
|
||||
Bounding_volumes
|
||||
Principal_component_analysis
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ Property maps in the Boost manuals: <A HREF="http://www.boost.org/libs/property_
|
|||
Some algorithms in \cgal take as input parameters iterator ranges and property maps to access information attached to elements of the sequence.
|
||||
|
||||
For example, the algorithms of chapters \ref Chapter_Point_Set_Processing "Point Set Processing" and
|
||||
\ref Chapter_Surface_Reconstruction_from_Point_Sets "Surface Reconstruction from Point Sets"
|
||||
\ref Chapter_Poisson_Surface_Reconstruction "Poisson Surface Reconstruction"
|
||||
take as input parameters iterator ranges and property
|
||||
maps to access each point's position and normal. Position and normal
|
||||
might be represented in various ways, e.g., as a class derived from
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@ Algebraic_foundations
|
|||
Circulator
|
||||
Stream_support
|
||||
Point_set_processing_3
|
||||
Surface_reconstruction_points_3
|
||||
Poisson_surface_reconstruction_3
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
@INCLUDE = ${CGAL_DOC_PACKAGE_DEFAULTS}
|
||||
|
||||
PROJECT_NAME = "CGAL ${CGAL_CREATED_VERSION_NUM} - Surface Reconstruction from Point Sets"
|
||||
PROJECT_NAME = "CGAL ${CGAL_CREATED_VERSION_NUM} - Poisson Surface Reconstruction"
|
||||
|
||||
INPUT = ${CMAKE_SOURCE_DIR}/Surface_reconstruction_points_3/doc/Surface_reconstruction_points_3/ \
|
||||
${CMAKE_SOURCE_DIR}/Surface_reconstruction_points_3/include
|
||||
INPUT = ${CMAKE_SOURCE_DIR}/Poisson_surface_reconstruction_3/doc/Poisson_surface_reconstruction_3/ \
|
||||
${CMAKE_SOURCE_DIR}/Poisson_surface_reconstruction_3/include
|
||||
EXTRACT_ALL = false
|
||||
HIDE_UNDOC_CLASSES = true
|
||||
WARN_IF_UNDOCUMENTED = false
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
/// \defgroup PkgSurfaceReconstructionFromPointSets Surface Reconstruction from Point Sets Reference
|
||||
/// \defgroup PkgPoissonSurfaceReconstruction Poisson Surface Reconstruction Reference
|
||||
/*!
|
||||
\addtogroup PkgSurfaceReconstructionFromPointSets
|
||||
\cgalPkgDescriptionBegin{Surface Reconstruction from Point Sets,PkgSurfaceReconstructionFromPointSetsSummary}
|
||||
\addtogroup PkgPoissonSurfaceReconstruction
|
||||
\cgalPkgDescriptionBegin{Poisson Surface Reconstruction,PkgPoissonSurfaceReconstructionSummary}
|
||||
\cgalPkgPicture{surface_reconstruction_points_detail.png}
|
||||
\cgalPkgSummaryBegin
|
||||
\cgalPkgAuthors{Pierre Alliez, Laurent Saboret, Gaël Guennebaud}
|
||||
\cgalPkgDesc{This package implements a surface reconstruction method: Poisson Surface Reconstruction. It takes as input a set of points with oriented normals and computes an implicit function. The \cgal surface mesh generator can then be used to extract an iso-surface from this function. }
|
||||
\cgalPkgManuals{Chapter_Surface_Reconstruction_from_Point_Sets,PkgSurfaceReconstructionFromPointSets}
|
||||
\cgalPkgManuals{Chapter_Poisson_Surface_Reconstruction,PkgPoissonSurfaceReconstruction}
|
||||
\cgalPkgSummaryEnd
|
||||
\cgalPkgShortInfoBegin
|
||||
\cgalPkgSince{3.5}
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ namespace CGAL {
|
|||
/*!
|
||||
|
||||
\mainpage User Manual
|
||||
\anchor Chapter_Surface_Reconstruction_from_Point_Sets
|
||||
\anchor Chapter_Poisson_Surface_Reconstruction
|
||||
\cgalAutoToc
|
||||
|
||||
\authors Pierre Alliez, Laurent Saboret, Gaël Guennebaud
|
||||
|
||||
\section Surface_reconstruction_points_3Introduction Introduction
|
||||
\section Poisson_surface_reconstruction_3Introduction Introduction
|
||||
|
||||
This \cgal component implements a surface reconstruction method which
|
||||
takes as input point sets with oriented normals and computes an
|
||||
|
|
@ -17,7 +17,7 @@ an isosurface of this function with the \cgal Surface Mesh Generator
|
|||
\cgalCite{cgal:ry-gsddrm-06} or potentially with any other surface
|
||||
contouring algorithm.
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figintroduction,introduction.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figintroduction,introduction.jpg}
|
||||
Poisson surface reconstruction.\n
|
||||
Left: 17K points sampled on the statue of an elephant with a Minolta laser scanner. Right: reconstructed surface mesh.
|
||||
\cgalFigureEnd
|
||||
|
|
@ -28,7 +28,7 @@ function of the inferred solid (Poisson Surface Reconstruction -
|
|||
referred to as Poisson). Poisson is a two steps process: it requires
|
||||
solving for the implicit function before function evaluation.
|
||||
|
||||
\section Surface_reconstruction_points_3Common Common Reconstruction Pipeline
|
||||
\section Poisson_surface_reconstruction_3Common Common Reconstruction Pipeline
|
||||
|
||||
Surface reconstruction from point sets is often a sequential process
|
||||
with the following steps: 1) Scanning and scan alignment produce a set
|
||||
|
|
@ -45,11 +45,11 @@ describes algorithms to pre-process the point set before
|
|||
reconstruction with functions devoted to the simplification, outlier
|
||||
removal, smoothing, normal estimation and normal orientation.
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figpipeline,pipeline.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figpipeline,pipeline.jpg}
|
||||
Common surface reconstruction pipeline.
|
||||
\cgalFigureEnd
|
||||
|
||||
\section Surface_reconstruction_points_3Poisson Poisson
|
||||
\section Poisson_surface_reconstruction_3Poisson Poisson
|
||||
|
||||
Given a set of 3D points with oriented normals (denoted oriented
|
||||
points in the sequel) sampled on the boundary of a 3D solid, the
|
||||
|
|
@ -74,20 +74,20 @@ the triangulation using a sparse linear solver. Eventually, the \cgal
|
|||
surface mesh generator extracts an isosurface with function value set
|
||||
by default to be the median value of \f$ f\f$ at all input points.
|
||||
|
||||
\subsection Surface_reconstruction_points_3Interface Interface
|
||||
\subsection Poisson_surface_reconstruction_3Interface Interface
|
||||
|
||||
The class template declaration is `template<class Gt> class Poisson_reconstruction_function` wher
|
||||
`Gt` is a geometric traits class.
|
||||
|
||||
For details see: `Poisson_reconstruction_function<GeomTraits>`
|
||||
|
||||
\subsection Surface_reconstruction_points_3Example Example
|
||||
\subsection Poisson_surface_reconstruction_3Example Example
|
||||
|
||||
The following example reads a point set, creates a Poisson implicit function and reconstructs a surface.
|
||||
|
||||
\cgalExample{Surface_reconstruction_points_3/poisson_reconstruction_example.cpp}
|
||||
\cgalExample{Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp}
|
||||
|
||||
\section Surface_reconstruction_points_3Contouring Contouring
|
||||
\section Poisson_surface_reconstruction_3Contouring Contouring
|
||||
|
||||
|
||||
The computed implicit functions can be iso-contoured to reconstruct a
|
||||
|
|
@ -101,7 +101,7 @@ The parameter `Tag` affects the behavior of `make_surface_mesh()`:
|
|||
- `Manifold_with_boundary_tag`: the output mesh is guaranteed to be manifold and may have boundaries.
|
||||
- `Non_manifold_tag`: the output mesh has no guarantee and hence is outputted as a polygon soup.
|
||||
|
||||
\section Surface_reconstruction_points_3Output Output
|
||||
\section Poisson_surface_reconstruction_3Output Output
|
||||
|
||||
The surface reconstructed by `make_surface_mesh()` is required to be a
|
||||
model of the concept `SurfaceMeshComplex_2InTriangulation_3`, a data
|
||||
|
|
@ -116,7 +116,7 @@ and to convert it to a polyhedron (when it is manifold):
|
|||
- `output_surface_facets_to_off()`
|
||||
- `output_surface_facets_to_polyhedron()`
|
||||
|
||||
See \ref Surface_reconstruction_points_3/poisson_reconstruction_example.cpp "poisson_reconstruction_example.cpp" example above.
|
||||
See \ref Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp "poisson_reconstruction_example.cpp" example above.
|
||||
|
||||
\section surface_reconstruction_section_case_studies Case Studies
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ user with some hints about the ideal sampling and contouring
|
|||
conditions, and depicts some failure cases when these conditions are
|
||||
not matched.
|
||||
|
||||
\subsection Surface_reconstruction_points_3IdealConditions Ideal Conditions
|
||||
\subsection Poisson_surface_reconstruction_3IdealConditions Ideal Conditions
|
||||
|
||||
The user must keep in mind that the Poisson surface reconstruction
|
||||
algorithm comprises two phases (computing the implicit function from
|
||||
|
|
@ -135,21 +135,21 @@ the input point set and contouring an iso-surface of this
|
|||
function). Both require some care in terms of sampling conditions and
|
||||
parameter tuning.
|
||||
|
||||
\subsection Surface_reconstruction_points_3PointSet Point Set
|
||||
\subsection Poisson_surface_reconstruction_3PointSet Point Set
|
||||
|
||||
Ideally the current implementation of the Poisson surface
|
||||
reconstruction method expects a dense 3D oriented point set (typically
|
||||
matching the epsilon-sampling condition \cgalCite{cgal:bo-pgsms-05}) and
|
||||
sampled over a closed, smooth surface. Oriented herein means that all
|
||||
3D points must come with consistently oriented normals to the inferred
|
||||
surface. \cgalFigureRef{Surface_reconstruction_points_3figbimba} and \cgalFigureRef{Surface_reconstruction_points_3figeros}
|
||||
surface. \cgalFigureRef{Poisson_surface_reconstruction_3figbimba} and \cgalFigureRef{Poisson_surface_reconstruction_3figeros}
|
||||
illustrate cases where these ideal conditions are met.
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figbimba,bimba.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figbimba,bimba.jpg}
|
||||
Poisson reconstruction. Left: 120K points sampled on a statue (Minolta laser scanner). Right: reconstructed surface mesh.
|
||||
\cgalFigureEnd
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figeros,eros.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figeros,eros.jpg}
|
||||
Left: 120K points sampled on a statue (Minolta laser scanner). Right: reconstructed surface mesh.
|
||||
\cgalFigureEnd
|
||||
|
||||
|
|
@ -157,17 +157,17 @@ The algorithm is fairly robust to anisotropic sampling and to
|
|||
noise. It is also robust to missing data through filling the
|
||||
corresponding holes as the algorithm is designed to reconstruct the
|
||||
indicator function of an inferred solid (see
|
||||
\cgalFigureRef{Surface_reconstruction_points_3figholes_good}).
|
||||
\cgalFigureRef{Poisson_surface_reconstruction_3figholes_good}).
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figholes_good,holes_good.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figholes_good,holes_good.jpg}
|
||||
Top left: 65K points sampled on a hand (Kreon laser scanner). Bottom left: the point set is highly anisotropic due to the scanning technology. Right: reconstructed surface mesh and closeup. The holes are properly closed.
|
||||
\cgalFigureEnd
|
||||
|
||||
The algorithm is in general not robust to outliers, although a few
|
||||
outliers do not always create a failure, see
|
||||
\cgalFigureRef{Surface_reconstruction_points_3figoutliers}.
|
||||
\cgalFigureRef{Poisson_surface_reconstruction_3figoutliers}.
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figoutliers,outliers.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figoutliers,outliers.jpg}
|
||||
Left: 70K points sampled on an elephant with few outliers emphasized with disks. Right: reconstructed surface mesh.
|
||||
\cgalFigureEnd
|
||||
|
||||
|
|
@ -181,7 +181,7 @@ connected components care should be taken to orient the normals of
|
|||
each component in alternation (inward/outward) so that the final
|
||||
contouring stage picks a proper contouring value.
|
||||
|
||||
\subsection Surface_reconstruction_points_3ContouringP Contouring Parameters
|
||||
\subsection Poisson_surface_reconstruction_3ContouringP Contouring Parameters
|
||||
|
||||
Our implementation of the Poisson surface reconstruction algorithm
|
||||
computes an implicit function represented as a piecewise linear
|
||||
|
|
@ -193,7 +193,7 @@ and hence may contain sharp creases. As the contouring algorithm
|
|||
sharp creases may create spurious clusters of vertices in the final
|
||||
reconstructed surface mesh when setting a small mesh sizing or surface
|
||||
approximation error parameter (see
|
||||
\cgalFigureRef{Surface_reconstruction_points_3figcontouring_bad}).
|
||||
\cgalFigureRef{Poisson_surface_reconstruction_3figcontouring_bad}).
|
||||
|
||||
One way to avoid these spurious clusters consists of adjusting the
|
||||
mesh sizing and surface approximation parameters large enough compared
|
||||
|
|
@ -205,18 +205,18 @@ contouring parameters:
|
|||
- Max triangle radius: at least 100 times the average spacing.
|
||||
- Approximation distance: at least 0.25 times the average spacing.
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figcontouring_bad,contouring_bad.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figcontouring_bad,contouring_bad.jpg}
|
||||
Left: surface reconstructed with approximation distance = 0.25 * average spacing. Right: surface reconstructed with approximation distance = 0.15 * average spacing. Notice the spurious cluster on the chick.
|
||||
\cgalFigureEnd
|
||||
|
||||
\subsection Surface_reconstruction_points_3DegradedConditions Degraded Conditions
|
||||
\subsection Poisson_surface_reconstruction_3DegradedConditions Degraded Conditions
|
||||
|
||||
The conditions listed above are rather restrictive and in practice not
|
||||
all of them are met in the applications. We now illustrates the
|
||||
behavior of the algorithm when the conditions are not met in terms of
|
||||
sampling, wrongly oriented normals, noise and sharp creases.
|
||||
|
||||
\subsection Surface_reconstruction_points_3SparseSampling Sparse Sampling
|
||||
\subsection Poisson_surface_reconstruction_3SparseSampling Sparse Sampling
|
||||
|
||||
The reconstruction algorithm expects a sufficiently dense point
|
||||
set. Although there is no formal proof of correctness of the algorithm
|
||||
|
|
@ -227,22 +227,22 @@ feature size (the distance to the medial axis, which captures
|
|||
altogether curvature, thickness and separation). When this condition
|
||||
is not met the reconstruction does not reconstruct the thin
|
||||
undersampled features (see
|
||||
\cgalFigureRef{Surface_reconstruction_points_3figsampling}).
|
||||
\cgalFigureRef{Poisson_surface_reconstruction_3figsampling}).
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figsampling,sampling.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figsampling,sampling.jpg}
|
||||
Left: 50K points sampled on the Neptune trident. The reconstruction (not shown) is successful in this case. Right: point set simplified to 1K points then reconstructed (all input points are depicted with normals). The thin feature is not reconstructed.
|
||||
\cgalFigureEnd
|
||||
|
||||
\subsection Surface_reconstruction_points_3LargeHoles Large Holes
|
||||
\subsection Poisson_surface_reconstruction_3LargeHoles Large Holes
|
||||
|
||||
The reconstruction is devised to solve for an implicit function which
|
||||
is an approximate indicator function of an inferred solid. For this
|
||||
reason the contouring algorithm always extracts a closed surface mesh
|
||||
and hence is able to fill the small holes where data are missing due,
|
||||
e.g., to occlusions during acquisition (see
|
||||
\cgalFigureRef{Surface_reconstruction_points_3figholes_bad}).
|
||||
\cgalFigureRef{Poisson_surface_reconstruction_3figholes_bad}).
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figholes_bad,holes_bad.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figholes_bad,holes_bad.jpg}
|
||||
Left: 65K points sampled on a hand with no data captured at the wrist base. Right: reconstructed surface mesh. The surface is properly closed on the fingers and also closed at the wrist but in a less plausible manner.
|
||||
\cgalFigureEnd
|
||||
|
||||
|
|
@ -255,11 +255,11 @@ This can be avoided by a two pass approach. The first pass for a subset of the p
|
|||
serves to get an approximation of the surface at the holes. This surface then serves to
|
||||
compute a smoother 3D Delaunay triangulation for the second pass with the full set of points.
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3-fig-two_passes,two-passes.png}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3-fig-two_passes,two-passes.png}
|
||||
Left: The wrist. Middle: one pass. Right: two passes.
|
||||
\cgalFigureEnd
|
||||
|
||||
\subsection Surface_reconstruction_points_3WronglyOriented Wrongly Oriented Normals
|
||||
\subsection Poisson_surface_reconstruction_3WronglyOriented Wrongly Oriented Normals
|
||||
|
||||
The Poisson surface reconstruction approaches solves for an implicit
|
||||
function whose gradient best matches a set of input normals. Because
|
||||
|
|
@ -267,16 +267,16 @@ it solves this problem in the least squares sense, it is robust to few
|
|||
isolated wrongly oriented (flipped) normals. Nevertheless a cluster of
|
||||
wrongly oriented normals leads to an incorrect implicit function and
|
||||
hence to spurious geometric or even topological distortion (see
|
||||
\cgalFigureRef{Surface_reconstruction_points_3figflipped_normals}).
|
||||
\cgalFigureRef{Poisson_surface_reconstruction_3figflipped_normals}).
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figflipped_normals,flipped_normals.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figflipped_normals,flipped_normals.jpg}
|
||||
Left: points sampled on a sphere with a cluster of wrongly oriented normals. Right: reconstructed surface mesh with a spurious bump.
|
||||
\cgalFigureEnd
|
||||
|
||||
\subsection Surface_reconstruction_points_3NoiseandOutliers Noise and Outliers
|
||||
\subsection Poisson_surface_reconstruction_3NoiseandOutliers Noise and Outliers
|
||||
|
||||
A large amount of noise inevitably impacts on the reconstruction (see
|
||||
\cgalFigureRef{Surface_reconstruction_points_3fignoise}, top) and the
|
||||
\cgalFigureRef{Poisson_surface_reconstruction_3fignoise}, top) and the
|
||||
current implementation does not provide any mean to trade data fitting
|
||||
for smoothness. Nevertheless if the signal-to-noise ratio is
|
||||
sufficiently high and/or the surface approximation and sizing
|
||||
|
|
@ -285,9 +285,9 @@ the noise level the output surface mesh will appear smooth (not
|
|||
shown). If the user wants to produce a smooth and detailed output
|
||||
surface mesh, we recommend to apply smoothing through
|
||||
`jet_smooth_point_set()` (see
|
||||
\cgalFigureRef{Surface_reconstruction_points_3fignoise}, bottom).
|
||||
\cgalFigureRef{Poisson_surface_reconstruction_3fignoise}, bottom).
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3fignoise,noise.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3fignoise,noise.jpg}
|
||||
Top-left: points sampled on a sphere and corrupted with a lot of noise. Top-right: reconstructed surface mesh. Bottom-left: smoothed point set. Bottom-right: reconstructed surface mesh.
|
||||
\cgalFigureEnd
|
||||
|
||||
|
|
@ -296,13 +296,13 @@ into spurious small connected components and massive distortion near
|
|||
the inferred surface. In this case the outliers must be removed
|
||||
through `remove_outliers()`.
|
||||
|
||||
\subsection Surface_reconstruction_points_3SharpCreases Sharp Creases
|
||||
\subsection Poisson_surface_reconstruction_3SharpCreases Sharp Creases
|
||||
|
||||
The current reconstruction algorithm is not able to recover the sharp
|
||||
creases and corners present in the inferred surface. This translates
|
||||
into smoothed sharp creases.
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3figsharp_features,sharp_features.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3figsharp_features,sharp_features.jpg}
|
||||
Left: 5K points sampled on a mechanical piece with sharp features (creases, darts and corners). Right: reconstructed surface mesh with smoothed creases.
|
||||
\cgalFigureEnd
|
||||
|
||||
|
|
@ -318,7 +318,7 @@ with the 03 option which maximizes speed. All measurements were done using the
|
|||
\subsection SurfReconstPerfPIF Poisson Implicit Function
|
||||
|
||||
The point set chosen for benchmarking the Poisson implicit function is the Bimba con Nastrino point set
|
||||
(1.6 million points) depicted by \cgalFigureRef{Surface_reconstruction_points_3-fig-contouring_bench}.
|
||||
(1.6 million points) depicted by \cgalFigureRef{Poisson_surface_reconstruction_3-fig-contouring_bench}.
|
||||
We measure the Poisson implicit function computation (i.e., the call to
|
||||
`Poisson_reconstruction_function::compute_implicit_function()` denoted by Poisson solve hereafter)
|
||||
for this point set as well as for simplified versions obtained through random simplification.
|
||||
|
|
@ -427,7 +427,7 @@ Reconstruction error (mm)
|
|||
</TABLE>
|
||||
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3-fig-contouring_bench,contouring_bench.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3-fig-contouring_bench,contouring_bench.jpg}
|
||||
Contouring duration (in s) and reconstruction error (mm)
|
||||
against several approximation distance parameters
|
||||
for the Bimba con Nastrino point set simplified to 100k points.
|
||||
|
|
@ -538,7 +538,7 @@ Reconstruction error (mm)
|
|||
</TABLE>
|
||||
|
||||
|
||||
\cgalFigureBegin{Surface_reconstruction_points_3-fig-simplification_bench,simplification_bench.jpg}
|
||||
\cgalFigureBegin{Poisson_surface_reconstruction_3-fig-simplification_bench,simplification_bench.jpg}
|
||||
Reconstruction error (mm) against number of points
|
||||
for the Bimba con Nastrino point set with 1.6M points
|
||||
as well as for simplified versions.
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
/// \example Surface_reconstruction_points_3/poisson_reconstruction_example.cpp
|
||||
/// \example Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# This is the CMake script for compiling this folder.
|
||||
|
||||
project( Surface_reconstruction_points_3_example )
|
||||
project( Poisson_surface_reconstruction_3_example )
|
||||
|
||||
cmake_minimum_required(VERSION 2.8.11)
|
||||
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ struct Special_wrapper_of_two_functions_keep_pointers {
|
|||
|
||||
|
||||
/*!
|
||||
\ingroup PkgSurfaceReconstructionFromPointSets
|
||||
\ingroup PkgPoissonSurfaceReconstruction
|
||||
|
||||
\brief Implementation of the Poisson Surface Reconstruction method.
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
/// \cond SKIP_IN_MANUAL
|
||||
|
||||
/// @file surface_reconstruction_points_assertions.h
|
||||
/// Define checking macros for the Surface_reconstruction_points_3 package
|
||||
/// Define checking macros for the Poisson_surface_reconstruction_3 package
|
||||
|
||||
// Note that this header file is intentionnaly not protected with a
|
||||
// macro (as <cassert>). Calling it a second time with another value
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# This is the CMake script for compiling this folder.
|
||||
|
||||
project( Surface_reconstruction_points_3_test )
|
||||
project( Poisson_surface_reconstruction_3_test )
|
||||
|
||||
cmake_minimum_required(VERSION 2.8.11)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
#include <algorithm>
|
||||
|
||||
|
||||
/// The UI_point_3 class represents a 3D point in Surface_reconstruction_points_3 demo.
|
||||
/// The UI_point_3 class represents a 3D point in Poisson_surface_reconstruction_3 demo.
|
||||
/// It contains:
|
||||
/// - a position,
|
||||
/// - a normal,
|
||||
|
|
|
|||
234
copyright
234
copyright
|
|
@ -8,120 +8,120 @@ U = Utrecht University
|
|||
R = RU Groningen
|
||||
|
||||
|
||||
AABB_tree I
|
||||
Algebraic_foundations ETIMU
|
||||
Algebraic_kernel_d IM
|
||||
Algebraic_kernel_for_circles I
|
||||
Algebraic_kernel_for_spheres I
|
||||
Alpha_shapes_2 I
|
||||
Alpha_shapes_3 I
|
||||
Apollonius_graph_2 I
|
||||
Approximate_min_ellipsoid_d E
|
||||
Arithmetic_kernel M
|
||||
Arrangement_on_surface_2 T
|
||||
BGL G
|
||||
Boolean_set_operations_2 T
|
||||
Box_intersection_d M
|
||||
CGAL_Core NYU; Chee Yap agreed to upgrade
|
||||
CGAL_ImageIO third party lib under LGPL
|
||||
CGAL_ipelets I
|
||||
Cartesian_kernel ETIMU
|
||||
Circular_kernel_2 I
|
||||
Circular_kernel_3 I
|
||||
Circulator ETIMU
|
||||
Combinatorial_map Cnrs; Guillaume Damiand upgraded
|
||||
Conic_2 ETIMU
|
||||
Convex_decomposition_3 M
|
||||
Convex_hull_2 M
|
||||
Convex_hull_3 M
|
||||
Convex_hull_d M
|
||||
Developers_manual ETIMU
|
||||
Distance_2 ETIMU
|
||||
Distance_3 ETIMU
|
||||
Envelope_2 T
|
||||
Envelope_3 T
|
||||
Filtered_kernel I
|
||||
Generator ETIMU
|
||||
Geomview ETIMU
|
||||
GraphicsView G
|
||||
HalfedgeDS ETIMU
|
||||
Hash_map M
|
||||
Homogeneous_kernel ETIMU
|
||||
Installation ETIMU
|
||||
Interpolation I
|
||||
Intersections_2 ETIMU
|
||||
Intersections_3 ETIMU
|
||||
Interval_skip_list G
|
||||
Interval_support M
|
||||
Inventor ETIMU
|
||||
Jet_fitting_3 I
|
||||
Kernel_23 ETIMU
|
||||
Kernel_d ETIMU
|
||||
Kinetic_data_structures Stanford; Leo Guibas agreed to upgrade
|
||||
LEDA ETIMU
|
||||
Largest_empty_rect_2 T
|
||||
MacOSX F
|
||||
Maintenance ETIMUG
|
||||
Manual ETIMU
|
||||
Manual_tools EIM, Modena Software, Silicon Graphics
|
||||
Matrix_search E
|
||||
Mesh_2 I
|
||||
Mesh_3 I
|
||||
Min_annulus_d E
|
||||
Min_circle_2 E
|
||||
Min_ellipse_2 E
|
||||
Min_quadrilateral_2 E
|
||||
Min_sphere_d E
|
||||
Min_sphere_of_spheres_d E
|
||||
Minkowski_sum_2 T
|
||||
Minkowski_sum_3 M
|
||||
Modifier ETIMU
|
||||
Modular_arithmetic MI
|
||||
Nef_2 M
|
||||
Nef_3 M
|
||||
Nef_S2 M
|
||||
Number_types ETIMU
|
||||
OpenNL third party lib under LGPL 3
|
||||
Optimisation_basic E
|
||||
Optimisation_doc E
|
||||
Partition_2 M
|
||||
Periodic_3_triangulation_3 I
|
||||
Point_set_2 Halle transfered copyright to Inria
|
||||
Point_set_processing_3 I
|
||||
Polygon ETIMU
|
||||
Polyhedron E
|
||||
Polyhedron_IO E
|
||||
Polynomial M
|
||||
Polytope_distance_d E
|
||||
Principal_component_analysis I
|
||||
Profiling_tools ETIMU
|
||||
QP_solver E
|
||||
Qt_widget I
|
||||
Random_numbers ETIMU
|
||||
Ridges_3 I
|
||||
Robustness M
|
||||
STL_Extension ETIMU
|
||||
Scripts ETIMU
|
||||
SearchStructures E
|
||||
Segment_Delaunay_graph_2 I Menelaos removed Notre Dame U
|
||||
Skin_surface_3 R Gert Vegter agreed to upgrade
|
||||
Snap_rounding_2 T
|
||||
Spatial_searching U
|
||||
Spatial_sorting I
|
||||
Straight_skeleton_2 Cacciola; Fernando agreed to upgrade to GPL
|
||||
Stream_lines_2 I
|
||||
Stream_support ETIMU
|
||||
Subdivision_method_3 G
|
||||
Surface_mesh_parameterization I
|
||||
Surface_mesh_simplification G
|
||||
Surface_mesher I
|
||||
Surface_reconstruction_points_3I
|
||||
Testsuite IG
|
||||
Triangulation_2 I
|
||||
Triangulation_3 I
|
||||
Union_find M
|
||||
Voronoi_diagram_2 F I sent mail to Forth
|
||||
Width_3 E
|
||||
iostream ETIMU
|
||||
kdtree T
|
||||
wininst ETIMU
|
||||
AABB_tree I
|
||||
Algebraic_foundations ETIMU
|
||||
Algebraic_kernel_d IM
|
||||
Algebraic_kernel_for_circles I
|
||||
Algebraic_kernel_for_spheres I
|
||||
Alpha_shapes_2 I
|
||||
Alpha_shapes_3 I
|
||||
Apollonius_graph_2 I
|
||||
Approximate_min_ellipsoid_d E
|
||||
Arithmetic_kernel M
|
||||
Arrangement_on_surface_2 T
|
||||
BGL G
|
||||
Boolean_set_operations_2 T
|
||||
Box_intersection_d M
|
||||
CGAL_Core NYU; Chee Yap agreed to upgrade
|
||||
CGAL_ImageIO third party lib under LGPL
|
||||
CGAL_ipelets I
|
||||
Cartesian_kernel ETIMU
|
||||
Circular_kernel_2 I
|
||||
Circular_kernel_3 I
|
||||
Circulator ETIMU
|
||||
Combinatorial_map Cnrs; Guillaume Damiand upgraded
|
||||
Conic_2 ETIMU
|
||||
Convex_decomposition_3 M
|
||||
Convex_hull_2 M
|
||||
Convex_hull_3 M
|
||||
Convex_hull_d M
|
||||
Developers_manual ETIMU
|
||||
Distance_2 ETIMU
|
||||
Distance_3 ETIMU
|
||||
Envelope_2 T
|
||||
Envelope_3 T
|
||||
Filtered_kernel I
|
||||
Generator ETIMU
|
||||
Geomview ETIMU
|
||||
GraphicsView G
|
||||
HalfedgeDS ETIMU
|
||||
Hash_map M
|
||||
Homogeneous_kernel ETIMU
|
||||
Installation ETIMU
|
||||
Interpolation I
|
||||
Intersections_2 ETIMU
|
||||
Intersections_3 ETIMU
|
||||
Interval_skip_list G
|
||||
Interval_support M
|
||||
Inventor ETIMU
|
||||
Jet_fitting_3 I
|
||||
Kernel_23 ETIMU
|
||||
Kernel_d ETIMU
|
||||
Kinetic_data_structures Stanford; Leo Guibas agreed to upgrade
|
||||
LEDA ETIMU
|
||||
Largest_empty_rect_2 T
|
||||
MacOSX F
|
||||
Maintenance ETIMUG
|
||||
Manual ETIMU
|
||||
Manual_tools EIM, Modena Software, Silicon Graphics
|
||||
Matrix_search E
|
||||
Mesh_2 I
|
||||
Mesh_3 I
|
||||
Min_annulus_d E
|
||||
Min_circle_2 E
|
||||
Min_ellipse_2 E
|
||||
Min_quadrilateral_2 E
|
||||
Min_sphere_d E
|
||||
Min_sphere_of_spheres_d E
|
||||
Minkowski_sum_2 T
|
||||
Minkowski_sum_3 M
|
||||
Modifier ETIMU
|
||||
Modular_arithmetic MI
|
||||
Nef_2 M
|
||||
Nef_3 M
|
||||
Nef_S2 M
|
||||
Number_types ETIMU
|
||||
OpenNL third party lib under LGPL 3
|
||||
Optimisation_basic E
|
||||
Optimisation_doc E
|
||||
Partition_2 M
|
||||
Periodic_3_triangulation_3 I
|
||||
Point_set_2 Halle transfered copyright to Inria
|
||||
Point_set_processing_3 I
|
||||
Polygon ETIMU
|
||||
Polyhedron E
|
||||
Polyhedron_IO E
|
||||
Polynomial M
|
||||
Polytope_distance_d E
|
||||
Principal_component_analysis I
|
||||
Profiling_tools ETIMU
|
||||
QP_solver E
|
||||
Qt_widget I
|
||||
Random_numbers ETIMU
|
||||
Ridges_3 I
|
||||
Robustness M
|
||||
STL_Extension ETIMU
|
||||
Scripts ETIMU
|
||||
SearchStructures E
|
||||
Segment_Delaunay_graph_2 I Menelaos removed Notre Dame U
|
||||
Skin_surface_3 R Gert Vegter agreed to upgrade
|
||||
Snap_rounding_2 T
|
||||
Spatial_searching U
|
||||
Spatial_sorting I
|
||||
Straight_skeleton_2 Cacciola; Fernando agreed to upgrade to GPL
|
||||
Stream_lines_2 I
|
||||
Stream_support ETIMU
|
||||
Subdivision_method_3 G
|
||||
Surface_mesh_parameterization I
|
||||
Surface_mesh_simplification G
|
||||
Surface_mesher I
|
||||
Poisson_surface_reconstruction_3I
|
||||
Testsuite IG
|
||||
Triangulation_2 I
|
||||
Triangulation_3 I
|
||||
Union_find M
|
||||
Voronoi_diagram_2 F I sent mail to Forth
|
||||
Width_3 E
|
||||
iostream ETIMU
|
||||
kdtree T
|
||||
wininst ETIMU
|
||||
|
|
|
|||
Loading…
Reference in New Issue