Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions doc/tutorials/content/bspline_fitting.rst
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ Saving and viewing the result
-----------------------------

* Saving as OpenNURBS (3dm) file

You can save the B-spline surface by using the commands provided by OpenNurbs:

.. literalinclude:: sources/bspline_fitting/bspline_fitting.cpp
Expand All @@ -266,6 +267,7 @@ You can save the B-spline surface by using the commands provided by OpenNurbs:
The files generated can be viewed with the pcl/examples/surface/example_nurbs_viewer_surface.cpp.

* Saving as triangle mesh into a vtk file

You can save the triangle mesh for example by saving into a VTK file by:

#include <pcl/io/vtk_io.h>
Expand Down
2 changes: 1 addition & 1 deletion doc/tutorials/content/cloud_viewer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ to get you up and viewing clouds in as little code as possible.

The CloudViewer class is **NOT** meant to be used in multi-threaded
applications! Please check the documentation on
:pcl:`PCLVisualizer<pcl::PCLVisualizer>` or read the :ref:`pcl_visualizer` tutorial
:pcl:`PCLVisualizer<pcl::visualization::PCLVisualizer>` or read the :ref:`pcl_visualizer` tutorial
for thread safe visualization.

Simple Cloud Visualization
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ like::
+-- optional python bindings disabled since PYTHON_FOUND is false.
+ tr1


Now, click "Generate". A Visual Studio solution file will be genrated inside the build folder
(e.g. C:/PCL_dependencies/boost-cmake/build). Open the `Boost.sln` file, then right click on
`INSTALL` project and choose `Build`. The `INSTALL`project will trigger the build of all the projects
Expand Down
4 changes: 2 additions & 2 deletions doc/tutorials/content/correspondence_grouping.rst
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ Alternatively to Hough3DGrouping, and by means of the appropriate command line s
:lines: 327-339

.. note::
The ``recognize`` method returns a vector of ``Eigen::Matrix4f`` representing a transformation (rotation + translation) for each instance of the model found in the scene (obtained via Absolute Orientation) and a **vector** of :pcl:`Correspondences <pcl::Correspondences>` (a vector of vectors of :pcl:`Correspondence <pcl::Correspondence>`) representing the output of the clustering i.e. each element of this vector is in turn a set of correspondences, representing the correspondences associated to a specific model instance in the scene.
The ``recognize`` method returns a vector of ``Eigen::Matrix4f`` representing a transformation (rotation + translation) for each instance of the model found in the scene (obtained via Absolute Orientation) and a **vector** of :pcl:`Correspondences <pcl::Correspondences>` (a vector of vectors of :pcl:`Correspondence <pcl::Correspondences>`) representing the output of the clustering i.e. each element of this vector is in turn a set of correspondences, representing the correspondences associated to a specific model instance in the scene.

If you **only** need the clustered correspondences because you are planning to use them in a different way, you can use the ``cluster`` method.

Expand All @@ -155,7 +155,7 @@ As a first thing we are showing, for each instance of the model found into the s
:language: cpp
:lines: 344-360

The program then shows in a :pcl:`PCLVisualizer <pcl::PCLVisualizer>` window the scene cloud with a red overlay where an instance of the model has been found.
The program then shows in a :pcl:`PCLVisualizer <pcl::visualization::PCLVisualizer>` window the scene cloud with a red overlay where an instance of the model has been found.
If the command line switches ``-k`` and ``-c`` have been used, the program also shows a "stand-alone" rendering of the model cloud. If keypoint visualization is enabled, keypoints are displayed as blue dots and if correspondence visualization has been enabled they are shown as a green line for each correspondence which *survived* the clustering process.

.. literalinclude:: sources/correspondence_grouping/correspondence_grouping.cpp
Expand Down
3 changes: 0 additions & 3 deletions doc/tutorials/content/don_segmentation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ In this tutorial we will learn how to use Difference of Normals features, implem

This algorithm performs a scale based segmentation of the given input point cloud, finding points that belong within the scale parameters given.

.. donpipeline::
.. figure:: images/donpipelinesmall.jpg
:align: center

Expand All @@ -28,7 +27,6 @@ Formally the Difference of Normals operator is defined,

where :math:`$r_s, r_l \in \mathbb{R}$`, :math:`$r_s<r_l$`, and :math:`$\mathbf{\hat{n}}(p, r)$` is the surface normal estimate at point :math:`$p$`, given the support radius :math:`$r$`. Notice, the response of the operator is a normalized vector field, and is thus orientable (the resulting direction is a key feature), however the operator's norm often provides an easier quantity to work with, and is always in the range :math:`(0,1)`.

.. scalenormals_figure::
.. figure:: images/don_scalenormals.svg
:width: 60%
:align: center
Expand All @@ -40,7 +38,6 @@ The primary motivation behind DoN is the observation that surface normals estima

The above diagram illustrates this effect in 1D. Normals, :math:`$\mathbf{\hat{n}}$`, and tangents, :math:`$T$`, estimated with a small support radius :math:`$r_s$` are affected by small-scale surface structure (and similarly by noise). On the other hand, normals and tangent planes estimated with a large support radius $r_l$ are less affected by small-scale structure, and represent the geometry of larger scale surface structures. In fact a similair set of features is seen in the DoN feature vectors for real-world street curbs in a LiDAR image shown below.

.. doncurbcloseup::
.. figure:: images/don_curb_closeup_small.jpg
:align: center

Expand Down
10 changes: 5 additions & 5 deletions doc/tutorials/content/implicit_shape_model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@ First of all you will need the set of point clouds for this tutorial - training
Below is the list of clouds that are well suited for this tutorial (they were borrowed from the Ohio dataset).

Clouds for training:
* `Cat <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_cat.pcd>`_
* `Horse <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_horse.pcd>`_
* `Lioness <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_lioness.pcd>`_
* `Michael <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_michael.pcd>`_
* `Wolf <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_wolf.pcd>`_
* `Cat (train) <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_cat.pcd>`_
* `Horse (train) <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_horse.pcd>`_
* `Lioness (train) <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_lioness.pcd>`_
* `Michael (train) <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_michael.pcd>`_
* `Wolf (train) <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_train_wolf.pcd>`_

Clouds for testing:
* `Cat <https://raw.github.com/PointCloudLibrary/data/master/tutorials/ism_test_cat.pcd>`_
Expand Down
6 changes: 4 additions & 2 deletions doc/tutorials/content/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ Basic Usage
* :ref:`basic_structures`

====== ======
|mi_0| Title: **Getting Started / Basic Structures**
|mi_9| Title: **Getting Started / Basic Structures**

Author: *Radu B. Rusu*

Expand All @@ -66,7 +66,7 @@ Basic Usage
Presents the basic data structures in PCL and discusses their usage with a simple code example.
====== ======

.. |mi_0| image:: images/pcl_logo.png
.. |mi_9| image:: images/pcl_logo.png
:height: 75px

* :ref:`using_pcl_pcl_config`
Expand Down Expand Up @@ -1216,6 +1216,7 @@ Applications

.. |ap_5| image:: images/ground_based_rgbd_people_detection/Index_photo.jpg
:height: 120px

.. _gpu:

GPU
Expand Down Expand Up @@ -1265,6 +1266,7 @@ GPU

.. |gp_2| image:: images/gpu/people/c2_100.jpg
:height: 100px

..
* :ref:`normal_estimation_integral_images`
Surface normal estimation
Expand Down
4 changes: 2 additions & 2 deletions doc/tutorials/content/moment_of_inertia.rst
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
.. _moment_of_inertia:

Moment of inertia and eccentricity based descriptors
---------------------------
----------------------------------------------------

In this tutorial we will learn how to use the `pcl::MomentOfInertiaEstimation` class in order to obtain descriptors based on
eccentricity and moment of inertia. This class also allows to extract axis aligned and oriented bounding boxes of the cloud.
But keep in mind that extracted OBB is not the minimal possible bounding box.

Theoretical Primer
---------------------------
------------------

The idea of the feature extraction method is as follows.
First of all the covariance matrix of the point cloud is calculated and its eigen values and vectors are extracted.
Expand Down
7 changes: 4 additions & 3 deletions doc/tutorials/content/rops_feature.rst
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
.. _rops_feature:

RoPs (Rotational Projection Statistics) feature
---------------------------
-----------------------------------------------

In this tutorial we will learn how to use the `pcl::ROPSEstimation` class in order to extract points features.
The feature extraction method implemented in this class was proposed by Yulan Guo, Ferdous Sohel, Mohammed Bennamoun, Min Lu and
Jianwei Wanalso in their article "Rotational Projection Statistics for 3D Local Surface Description and Object Recognition"

Theoretical Primer
---------------------------
------------------

The idea of the feature extraction method is as follows.
Having a mesh and a set of points for which feature must be computed we perform some simple steps. First of all for a given point of interest
Expand All @@ -25,6 +25,7 @@ For every axis Ox, Oy and Oz the following steps are performed, we will refer to
* for each projection distribution matrix is built, this matrix simply shows how much points fall onto each bin. Number of bins represents the matrix dimension and is the parameter of the algorithm, as well as the support radius;
* for each distribution matrix central moments are calculated: M11, M12, M21, M22, E. Here E is the Shannon entropy;
* calculated values are then concatenated to form the sub-feature.

We iterate through these steps several times. Number of iterations depends on the given number of rotations.
Sub-features for different axes are concatenated to form the final RoPS descriptor.

Expand Down Expand Up @@ -110,4 +111,4 @@ Add the following lines to your CMakeLists.txt file:

After you have made the executable, you can run it. Simply do::

$ ./rops_feature points.pcd indices.txt triangles.txt
$ ./rops_feature points.pcd indices.txt triangles.txt
4 changes: 2 additions & 2 deletions doc/tutorials/content/supervoxel_clustering.rst
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ Oh, and for a more complicated example which uses Supervoxels, see ``pcl/example

The code
--------
First, grab a pcd file made from a kinect or similar device - here we shall use ``milk_cartoon_all_small_clorox.pcd`` which is available in the pcl git :download:`here <http://github.com/PointCloudLibrary/pcl/blob/master/test/milk_cartoon_all_small_clorox.pcd?raw=true>`).

First, grab a pcd file made from a kinect or similar device - here we shall use ``milk_cartoon_all_small_clorox.pcd`` which is available in the pcl git
`here <https://github.com/PointCloudLibrary/data/blob/master/tutorials/correspondence_grouping/milk_cartoon_all_small_clorox.pcd?raw=true>`_).
Next, copy and paste the following code into your editor and save it as ``supervoxel_clustering.cpp`` (or download the source file :download:`here <./sources/supervoxel_clustering/supervoxel_clustering.cpp>`).

.. literalinclude:: sources/supervoxel_clustering/supervoxel_clustering.cpp
Expand Down