From 7a131735b8ed2755cacae8dd3a1ca3b77a3cbd78 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Tue, 27 Jun 2017 17:31:08 +0100 Subject: [PATCH 01/24] This is an implementation of the GOOD descriptor which has been presented in Pattern Recognition Letters Journal (JULY2016) and IROS2016 (October). --- examples/features/CMakeLists.txt | 3 + examples/features/CMakeLists.txt~ | 26 + examples/features/example_good_descriptor.cpp | 178 +++++ features/CMakeLists.txt | 7 +- features/include/pcl/features/good.h | 326 ++++++++ features/include/pcl/features/impl/good.hpp | 750 ++++++++++++++++++ features/src/good.cpp | 51 ++ 7 files changed, 1339 insertions(+), 2 deletions(-) create mode 100644 examples/features/CMakeLists.txt~ create mode 100644 examples/features/example_good_descriptor.cpp create mode 100644 features/include/pcl/features/good.h create mode 100644 features/include/pcl/features/impl/good.hpp create mode 100644 features/src/good.cpp diff --git a/examples/features/CMakeLists.txt b/examples/features/CMakeLists.txt index 7b1c895940e..14e0d19fd21 100644 --- a/examples/features/CMakeLists.txt +++ b/examples/features/CMakeLists.txt @@ -21,3 +21,6 @@ PCL_ADD_EXAMPLE(pcl_example_rift_estimation FILES example_rift_estimation.cpp PCL_ADD_EXAMPLE(pcl_example_difference_of_normals FILES example_difference_of_normals.cpp LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io pcl_segmentation pcl_sample_consensus) + +PCL_ADD_EXAMPLE(pcl_example_good_descriptor FILES example_good_descriptor.cpp + LINK_WITH pcl_common pcl_features pcl_io pcl_sample_consensus) diff --git a/examples/features/CMakeLists.txt~ b/examples/features/CMakeLists.txt~ new file mode 100644 index 00000000000..14e0d19fd21 --- /dev/null +++ b/examples/features/CMakeLists.txt~ @@ -0,0 +1,26 @@ +PCL_ADD_EXAMPLE(pcl_example_fast_point_feature_histograms FILES example_fast_point_feature_histograms.cpp + LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) + +PCL_ADD_EXAMPLE(pcl_example_normal_estimation FILES example_normal_estimation.cpp + LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) + +PCL_ADD_EXAMPLE(pcl_example_point_feature_histograms FILES example_point_feature_histograms.cpp + LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) + +PCL_ADD_EXAMPLE(pcl_example_principal_curvatures_estimation FILES example_principal_curvatures_estimation.cpp + LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) + +PCL_ADD_EXAMPLE(pcl_example_shape_contexts FILES example_shape_contexts.cpp +LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) + +PCL_ADD_EXAMPLE(pcl_example_spin_images FILES example_spin_images.cpp + LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) + +PCL_ADD_EXAMPLE(pcl_example_rift_estimation FILES example_rift_estimation.cpp + LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) + +PCL_ADD_EXAMPLE(pcl_example_difference_of_normals FILES example_difference_of_normals.cpp + LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io pcl_segmentation pcl_sample_consensus) + +PCL_ADD_EXAMPLE(pcl_example_good_descriptor FILES example_good_descriptor.cpp + LINK_WITH pcl_common pcl_features pcl_io pcl_sample_consensus) diff --git a/examples/features/example_good_descriptor.cpp b/examples/features/example_good_descriptor.cpp new file mode 100644 index 00000000000..ebdbd80e7d8 --- /dev/null +++ b/examples/features/example_good_descriptor.cpp @@ -0,0 +1,178 @@ +/* + * Software License Agreement (BSD License) + * + * Point Cloud Library (PCL) - www.pointclouds.org + * Copyright (c) 2010-2012, Willow Garage, Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the copyright holder(s) nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * $Id$ + * + */ + +/** \brief GOOD: a Global Orthographic Object Descriptor for 3D object recognition and manipulation. + * GOOD descriptor has been designed to be robust, descriptive and efficient to compute and use. + * It has two outstanding characteristics: + * + * (1) Providing a good trade-off among : + * - descriptiveness, + * - robustness, + * - computation time, + * - memory usage. + * + * (2) Allowing concurrent object recognition and pose estimation for manipulation. + * + * \note This is an implementation of the GOOD descriptor which has been presented in the following papers: + * + * [1] Kasaei, S. Hamidreza, Ana Maria Tomé, Luís Seabra Lopes, Miguel Oliveira + * "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation." + * Pattern Recognition Letters 83 (2016): 312-320.http://dx.doi.org/10.1016/j.patrec.2016.07.006 + * + * [2] Kasaei, S. Hamidreza, Luís Seabra Lopes, Ana Maria Tomé, Miguel Oliveira + * "An orthographic descriptor for 3D object learning and recognition." + * 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Daejeon, 2016, + * pp. 4158-4163. doi: 10.1109/IROS.2016.7759612 + * + * Please adequately refer to this work any time this code is being used by citing above papers. + * If you do publish a paper where GOOD descriptor helped your research, we encourage you to cite the above papers in your publications. + * + * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt) + */ + +#include +#include +#include +#include + +typedef pcl::PointXYZRGBA PointT; +using namespace pcl; + +int +readPointCloud(std::string object_path, boost::shared_ptr > point_cloud) +{ + std::string extension = boost::filesystem::extension(object_path); + if (extension == ".pcd" || extension == ".PCD") + { + if (pcl::io::loadPCDFile(object_path.c_str() , *point_cloud) == -1) + { + std::cout << "Cloud reading failed." << std::endl; + return (-1); + } + } + else if (extension == ".ply" || extension == ".PLY") + { + if (pcl::io::loadPLYFile(object_path , *point_cloud) == -1) + { + std::cout << "Cloud reading failed." << std::endl; + return (-1); + } + } + else + { + std::cout << "file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + return -1; + } + return 1; +} + +int main(int argc, char* argv[]) +{ + + if (argc < 2 ||argc > 2) + { + std::cout << "\n Syntax is: example_good_descriptor " << std::endl; + return 0; + } + + std::string object_path = argv[1]; + pcl::PointCloud::Ptr object (new pcl::PointCloud); + if (readPointCloud( object_path, object)==-1) + return -1; + + std::vector< float > object_description; + std::vector < boost::shared_ptr > > vector_of_projected_views; + boost::shared_ptr > transformed_object (new pcl::PointCloud); + + Eigen::Matrix4f transformation; + pcl::PointXYZ center_of_bounding_box; + pcl::PointXYZ bounding_box_dimensions; + std::string order_of_projected_planes; + + // Setup the GOOD descriptor + // GOOD can also be setup in a line: GOODEstimation test_GOOD_descriptor (5, 0.0015); + GOODEstimation test_GOOD_descriptor; + test_GOOD_descriptor.setNumberOfBins(5); + test_GOOD_descriptor.setThreshold(0.0015); + + // Provide the original point cloud + test_GOOD_descriptor.setInputCloud(object); + + // Compute GOOD discriptor for the given object + test_GOOD_descriptor.compute(object_description); + std::cout <<"\n GOOD = ["; + for (size_t i =0; i< object_description.size()-1; i ++) + std::cout << object_description.at(i)<<","; + std::cout << object_description.back() <<"]"< +#include + +namespace pcl +{ +/** \brief GOOD: a Global Orthographic Object Descriptor for 3D object recognition and manipulation. + * GOOD descriptor has been designed to be robust, descriptive and efficient to compute and use. + * It has two outstanding characteristics: + * + * (1) Providing a good trade-off among : + * - descriptiveness, + * - robustness, + * - computation time, + * - memory usage. + * + * (2) Allowing concurrent object recognition and pose estimation for manipulation. + * + * \note This is an implementation of the GOOD descriptor which has been presented in the following papers: + * + * [1] Kasaei, S. Hamidreza, Ana Maria Tomé, Luís Seabra Lopes, Miguel Oliveira + * "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation." + * Pattern Recognition Letters 83 (2016): 312-320.http://dx.doi.org/10.1016/j.patrec.2016.07.006 + * + * [2] Kasaei, S. Hamidreza, Luís Seabra Lopes, Ana Maria Tomé, Miguel Oliveira + * "An orthographic descriptor for 3D object learning and recognition." + * 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Daejeon, 2016, + * pp. 4158-4163. doi: 10.1109/IROS.2016.7759612 + * + * Please adequately refer to this work any time this code is being used by citing above papers. + * If you do publish a paper where GOOD descriptor helped your research, we encourage you to cite the above papers in your publications. + * + * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt) + */ + + template + class GOODEstimation + { + public: + + /** \brief Empty Constructor. */ + GOODEstimation(); + + /** \brief Constructor. + * \param[in] number_of_bins_ + * \param[in] threshold_ + */ + GOODEstimation(unsigned int, float); + + /** \brief Empty destructor */ + virtual ~GOODEstimation () {} + + /** \brief Set the input cloud. + * \param[in] cloud the boost shared pointer to a point cloud. + */ + void + setInputCloud (boost::shared_ptr > cloud); + + /** \brief Sets GOOD descriptor resolution. + * \param[in] number_of_bins number of bins along one dimension; each projection plane is divided into number_of_bins × number_of_bins square bins. + * The three projection vectors will be concatenated producing a vector of dimension 3 × number_of_bins^2 which is the final object descriptor, GOOD. + */ + void + setNumberOfBins (unsigned int number_of_bins); + + /** \brief Set the threshold for local reference frame estimation */ + void + setThreshold (float threshold); + + /** \brief Estimate the GOOD descriptor at a set of points given by setInputCloud() + * \param[out] object_description the resultant GOOD descriptor representing the feature at the query point cloud + */ + void + compute (std::vector< float > &object_description ); + + /** \brief get three orthographic projections of a set of points given by setInputCloud() + * \param[out] vector_of_projected_views the resultant vector of point clouds that contains three orthographic projections of the query point cloud + */ + void + getOrthographicProjections (std::vector < boost::shared_ptr > > &vector_of_projected_views); + + /** \brief get objec point cloud in local reference frame constructed by the GOOD descriptor + * \param[out] transformed_point_cloud the resultant point cloud of the object in local reference frame + */ + void + getTransformedObject (boost::shared_ptr > &transformed_point_cloud); + + /** \brief get center of boundingbox of a set of points given by setInputCloud() in camera reference frame + * \param[out] center_of_bbox the resultant center of boundingbox + */ + void + getCenterOfObjectBoundingBox (pcl::PointXYZ ¢er_of_bbox); + + /** \brief get dimensions of bounding box of a set of points given by setInputCloud() + * \param[out] bbox_dimensions the resultant boundingbox dimensions + */ + void + getObjectBoundingBoxDimensions(pcl::PointXYZ &bbox_dimensions); + + /** \brief get the order of protection plans in constructing GOOD descriptor + * \param[out] order_of_projected_plane the resultant of order of projections + */ + void + getOrderOfProjectedPlanes(std::string &order_of_projected_plane); + + /** \brief get the transformation matrix from camera reference frame to object local reference frame + * \param[out] transformation the resultant transformation matrix + */ + void + getTransformationMatrix( Eigen::Matrix4f &transformation); + + private: + + unsigned int number_of_bins_; + float threshold_; + int sign_; + boost::shared_ptr > input_ ; + boost::shared_ptr > transformed_point_cloud_; + pcl::PointXYZ bbox_dimensions_; + pcl::PointXYZ center_of_bbox_; + std::vector < boost::shared_ptr > > vector_of_projected_views_; + std::string projections_ordered_; + std::string order_of_projected_plane_; + Eigen::Matrix4f transformation_; + + /** \brief get dimensions of bounding box of a given point cloud + * \param[in] pc the boost shared pointer to a point cloud. + * \param[out] dimensions the resultant boundingbox dimensions + */ + void + computeBoundingBoxDimensions (boost::shared_ptr > pc, pcl::PointXYZ& dimensions); + + /** \brief project point cloud to a plane + * \param[in] pc_in the boost shared pointer to a point cloud. + * \param[in] coefficients pcl::ModelCoefficients + * \param[out] pc_out the resultant projected point cloud + */ + void + projectPointCloudToPlane (boost::shared_ptr > pc_in, boost::shared_ptr coefficients, boost::shared_ptr > pc_out); + + /** \brief convert 2D histogram to 1D histogram + * \param[in] histogram_2D a 2D vector of unsigned int + * \param[out] histogram the resultant 1D vector of unsigned int + */ + void + convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram); + + /** \brief sign disambiguation of axis X + * \param[in] XoZ_projected_view the boost shared pointer to a point cloud. + * \param[in] threshold used to deal with the special case when a point is close to the YoZ plane + * \param[out] sign the resultant sign (either 1 or -1) + */ + void + signDisambiguationXAxis (boost::shared_ptr > XoZ_projected_view, float threshold, int &sign ); + + /** \brief sign disambiguation of axis Y + * \param[in] YoZ_projected_view the boost shared pointer to a point cloud. + * \param[in] threshold used to deal with the special case when a point is close to the XoZ plane + * \param[out] sign the resultant sign (either 1 or -1) + */ + void + signDisambiguationYAxis (boost::shared_ptr > YoZ_projected_view, float threshold, int &sign ); + + /** \brief create a 2D histogram from YOZ projection + * \param[in] YoZ_projected_view the boost shared pointer to a point cloud. + * \param[in] largest_side largest side of object bounding box + * \param[in] number_of_bins number of bins along one dimension; + * \param[in] sign either 1 or -1 + * \param[out] YOZ_histogram a 2D vector of unsigned int + */ + void + create2DHistogramFromYOZProjection (boost::shared_ptr > YOZ_projected_view, + double largest_side, unsigned int number_of_bins, int sign, std::vector < std::vector > &YOZ_histogram); + + /** \brief create a 2D histogram from XOZ projection + * \param[in] XoZ_projected_view the boost shared pointer to a point cloud. + * \param[in] largest_side largest side of object bounding box. + * \param[in] number_of_bins number of bins along one dimension. + * \param[in] sign either 1 or -1. + * \param[out] XOZ_histogram a 2D vector of unsigned int. + */ + void + create2DHistogramFromXOZProjection ( boost::shared_ptr > XOZ_projected_view, double largest_side, + unsigned int number_of_bins, int sign, std::vector < std::vector > &XOZ_histogram); + + /** \brief create a 2D histogram from XOY projection + * \param[in] XoY_projected_view the boost shared pointer to a point cloud. + * \param[in] largest_side largest side of object bounding box. + * \param[in] number_of_bins number of bins along one dimension. + * \param[in] sign either 1 or -1. + * \param[out] XOY_histogram a 2D vector of unsigned int. + */ + void + create2DHistogramFromXOYProjection (boost::shared_ptr > XOY_projected_view, double largest_side, + unsigned int number_of_bins, int sign, std::vector < std::vector > &XOY_histogram); + + /** \brief normalizing a 1D histogram + * \param[in] histogram 1D histogram (int). + * \param[out] normalized_histogram the resultant normalized_histogram (float). + */ + void + normalizingHistogram (std::vector histogram, std::vector &normalized_histogram); + + /** \brief compute viewpoint entropy used for concatenating projections + * \param[in] normalized_histogram normalized_histogram (float). + * \param[out] entropy the resultant view entropy. + */ + void + viewpointEntropy (std::vector normalized_histogram, float &entropy); + + /** \brief find max view point entropy used for concatenating projections + * \param[in] view_point_entropy a vector of float contains three view entropies. + * \param[out] index the resultant projection index. + */ + void + findMaxViewPointEntropy (std::vector view_point_entropy, int &index); + + /** \brief compute average of view point histograms + * \param[in] histogram1 normalized histogram of projection 1. + * \param[in] histogram2 normalized histogram of projection 2 + * \param[in] histogram3 normalized histogram of projection 3 + * \param[out] average the resultant average of three histograms. + */ + void + averageHistograms (std::vector< float> histogram1, std::vector< float> historam2, std::vector< float> historam3, std::vector< float> &average); + + /** \brief compute mean of a given histogram + * \param[in] histogram normalized histogram of projection. + * \param[out] mean the resultant mean. + */ + void + meanOfHistogram (std::vector< float> histogram, float &mean); + + /** \brief compute variance of a given histogram + * \param[in] histogram normalized histogram of projection. + * \param[in] mean mean of the given histogram. + * \param[out] mean the resultant mean. + */ + void + varianceOfHistogram (std::vector< float> histogram, float mean, float &variance); + + /** \brief concatinating three orthographic projections + * three histograms are obtained for the projections; afterwards, two statistic features including entropy and variance have been calculated for each distribution vector; + * the histograms are consequently concatenated together using entropy and variance features, to form a single description for the given object. The ordering of the three + * histograms is first by decreasing values of entropy. Afterwards the second and third vectors are sorted again by increasing values of variance. + * \param[in] maximum_entropy_index index of orthographic projection that has maximum entropy. + * \param[in] normalized_projected_views a vector of vector of float contains three normalized histogram of projected views + * \param[out] sorted_normalized_projected_views a vector of float representing the GOOD description for a set of points given by setInputCloud() + * \param[out] name_of_sorted_projected_plane an string represents the order of concatenating projections. + */ + void + objectViewHistogram (int maximum_entropy_index, std::vector< std::vector >normalized_projected_views, + std::vector< float> &sorted_normalized_projected_views, + std::string &name_of_sorted_projected_plane /*debug*/); + + /** \brief compute largest side of boundingbox + * \param[in] dimensions shows the dimention of boundingbox + * \param[out] largest_side the resultant largest side. + */ + void + computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ); + + /** \brief compute compute distance between two projections + * \param[in] projection1 2D histogram + * \param[in] projection2 2D histogram + * \param[out] largest_side the resultant distance. + */ + void + computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance); + + /** \brief initializing a 2D histogram with 0; This function creates a 2D vector with the size of [number_of_bins × number_of_bins] and initializes all elements with 0 value. + * \param[in] number_of_bins number of bin + * \param[out] a_2D_vector + */ + inline std::vector < std::vector > initializing2DHistogram (unsigned int number_of_bins); + + }; +} + +#ifdef PCL_NO_PRECOMPILE +#include +#endif + +#endif /* PCL_FEATURES_GOOD_H_ */ diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp new file mode 100644 index 00000000000..8008646a6d6 --- /dev/null +++ b/features/include/pcl/features/impl/good.hpp @@ -0,0 +1,750 @@ +/* + * Software License Agreement (BSD License) + * + * Point Cloud Library (PCL) - www.pointclouds.org + * Copyright (c) 2009-2014, Willow Garage, Inc. + * Copyright (c) 2014-, Open Perception, Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the copyright holder(s) nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * + */ + +#ifndef PCL_FEATURES_IMPL_GOOD_H_ +#define PCL_FEATURES_IMPL_GOOD_H_ +#include +#include + + +/** \brief GOOD: a Global Orthographic Object Descriptor for 3D object recognition and manipulation. + * GOOD descriptor has been designed to be robust, descriptive and efficient to compute and use. + * It has two outstanding characteristics: + * + * (1) Providing a good trade-off among : + * - descriptiveness, + * - robustness, + * - computation time, + * - memory usage. + * + * (2) Allowing concurrent object recognition and pose estimation for manipulation. + * + * \note This is an implementation of the GOOD descriptor which has been presented in the following papers: + * + * [1] Kasaei, S. Hamidreza, Ana Maria Tomé, Luís Seabra Lopes, Miguel Oliveira + * "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation." + * Pattern Recognition Letters 83 (2016): 312-320.http://dx.doi.org/10.1016/j.patrec.2016.07.006 + * + * [2] Kasaei, S. Hamidreza, Luís Seabra Lopes, Ana Maria Tomé, Miguel Oliveira + * "An orthographic descriptor for 3D object learning and recognition." + * 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Daejeon, 2016, + * pp. 4158-4163. doi: 10.1109/IROS.2016.7759612 + * + * Please adequately refer to this work any time this code is being used by citing above papers. + * If you do publish a paper where GOOD descriptor helped your research, we encourage you to cite the above papers in your publications. + * + * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt) + */ + +template +pcl::GOODEstimation::GOODEstimation() +{ + number_of_bins_ = 5; + threshold_ = 0.0015; +} + +template +pcl::GOODEstimation::GOODEstimation(unsigned int number_of_bins, float threshold) +{ + number_of_bins_ = number_of_bins; + threshold_ = threshold; +}; +////////////////////////////////////////////////////////////////////////////////////////////// + +/*______________________________ +| | +| Methods | +|_______________________________| */ + +template +void +pcl::GOODEstimation::setInputCloud (boost::shared_ptr > cloud) +{ + input_ = cloud; +}; +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::setNumberOfBins (unsigned int number_of_bins) +{ + number_of_bins_ = number_of_bins; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::setThreshold (float threshold) +{ + threshold_ = threshold; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::getOrthographicProjections (std::vector < boost::shared_ptr > > &vector_of_projected_views) +{ + vector_of_projected_views = vector_of_projected_views_; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::getTransformedObject (boost::shared_ptr > &transformed_point_cloud) +{ + transformed_point_cloud = transformed_point_cloud_; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::getCenterOfObjectBoundingBox (pcl::PointXYZ ¢er_of_bbox) +{ + center_of_bbox = center_of_bbox_; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::getObjectBoundingBoxDimensions(pcl::PointXYZ &bbox_dimensions) +{ + bbox_dimensions = bbox_dimensions_; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::getOrderOfProjectedPlanes(std::string &order_of_projected_plane) +{ + order_of_projected_plane = order_of_projected_plane_; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::getTransformationMatrix( Eigen::Matrix4f &transformation) +{ + transformation = transformation_; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::computeBoundingBoxDimensions (boost::shared_ptr > pc, pcl::PointXYZ& dimensions) +{ + PointInT minimum_pt; + PointInT maximum_pt; + pcl::getMinMax3D(*pc, minimum_pt, maximum_pt); // min max for bounding box + dimensions.x = (maximum_pt.x - minimum_pt.x); + dimensions.y = (maximum_pt.y - minimum_pt.y); + dimensions.z = (maximum_pt.z - minimum_pt.z); +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::projectPointCloudToPlane (boost::shared_ptr > pc_in, boost::shared_ptr coefficients, boost::shared_ptr > pc_out) +{ + //Create the projection object + pcl::ProjectInliers projection; + projection.setModelType(pcl::SACMODEL_NORMAL_PLANE); //set model type + projection.setInputCloud(pc_in); + projection.setModelCoefficients(coefficients); + projection.filter(*pc_out); +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram) +{ + for (size_t i=0 ; i < histogram_2D.size(); i++) + { + for (size_t j=0; j < histogram_2D.at(i).size(); j++) + { + histogram.push_back(histogram_2D.at(i).at(j)); + } + } +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::signDisambiguationXAxis (boost::shared_ptr > XoZ_projected_view, float threshold, int &sign ) +{ + int Xpositive =0; + int Xnegative =0; + unsigned int thereshold = trunc (XoZ_projected_view -> points.size()/10); + + //XoZ page + for (size_t i=0; i< XoZ_projected_view -> points.size(); i++) + { + if (XoZ_projected_view->points.at(i).x > threshold) + { + Xpositive ++; + } + else if (XoZ_projected_view->points.at(i).x < - threshold) + { + Xnegative ++; + } + } + if ((Xpositive < Xnegative) and (Xnegative - Xpositive >= thereshold)) + { + sign = -1; + } + else + { + sign = 1; + } +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::signDisambiguationYAxis (boost::shared_ptr > YoZ_projected_view, float threshold, int &sign ) +{ + int Ypositive =0; + int Ynegative =0; + unsigned int thereshold = trunc (YoZ_projected_view -> points.size()/10); + //YoZ page + for (size_t i=0; i < YoZ_projected_view -> points.size(); i++) + { + if (YoZ_projected_view->points.at(i).y > threshold) + { + Ypositive ++; + } + else if (YoZ_projected_view->points.at(i).y < - threshold) + { + Ynegative ++; + } + } + if ((Ypositive < Ynegative) and (Ynegative - Ypositive >= thereshold)) + { + sign = -1; + } + else + { + sign = 1; + } +} +////////////////////////////////////////////////////////////////////////////////////////////// + + +template +void +pcl::GOODEstimation::create2DHistogramFromYOZProjection (boost::shared_ptr > YOZ_projected_view, + double largest_side, unsigned int number_of_bins, int sign, std::vector < std::vector > &YOZ_histogram) +{ + double y = largest_side/2; + double z = largest_side/2; + double interval_y = largest_side/number_of_bins; + double interval_z = largest_side/number_of_bins; + for (size_t i=0; i < YOZ_projected_view-> points.size(); i++) + { + pcl::PointXYZ p; + p.y = sign * YOZ_projected_view->points.at(i).y + y; + p.z = YOZ_projected_view ->points.at(i).z + z; + + //if adaptive_support_lenght parameter == false, some points might be projected outside of the plane, we must discard them. + if ((trunc(p.y / interval_y) < YOZ_histogram.size()) and (trunc(p.z / interval_z) < YOZ_histogram.at(0).size()) + and (trunc(p.y / interval_y) >= 0) and (trunc(p.z / interval_z) >= 0)) + { + YOZ_histogram.at(trunc(p.y / interval_y)).at(trunc(p.z / interval_z))++; + } + } +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::create2DHistogramFromXOZProjection ( boost::shared_ptr > XOZ_projected_view, double largest_side, + unsigned int number_of_bins, int sign, std::vector < std::vector > &XOZ_histogram) +{ + double x = largest_side/2; + double z = largest_side/2; + double interval_x = largest_side/number_of_bins; + double interval_z = largest_side/number_of_bins; + for (size_t i=0; i < XOZ_projected_view-> points.size(); i++) + { + pcl::PointXYZ p; + p.x =sign * XOZ_projected_view->points.at(i).x + x; + p.z = XOZ_projected_view ->points.at(i).z + z; + + if ((trunc(p.x / interval_x) < XOZ_histogram.size()) and (trunc(p.z / interval_z) < XOZ_histogram.at(0).size()) + and (trunc(p.x / interval_x) >=0) and (trunc(p.z / interval_z) >=0)) + { + XOZ_histogram.at(trunc(p.x / interval_x)).at(trunc(p.z / interval_z))++; + } + } +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::create2DHistogramFromXOYProjection (boost::shared_ptr > XOY_projected_view, double largest_side, + unsigned int number_of_bins, int sign, std::vector < std::vector > &XOY_histogram) +{ + double x = largest_side/2; + double y = largest_side/2; + double interval_x = largest_side/number_of_bins; + double interval_y = largest_side/number_of_bins; + for (size_t i=0; i < XOY_projected_view-> points.size(); i++) + { + pcl::PointXYZ p; + p.x = sign * XOY_projected_view->points.at(i).x + x; + p.y = sign * XOY_projected_view->points.at(i).y + y; + if ((trunc(p.x / interval_x) < XOY_histogram.size()) and (trunc(p.y / interval_y) < XOY_histogram.at(0).size())and + (trunc(p.x / interval_x) >= 0) and (trunc(p.y / interval_y) >=0)) + { + XOY_histogram.at(trunc(p.x / interval_x)).at(trunc(p.y / interval_y))++; + } + } +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::normalizingHistogram (std::vector histogram, std::vector &normalized_histogram) +{ + int sum_all_bins = 0; + //compute sumation of all histogram's bins. + for(std::vector::iterator it = histogram.begin(); it != histogram.end(); ++it) + { + sum_all_bins += *it; + } + if (sum_all_bins != 0) + { + for(std::vector::iterator it = histogram.begin(); it != histogram.end(); ++it) + { + normalized_histogram.push_back(*it/ float (sum_all_bins)); + } + } +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::viewpointEntropy (std::vector normalized_histogram, float &entropy) +{ + //http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform + entropy =0; + for(std::vector::iterator it = normalized_histogram.begin(); it != normalized_histogram.end(); ++it) + { + if (*it != 0) + { + float entropy_tmp = *it * log2(*it); + entropy += entropy_tmp; + } + } + entropy = -entropy; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::findMaxViewPointEntropy (std::vector view_point_entropy, int &index) +{ + index = 0; + std::vector::iterator it; + it=std::max_element(view_point_entropy.begin(),view_point_entropy.end()); + index = it - view_point_entropy.begin(); + //std::cout << "\nindex ="<< it - view_point_entropy.begin() <<"\t , content = " << *it <<"\n"; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::averageHistograms (std::vector< float> histogram1, std::vector< float> historam2, std::vector< float> historam3, std::vector< float> &average) +{ + for (size_t i=0; i +void +pcl::GOODEstimation::meanOfHistogram (std::vector< float> histogram, float &mean) +{ + // http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm + float mu = 0; + for (size_t i = 0; i < histogram.size(); i++) + { + mu += (i+1)*histogram.at(i); + } + mean = mu; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::varianceOfHistogram (std::vector< float> histogram, float mean, float &variance) +{ + //https://people.richland.edu/james/lecture/m170/ch06-prb.html + //http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm + float variance_tmp = 0; + for (size_t i = 0; i < histogram.size(); i++) + { + variance_tmp += pow((i+1)-mean,2)*histogram.at(i); + } + variance = variance_tmp; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, std::vector< std::vector >normalized_projected_views, + std::vector< float> &sorted_normalized_projected_views, + std::string &name_of_sorted_projected_plane /*debug*/) +{ + float variance1 = 0; + float variance2 = 0; + float mean =0; + + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(maximum_entropy_index).begin(), + normalized_projected_views.at(maximum_entropy_index).end()); + + switch (maximum_entropy_index) + { + case 0 : + + name_of_sorted_projected_plane += "YoZ - "; + meanOfHistogram(normalized_projected_views.at(1), mean); + varianceOfHistogram(normalized_projected_views.at(1), mean, variance1); + meanOfHistogram(normalized_projected_views.at(2), mean); + varianceOfHistogram(normalized_projected_views.at(2), mean, variance2); + + if (variance1 <= variance2) + { + name_of_sorted_projected_plane += "XoZ - XoY "; + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + } + else + { + name_of_sorted_projected_plane += "XoY - XoZ "; + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + } + break; + + case 1 : + name_of_sorted_projected_plane += "XoZ - "; + meanOfHistogram(normalized_projected_views.at(0), mean); + varianceOfHistogram(normalized_projected_views.at(0), mean, variance1); + meanOfHistogram(normalized_projected_views.at(2), mean); + varianceOfHistogram(normalized_projected_views.at(2), mean, variance2); + + if (variance1 <= variance2) + { + name_of_sorted_projected_plane += "YoZ - XoY "; + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(),normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + } + else + { + name_of_sorted_projected_plane += "XoY - YoZ "; + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + } + break; + + case 2 : + name_of_sorted_projected_plane += "XoY - "; + meanOfHistogram(normalized_projected_views.at(0), mean); + varianceOfHistogram(normalized_projected_views.at(0), mean, variance1); + meanOfHistogram(normalized_projected_views.at(1), mean); + varianceOfHistogram(normalized_projected_views.at(1), mean, variance2); + + if (variance1 <= variance2) + { + name_of_sorted_projected_plane += "YoZ - XoZ "; + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(),normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + } + else + { + name_of_sorted_projected_plane += "XoZ - YoZ "; + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(), normalized_projected_views.at(1).end()); + sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(), normalized_projected_views.at(0).end()); + } + break; + + default: + break; + } +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ) +{ + std::vector tmp; + tmp.push_back (dimensions.x); tmp.push_back (dimensions.y); tmp.push_back (dimensions.z); + std::vector::iterator it; + it=std::max_element(tmp.begin(),tmp.end()); + largest_side=*it; + largest_side += 0.02; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance) +{ + float sum = 0 ; + for (size_t i =0; i < projection1.size(); i++) + { for (size_t j =0; j < projection1.size(); j++) + { + float d = projection1.at(i).at(j) - projection2.at(i).at(j); + sum += pow(d,2); + } + } + distance = sqrt(sum); +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +inline std::vector < std::vector > pcl::GOODEstimation::initializing2DHistogram (unsigned int number_of_bins) +{ + std::vector row( number_of_bins, 0); + std::vector < std::vector > histogram2D(number_of_bins, row); + return histogram2D; +} +////////////////////////////////////////////////////////////////////////////////////////////// + +template +void +pcl::GOODEstimation::compute (std::vector< float > &object_description ) +{ + double largest_side = 0; + int sign = 1; + std::vector view_point_entropy; + std::string name_of_sorted_projected_plane; + boost::shared_ptr > initial_cloud_projection_along_x_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + boost::shared_ptr > initial_cloud_projection_along_y_axis(new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + boost::shared_ptr > initial_cloud_projection_along_z_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + pcl::PointXYZ pt; + + /* __________________________ + | | + | construct ORF based on PCA | + |____________________________| */ + + ///////// the theory of new shape descriptor /////////////////////////// + // //NOTE the PCA base reference frame construction basically does: + // 1) compute the centroid (c0, c1, c2) and the normalized covariance + // 2) compute the eigenvectors e0, e1, e2. The reference system will be (e0, e1, e0 X e1) --- note: e0 X e1 = +/- e2 + // 3) move the points in that RF --- note: the transformation given by the rotation matrix (e0, e1, e0 X e1) & (c0, c1, c2) must be inverted + // 4) compute the max, the min and the center of the diagonal (mean_diag) + // 5) given a box centered at the origin with size (max_pt.x - min_pt.x, max_pt.y - min_pt.y, max_pt.z - min_pt.z) + // the transformation you have to apply is Rotation = (e0, e1, e0 X e1) & Translation = Rotation * mean_diag + (c0, c1, c2) + + // compute principal directions + Eigen::Vector4f centroid; + pcl::compute3DCentroid(*input_, centroid); + Eigen::Matrix3f covariance; + computeCovarianceMatrixNormalized(*input_, centroid, covariance); + Eigen::SelfAdjointEigenSolver eigen_solver(covariance, Eigen::ComputeEigenvectors); + Eigen::Matrix3f eigen_vectors = eigen_solver.eigenvectors(); + eigen_vectors.col(2) = eigen_vectors.col(0).cross(eigen_vectors.col(1)); + //std::cout << "eigen vectores : \n " << eigen_vectors << std::endl; + + //Eigen::Vector3f eigen_values = eigen_solver.eigenvalues(); + //std::cout << "The eigenvalues of the covariance matrix before sorting are \n:" << eigen_values << endl; + + //sorting eigen vectors based on eigen values + eigen_vectors.col(0)= eigen_vectors.col(2); + eigen_vectors.col(2) = eigen_vectors.col(0).cross(eigen_vectors.col(1)); + //std::cout << "eigen vectores cross product : \n " << eigen_vectors << std::endl; + + // move the points to the PCA based reference frame + Eigen::Matrix4f p2w(Eigen::Matrix4f::Identity()); + p2w.block<3,3>(0,0) = eigen_vectors.transpose(); + p2w.block<3,1>(0,3) = -1.f * (p2w.block<3,3>(0,0) * centroid.head<3>()); + transformation_ = p2w; + + boost::shared_ptr > transformed_point_cloud (new pcl::PointCloud); + pcl::transformPointCloud(*input_, *transformed_point_cloud, p2w); + transformed_point_cloud_ = transformed_point_cloud; + //compute the max, the min and the center of the diagonal (mean_diag) + PointInT min_pt, max_pt; + pcl::getMinMax3D(*transformed_point_cloud_, min_pt, max_pt); + const Eigen::Vector3f mean_diag = 0.5f*(max_pt.getVector3fMap() + min_pt.getVector3fMap()); + // centroid transform + Eigen::Quaternionf qfinal(eigen_vectors);//rotation matrix + Eigen::Vector3f center_of_bbox = eigen_vectors*mean_diag + centroid.head<3>(); // Translation = Rotation * center_diag + (c0, c1, c2) + center_of_bbox_.x = center_of_bbox(0,0); + center_of_bbox_.y = center_of_bbox(1,0); + center_of_bbox_.z = center_of_bbox(2,0); +/* _________________________________ + | | + | construct three projection view | + |_________________________________| */ + + // ax+by+cz+d=0, where b=c=d=0, and a=1, or said differently, the YoZ plane. + pcl::ModelCoefficients::Ptr coefficients_x (new pcl::ModelCoefficients ()); + coefficients_x->values.resize (4); + coefficients_x->values[0] = 1.0; coefficients_x->values[1] = 0; coefficients_x->values[2] = 0; coefficients_x->values[3] = 0; + projectPointCloudToPlane(transformed_point_cloud_, coefficients_x, initial_cloud_projection_along_x_axis); + for (size_t i=0; i< initial_cloud_projection_along_x_axis->points.size(); i++) + { + initial_cloud_projection_along_x_axis->points.at(i).x = 0.25; + } + vector_of_projected_views_.push_back(initial_cloud_projection_along_x_axis); + + //ax+by+cz+d=0, where a=c=d=0, and b=1, or said differently, the XoZ plane. + pcl::ModelCoefficients::Ptr coefficients_y (new pcl::ModelCoefficients ()); + coefficients_y->values.resize (4); + coefficients_y->values[0] = 0.0; coefficients_y->values[1] = 1.0; coefficients_y->values[2] = 0; coefficients_y->values[3] = 0; + + projectPointCloudToPlane(transformed_point_cloud_, coefficients_y, initial_cloud_projection_along_y_axis); + for (size_t i=0; i< initial_cloud_projection_along_y_axis->points.size(); i++) + { + initial_cloud_projection_along_y_axis->points.at(i).y = 0.3; + } + vector_of_projected_views_.push_back(initial_cloud_projection_along_y_axis); + + + // ax+by+cz+d=0, where a=b=d=0, and c=1, or said differently, the XoY plane. + pcl::ModelCoefficients::Ptr coefficients_z (new pcl::ModelCoefficients ()); + coefficients_z->values.resize (4); + coefficients_z->values[0] = 0; coefficients_z->values[1] = 0; coefficients_z->values[2] = 1.0; coefficients_z->values[3] = 0; + projectPointCloudToPlane(transformed_point_cloud_, coefficients_z, initial_cloud_projection_along_z_axis); + for (size_t i=0; i< initial_cloud_projection_along_z_axis->points.size(); i++) + { + initial_cloud_projection_along_z_axis->points.at(i).z = 0.3; + } + vector_of_projected_views_.push_back(initial_cloud_projection_along_z_axis); + + /* _________________________ + | | + | Axes sign disambiguation | + |___________________________| */ + + computeBoundingBoxDimensions(transformed_point_cloud_, bbox_dimensions_); + computeLargestSideOfBoundingBox(bbox_dimensions_ ,largest_side); + + /* _________________________ + | | + | Axes sign disambiguation | + |___________________________| */ + + int Sx=1, Sy=1; + signDisambiguationXAxis(initial_cloud_projection_along_y_axis, threshold_, Sx );//XoZ Plane + signDisambiguationYAxis(initial_cloud_projection_along_x_axis, threshold_, Sy );//YoZ Plane + sign = Sx * Sy; + sign_=sign; + /* _______________________________________________________ + | | + | compute histograms of projection of the given object | + |_________________________________________________________| */ + + std::vector complete_object_histogram; + std::vector complete_object_histogram_normalized;//each projection view is normalized sepreatly + std::vector < std::vector > XOY_histogram = initializing2DHistogram(number_of_bins_); + std::vector < std::vector > XOZ_histogram = initializing2DHistogram(number_of_bins_); + std::vector < std::vector > YOZ_histogram = initializing2DHistogram(number_of_bins_); + + std::vector > normalized_projected_views; + + //projection along X axis + create2DHistogramFromYOZProjection( initial_cloud_projection_along_x_axis, largest_side, number_of_bins_, sign,YOZ_histogram); + + std::vector histogramYOZ1D; + convert2DHistogramTo1DHistogram(YOZ_histogram, histogramYOZ1D); + complete_object_histogram.insert(complete_object_histogram.end(), histogramYOZ1D.begin(), histogramYOZ1D.end()); + std::vector normalized_histogramYoZ; + normalizingHistogram( histogramYOZ1D, normalized_histogramYoZ); + normalized_projected_views.push_back(normalized_histogramYoZ); + + complete_object_histogram_normalized.insert(complete_object_histogram_normalized.end(), normalized_histogramYoZ.begin(), normalized_histogramYoZ.end()); + float YoZ_entropy = 0; + viewpointEntropy(normalized_histogramYoZ, YoZ_entropy); + //viewpointEntropyNotNormalized(histogramYOZ1D, YoZ_entropy); + view_point_entropy.push_back(YoZ_entropy); + + //projection along Y axis + create2DHistogramFromXOZProjection( initial_cloud_projection_along_y_axis,largest_side, number_of_bins_, sign,XOZ_histogram); + + std::vector histogramXOZ1D; + convert2DHistogramTo1DHistogram(XOZ_histogram, histogramXOZ1D); + complete_object_histogram.insert(complete_object_histogram.end(), histogramXOZ1D.begin(), histogramXOZ1D.end()); + + std::vector normalized_histogramXoZ; + normalizingHistogram( histogramXOZ1D, normalized_histogramXoZ); + normalized_projected_views.push_back(normalized_histogramXoZ); + + complete_object_histogram_normalized.insert(complete_object_histogram_normalized.end(), normalized_histogramXoZ.begin(), normalized_histogramXoZ.end()); + float XoZ_entropy = 0; + viewpointEntropy(normalized_histogramXoZ, XoZ_entropy); + view_point_entropy.push_back(XoZ_entropy); + + //projection along Z axis + create2DHistogramFromXOYProjection( initial_cloud_projection_along_z_axis, largest_side, number_of_bins_, sign, XOY_histogram); + + std::vector histogramXOY1D; + convert2DHistogramTo1DHistogram(XOY_histogram, histogramXOY1D); + complete_object_histogram.insert(complete_object_histogram.end(), histogramXOY1D.begin(), histogramXOY1D.end()); + + std::vector normalized_histogramXoY; + normalizingHistogram( histogramXOY1D, normalized_histogramXoY); + normalized_projected_views.push_back(normalized_histogramXoY); + + complete_object_histogram_normalized.insert(complete_object_histogram_normalized.end(), normalized_histogramXoY.begin(), normalized_histogramXoY.end()); + float XoY_entropy = 0; + viewpointEntropy(normalized_histogramXoY, XoY_entropy); + view_point_entropy.push_back(XoY_entropy); + + std::vector normalized_histogram; + normalizingHistogram( complete_object_histogram, normalized_histogram); + + int maximum_entropy_index = 0; + findMaxViewPointEntropy(view_point_entropy, maximum_entropy_index); + + objectViewHistogram( maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); + order_of_projected_plane_ = name_of_sorted_projected_plane; + +} + +#define PCL_INSTANTIATE_GOODEstimation(T) template class PCL_EXPORTS pcl::GOODEstimation; + +#endif /* PCL_FEATURES_IMPL_GOOD_H_ */ diff --git a/features/src/good.cpp b/features/src/good.cpp new file mode 100644 index 00000000000..60a7de68a8a --- /dev/null +++ b/features/src/good.cpp @@ -0,0 +1,51 @@ +/* + * Software License Agreement (BSD License) + * + * Point Cloud Library (PCL) - www.pointclouds.org + * Copyright (c) 2010-2012, Willow Garage, Inc. + * Copyright (c) 2012-, Open Perception, Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the copyright holder(s) nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#ifndef PCL_NO_PRECOMPILE +#include +#include +// Instantiations of specific point types +#ifdef PCL_ONLY_CORE_POINT_TYPES + PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA)) +#else + PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)) +#endif +#endif // PCL_NO_PRECOMPILE + From 9f5370650f170555b08dd7182b9f16846034b425 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Tue, 27 Jun 2017 17:52:13 +0100 Subject: [PATCH 02/24] remove temp file --- examples/features/CMakeLists.txt~ | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 examples/features/CMakeLists.txt~ diff --git a/examples/features/CMakeLists.txt~ b/examples/features/CMakeLists.txt~ deleted file mode 100644 index 14e0d19fd21..00000000000 --- a/examples/features/CMakeLists.txt~ +++ /dev/null @@ -1,26 +0,0 @@ -PCL_ADD_EXAMPLE(pcl_example_fast_point_feature_histograms FILES example_fast_point_feature_histograms.cpp - LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) - -PCL_ADD_EXAMPLE(pcl_example_normal_estimation FILES example_normal_estimation.cpp - LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) - -PCL_ADD_EXAMPLE(pcl_example_point_feature_histograms FILES example_point_feature_histograms.cpp - LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) - -PCL_ADD_EXAMPLE(pcl_example_principal_curvatures_estimation FILES example_principal_curvatures_estimation.cpp - LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) - -PCL_ADD_EXAMPLE(pcl_example_shape_contexts FILES example_shape_contexts.cpp -LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) - -PCL_ADD_EXAMPLE(pcl_example_spin_images FILES example_spin_images.cpp - LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) - -PCL_ADD_EXAMPLE(pcl_example_rift_estimation FILES example_rift_estimation.cpp - LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io) - -PCL_ADD_EXAMPLE(pcl_example_difference_of_normals FILES example_difference_of_normals.cpp - LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io pcl_segmentation pcl_sample_consensus) - -PCL_ADD_EXAMPLE(pcl_example_good_descriptor FILES example_good_descriptor.cpp - LINK_WITH pcl_common pcl_features pcl_io pcl_sample_consensus) From e659feb6293222a25f99987919d6a45687f80d5d Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Tue, 27 Jun 2017 17:55:00 +0100 Subject: [PATCH 03/24] correction --- features/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/features/CMakeLists.txt b/features/CMakeLists.txt index 52469eb0f30..865eb982ef4 100644 --- a/features/CMakeLists.txt +++ b/features/CMakeLists.txt @@ -111,6 +111,7 @@ if(build) "include/pcl/${SUBSYS_NAME}/impl/3dsc.hpp" "include/pcl/${SUBSYS_NAME}/impl/usc.hpp" "include/pcl/${SUBSYS_NAME}/impl/boundary.hpp" + "include/pcl/${SUBSYS_NAME}/impl/range_image_border_extractor.hpp" "include/pcl/${SUBSYS_NAME}/impl/good.hpp" ) From af62d3015214f61f3299f71b18bd4f0f31c38e4a Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Wed, 28 Jun 2017 11:18:41 +0100 Subject: [PATCH 04/24] correction in good.cpp --- features/src/good.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/src/good.cpp b/features/src/good.cpp index 60a7de68a8a..40c43520301 100644 --- a/features/src/good.cpp +++ b/features/src/good.cpp @@ -43,7 +43,7 @@ #include // Instantiations of specific point types #ifdef PCL_ONLY_CORE_POINT_TYPES - PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA)) + PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA))) #else PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)) #endif From c36a2fd725fc335585927094c56e97e24844cf3f Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Wed, 28 Jun 2017 11:47:36 +0100 Subject: [PATCH 05/24] remove warnings generated from good.hpp --- features/include/pcl/features/impl/good.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index 8008646a6d6..c9757ef7f37 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -210,7 +210,7 @@ pcl::GOODEstimation::signDisambiguationXAxis (boost::shared_ptr points.size()/10); + int thereshold = trunc (XoZ_projected_view -> points.size()/10); //XoZ page for (size_t i=0; i< XoZ_projected_view -> points.size(); i++) @@ -241,7 +241,7 @@ pcl::GOODEstimation::signDisambiguationYAxis (boost::shared_ptr points.size()/10); + int thereshold = trunc (YoZ_projected_view -> points.size()/10); //YoZ page for (size_t i=0; i < YoZ_projected_view -> points.size(); i++) { From 4a87ae472d19340384b8713810638ec78173aee7 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Wed, 28 Jun 2017 11:59:51 +0100 Subject: [PATCH 06/24] remove warnings generated from good.hpp and correct threshold :D --- features/include/pcl/features/impl/good.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index c9757ef7f37..1958eab4141 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -210,7 +210,7 @@ pcl::GOODEstimation::signDisambiguationXAxis (boost::shared_ptr points.size()/10); + int threshold_overall = trunc (XoZ_projected_view -> points.size()/10); //XoZ page for (size_t i=0; i< XoZ_projected_view -> points.size(); i++) @@ -224,7 +224,7 @@ pcl::GOODEstimation::signDisambiguationXAxis (boost::shared_ptr= thereshold)) + if ((Xpositive < Xnegative) and (Xnegative - Xpositive >= threshold_overall)) { sign = -1; } @@ -241,7 +241,7 @@ pcl::GOODEstimation::signDisambiguationYAxis (boost::shared_ptr points.size()/10); + int threshold_overall = trunc (YoZ_projected_view -> points.size()/10); //YoZ page for (size_t i=0; i < YoZ_projected_view -> points.size(); i++) { @@ -254,7 +254,7 @@ pcl::GOODEstimation::signDisambiguationYAxis (boost::shared_ptr= thereshold)) + if ((Ypositive < Ynegative) and (Ynegative - Ypositive >= threshold_overall)) { sign = -1; } From 5ef505deed17fe308d8b81f6527c3602d0b3c4c0 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Thu, 29 Jun 2017 15:42:03 +0100 Subject: [PATCH 07/24] all of the comments have been applied, except defining the template to derive GOODEstimation from pcl::Feature, since I got confused. --- examples/features/example_good_descriptor.cpp | 53 +- features/include/pcl/features/good.h | 715 ++++++++++-------- features/include/pcl/features/impl/good.hpp | 436 +++++------ features/src/good.cpp | 3 +- 4 files changed, 583 insertions(+), 624 deletions(-) diff --git a/examples/features/example_good_descriptor.cpp b/examples/features/example_good_descriptor.cpp index ebdbd80e7d8..6a6576370e0 100644 --- a/examples/features/example_good_descriptor.cpp +++ b/examples/features/example_good_descriptor.cpp @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Point Cloud Library (PCL) - www.pointclouds.org - * Copyright (c) 2010-2012, Willow Garage, Inc. + * Copyright (c) 2017-, Open Perception, Inc. * * All rights reserved. * @@ -33,8 +33,6 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id$ - * */ /** \brief GOOD: a Global Orthographic Object Descriptor for 3D object recognition and manipulation. @@ -70,55 +68,32 @@ #include #include #include +#include typedef pcl::PointXYZRGBA PointT; -using namespace pcl; +typedef pcl::PointCloud::Ptr PointCloudIn; -int -readPointCloud(std::string object_path, boost::shared_ptr > point_cloud) -{ - std::string extension = boost::filesystem::extension(object_path); - if (extension == ".pcd" || extension == ".PCD") - { - if (pcl::io::loadPCDFile(object_path.c_str() , *point_cloud) == -1) - { - std::cout << "Cloud reading failed." << std::endl; - return (-1); - } - } - else if (extension == ".ply" || extension == ".PLY") - { - if (pcl::io::loadPLYFile(object_path , *point_cloud) == -1) - { - std::cout << "Cloud reading failed." << std::endl; - return (-1); - } - } - else - { - std::cout << "file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; - return -1; - } - return 1; -} int main(int argc, char* argv[]) { - if (argc < 2 ||argc > 2) + if (argc != 2) { std::cout << "\n Syntax is: example_good_descriptor " << std::endl; return 0; } - + std::string object_path = argv[1]; pcl::PointCloud::Ptr object (new pcl::PointCloud); - if (readPointCloud( object_path, object)==-1) + if (pcl::io::load(object_path, *object)==-1) + { + std::cout << "\n file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; return -1; + } - std::vector< float > object_description; - std::vector < boost::shared_ptr > > vector_of_projected_views; - boost::shared_ptr > transformed_object (new pcl::PointCloud); + std::vector object_description; + std::vector vector_of_projected_views; + PointCloudIn transformed_object (new pcl::PointCloud); Eigen::Matrix4f transformation; pcl::PointXYZ center_of_bounding_box; @@ -126,8 +101,8 @@ int main(int argc, char* argv[]) std::string order_of_projected_planes; // Setup the GOOD descriptor - // GOOD can also be setup in a line: GOODEstimation test_GOOD_descriptor (5, 0.0015); - GOODEstimation test_GOOD_descriptor; + // GOOD can also be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (5, 0.0015); + pcl::GOODEstimation test_GOOD_descriptor; test_GOOD_descriptor.setNumberOfBins(5); test_GOOD_descriptor.setThreshold(0.0015); diff --git a/features/include/pcl/features/good.h b/features/include/pcl/features/good.h index 8cabfebcf38..2c199ffcc6d 100644 --- a/features/include/pcl/features/good.h +++ b/features/include/pcl/features/good.h @@ -1,326 +1,393 @@ -/* - * Software License Agreement (BSD License) - * - * Point Cloud Library (PCL) - www.pointclouds.org - * Copyright (c) 2010-2011, Willow Garage, Inc. - * Copyright (c) 2012-, Open Perception, Inc. - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of the copyright holder(s) nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * - */ - - -#ifndef PCL_FEATURES_GOOD_H_ -#define PCL_FEATURES_GOOD_H_ - -#include -#include - -namespace pcl -{ -/** \brief GOOD: a Global Orthographic Object Descriptor for 3D object recognition and manipulation. - * GOOD descriptor has been designed to be robust, descriptive and efficient to compute and use. - * It has two outstanding characteristics: - * - * (1) Providing a good trade-off among : - * - descriptiveness, - * - robustness, - * - computation time, - * - memory usage. - * - * (2) Allowing concurrent object recognition and pose estimation for manipulation. - * - * \note This is an implementation of the GOOD descriptor which has been presented in the following papers: - * - * [1] Kasaei, S. Hamidreza, Ana Maria Tomé, Luís Seabra Lopes, Miguel Oliveira - * "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation." - * Pattern Recognition Letters 83 (2016): 312-320.http://dx.doi.org/10.1016/j.patrec.2016.07.006 - * - * [2] Kasaei, S. Hamidreza, Luís Seabra Lopes, Ana Maria Tomé, Miguel Oliveira - * "An orthographic descriptor for 3D object learning and recognition." - * 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Daejeon, 2016, - * pp. 4158-4163. doi: 10.1109/IROS.2016.7759612 - * - * Please adequately refer to this work any time this code is being used by citing above papers. - * If you do publish a paper where GOOD descriptor helped your research, we encourage you to cite the above papers in your publications. - * - * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt) - */ - - template - class GOODEstimation - { - public: - - /** \brief Empty Constructor. */ - GOODEstimation(); - - /** \brief Constructor. - * \param[in] number_of_bins_ - * \param[in] threshold_ - */ - GOODEstimation(unsigned int, float); - - /** \brief Empty destructor */ - virtual ~GOODEstimation () {} - - /** \brief Set the input cloud. - * \param[in] cloud the boost shared pointer to a point cloud. - */ - void - setInputCloud (boost::shared_ptr > cloud); - - /** \brief Sets GOOD descriptor resolution. - * \param[in] number_of_bins number of bins along one dimension; each projection plane is divided into number_of_bins × number_of_bins square bins. - * The three projection vectors will be concatenated producing a vector of dimension 3 × number_of_bins^2 which is the final object descriptor, GOOD. - */ - void - setNumberOfBins (unsigned int number_of_bins); - - /** \brief Set the threshold for local reference frame estimation */ - void - setThreshold (float threshold); - - /** \brief Estimate the GOOD descriptor at a set of points given by setInputCloud() - * \param[out] object_description the resultant GOOD descriptor representing the feature at the query point cloud - */ - void - compute (std::vector< float > &object_description ); - - /** \brief get three orthographic projections of a set of points given by setInputCloud() - * \param[out] vector_of_projected_views the resultant vector of point clouds that contains three orthographic projections of the query point cloud - */ - void - getOrthographicProjections (std::vector < boost::shared_ptr > > &vector_of_projected_views); - - /** \brief get objec point cloud in local reference frame constructed by the GOOD descriptor - * \param[out] transformed_point_cloud the resultant point cloud of the object in local reference frame - */ - void - getTransformedObject (boost::shared_ptr > &transformed_point_cloud); - - /** \brief get center of boundingbox of a set of points given by setInputCloud() in camera reference frame - * \param[out] center_of_bbox the resultant center of boundingbox - */ - void - getCenterOfObjectBoundingBox (pcl::PointXYZ ¢er_of_bbox); - - /** \brief get dimensions of bounding box of a set of points given by setInputCloud() - * \param[out] bbox_dimensions the resultant boundingbox dimensions - */ - void - getObjectBoundingBoxDimensions(pcl::PointXYZ &bbox_dimensions); - - /** \brief get the order of protection plans in constructing GOOD descriptor - * \param[out] order_of_projected_plane the resultant of order of projections - */ - void - getOrderOfProjectedPlanes(std::string &order_of_projected_plane); - - /** \brief get the transformation matrix from camera reference frame to object local reference frame - * \param[out] transformation the resultant transformation matrix - */ - void - getTransformationMatrix( Eigen::Matrix4f &transformation); - - private: - - unsigned int number_of_bins_; - float threshold_; - int sign_; - boost::shared_ptr > input_ ; - boost::shared_ptr > transformed_point_cloud_; - pcl::PointXYZ bbox_dimensions_; - pcl::PointXYZ center_of_bbox_; - std::vector < boost::shared_ptr > > vector_of_projected_views_; - std::string projections_ordered_; - std::string order_of_projected_plane_; - Eigen::Matrix4f transformation_; - - /** \brief get dimensions of bounding box of a given point cloud - * \param[in] pc the boost shared pointer to a point cloud. - * \param[out] dimensions the resultant boundingbox dimensions - */ - void - computeBoundingBoxDimensions (boost::shared_ptr > pc, pcl::PointXYZ& dimensions); - - /** \brief project point cloud to a plane - * \param[in] pc_in the boost shared pointer to a point cloud. - * \param[in] coefficients pcl::ModelCoefficients - * \param[out] pc_out the resultant projected point cloud - */ - void - projectPointCloudToPlane (boost::shared_ptr > pc_in, boost::shared_ptr coefficients, boost::shared_ptr > pc_out); - - /** \brief convert 2D histogram to 1D histogram - * \param[in] histogram_2D a 2D vector of unsigned int - * \param[out] histogram the resultant 1D vector of unsigned int - */ - void - convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram); - - /** \brief sign disambiguation of axis X - * \param[in] XoZ_projected_view the boost shared pointer to a point cloud. - * \param[in] threshold used to deal with the special case when a point is close to the YoZ plane - * \param[out] sign the resultant sign (either 1 or -1) - */ - void - signDisambiguationXAxis (boost::shared_ptr > XoZ_projected_view, float threshold, int &sign ); - - /** \brief sign disambiguation of axis Y - * \param[in] YoZ_projected_view the boost shared pointer to a point cloud. - * \param[in] threshold used to deal with the special case when a point is close to the XoZ plane - * \param[out] sign the resultant sign (either 1 or -1) - */ - void - signDisambiguationYAxis (boost::shared_ptr > YoZ_projected_view, float threshold, int &sign ); - - /** \brief create a 2D histogram from YOZ projection - * \param[in] YoZ_projected_view the boost shared pointer to a point cloud. - * \param[in] largest_side largest side of object bounding box - * \param[in] number_of_bins number of bins along one dimension; - * \param[in] sign either 1 or -1 - * \param[out] YOZ_histogram a 2D vector of unsigned int - */ - void - create2DHistogramFromYOZProjection (boost::shared_ptr > YOZ_projected_view, - double largest_side, unsigned int number_of_bins, int sign, std::vector < std::vector > &YOZ_histogram); - - /** \brief create a 2D histogram from XOZ projection - * \param[in] XoZ_projected_view the boost shared pointer to a point cloud. - * \param[in] largest_side largest side of object bounding box. - * \param[in] number_of_bins number of bins along one dimension. - * \param[in] sign either 1 or -1. - * \param[out] XOZ_histogram a 2D vector of unsigned int. - */ - void - create2DHistogramFromXOZProjection ( boost::shared_ptr > XOZ_projected_view, double largest_side, - unsigned int number_of_bins, int sign, std::vector < std::vector > &XOZ_histogram); - - /** \brief create a 2D histogram from XOY projection - * \param[in] XoY_projected_view the boost shared pointer to a point cloud. - * \param[in] largest_side largest side of object bounding box. - * \param[in] number_of_bins number of bins along one dimension. - * \param[in] sign either 1 or -1. - * \param[out] XOY_histogram a 2D vector of unsigned int. - */ - void - create2DHistogramFromXOYProjection (boost::shared_ptr > XOY_projected_view, double largest_side, - unsigned int number_of_bins, int sign, std::vector < std::vector > &XOY_histogram); - - /** \brief normalizing a 1D histogram - * \param[in] histogram 1D histogram (int). - * \param[out] normalized_histogram the resultant normalized_histogram (float). - */ - void - normalizingHistogram (std::vector histogram, std::vector &normalized_histogram); - - /** \brief compute viewpoint entropy used for concatenating projections - * \param[in] normalized_histogram normalized_histogram (float). - * \param[out] entropy the resultant view entropy. - */ - void - viewpointEntropy (std::vector normalized_histogram, float &entropy); - - /** \brief find max view point entropy used for concatenating projections - * \param[in] view_point_entropy a vector of float contains three view entropies. - * \param[out] index the resultant projection index. - */ - void - findMaxViewPointEntropy (std::vector view_point_entropy, int &index); - - /** \brief compute average of view point histograms - * \param[in] histogram1 normalized histogram of projection 1. - * \param[in] histogram2 normalized histogram of projection 2 - * \param[in] histogram3 normalized histogram of projection 3 - * \param[out] average the resultant average of three histograms. - */ - void - averageHistograms (std::vector< float> histogram1, std::vector< float> historam2, std::vector< float> historam3, std::vector< float> &average); - - /** \brief compute mean of a given histogram - * \param[in] histogram normalized histogram of projection. - * \param[out] mean the resultant mean. - */ - void - meanOfHistogram (std::vector< float> histogram, float &mean); - - /** \brief compute variance of a given histogram - * \param[in] histogram normalized histogram of projection. - * \param[in] mean mean of the given histogram. - * \param[out] mean the resultant mean. - */ - void - varianceOfHistogram (std::vector< float> histogram, float mean, float &variance); - - /** \brief concatinating three orthographic projections +/* + * Software License Agreement (BSD License) + * + * Point Cloud Library (PCL) - www.pointclouds.org + * Copyright (c) 2017-, Open Perception, Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the copyright holder(s) nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + + +#ifndef PCL_FEATURES_GOOD_H_ +#define PCL_FEATURES_GOOD_H_ + +#include +#include +#include + + +namespace pcl +{ +/** \brief GOOD: a Global Orthographic Object Descriptor for 3D object recognition and manipulation. + * GOOD descriptor has been designed to be robust, descriptive and efficient to compute and use. + * It has two outstanding characteristics: + * + * (1) Providing a good trade-off among : + * - descriptiveness, + * - robustness, + * - computation time, + * - memory usage. + * + * (2) Allowing concurrent object recognition and pose estimation for manipulation. + * + * \note This is an implementation of the GOOD descriptor which has been presented in the following papers: + * + * [1] Kasaei, S. Hamidreza, Ana Maria Tomé, Luís Seabra Lopes, Miguel Oliveira + * "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation." + * Pattern Recognition Letters 83 (2016): 312-320.http://dx.doi.org/10.1016/j.patrec.2016.07.006 + * + * [2] Kasaei, S. Hamidreza, Luís Seabra Lopes, Ana Maria Tomé, Miguel Oliveira + * "An orthographic descriptor for 3D object learning and recognition." + * 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Daejeon, 2016, + * pp. 4158-4163. doi: 10.1109/IROS.2016.7759612 + * + * Please adequately refer to this work any time this code is being used by citing above papers. + * If you do publish a paper where GOOD descriptor helped your research, we encourage you to cite the above papers in your publications. + * + * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt Kasaei.Hamidreza[at]gmail[dot]com ) + */ + + template + class PCL_EXPORTS GOODEstimation //: public Feature + { + public: + + typedef typename pcl::PointCloud::Ptr PointCloudIn; + //using PCLBase::input_; + + /** \brief Constructor. + * \param[in] number_of_bins_ number of bins along one dimension; each projection plane is divided into number_of_bins × number_of_bins square bins. + * The three projection vectors will be concatenated producing a vector of dimension 3 × number_of_bins^2 which is the final object descriptor, GOOD. + * \param[in] threshold_ threshold parameter is used in constructing local reference frame + */ + GOODEstimation (const unsigned int number_of_bins = 5, const float threshold = 0.0015) + { + number_of_bins_ = number_of_bins; + threshold_ = threshold; + }; + + + /** \brief Set the input cloud. + * \param[in] cloud pointer to a point cloud. + * \note: I will remove this function, whenever I can drive it from PCLBase and Feature + */ + void + setInputCloud (PointCloudIn cloud); + + /** \brief Sets GOOD descriptor resolution. + * \param[in] number_of_bins number of bins along one dimension; each projection plane is divided into number_of_bins × number_of_bins square bins. + * The three projection vectors will be concatenated producing a vector of dimension 3 × number_of_bins^2 which is the final object descriptor, GOOD. + */ + inline void + setNumberOfBins (const unsigned int number_of_bins) + { + number_of_bins_ = number_of_bins; + } + + /** \brief Returns the number_of_bins_ parameter. */ + inline unsigned int + getNumberOfBins () + { + return number_of_bins_; + } + + /** \brief Set the threshold param which is used for local reference frame construction + * \param[in] threshold threshold_ parameter + */ + inline void + setThreshold (const float threshold) + { + threshold_ = threshold; + } + + /** \brief Returns the number_of_bins_ parameter. */ + inline float + getThreshold () + { + return threshold_; + } + + /** \brief get three orthographic projections of a set of points given by setInputCloud() + * \param[out] vector_of_projected_views the resultant vector of point clouds that contains three orthographic projections of the query point cloud + */ + inline void + getOrthographicProjections (std::vector &vector_of_projected_views) const + { + vector_of_projected_views = vector_of_projected_views_; + } + + /** \brief get objec point cloud in local reference frame constructed by the GOOD descriptor + * \param[out] transformed_point_cloud the resultant point cloud of the object in local reference frame + */ + inline void + getTransformedObject (PointCloudIn &transformed_point_cloud) const + { + transformed_point_cloud = transformed_point_cloud_; + } + + /** \brief get center of boundingbox of a set of points given by setInputCloud() in camera reference frame + * \param[out] center_of_bbox the resultant center of boundingbox + */ + inline void + getCenterOfObjectBoundingBox (pcl::PointXYZ ¢er_of_bbox) const + { + center_of_bbox = center_of_bbox_; + } + + /** \brief get dimensions of bounding box of a set of points given by setInputCloud() + * \param[out] bbox_dimensions the resultant boundingbox dimensions + */ + inline void + getObjectBoundingBoxDimensions(pcl::PointXYZ &bbox_dimensions) const + { + bbox_dimensions = bbox_dimensions_; + } + + /** \brief get the order of protection plans in constructing GOOD descriptor + * \param[out] order_of_projected_plane the resultant of order of projections + */ + inline void + getOrderOfProjectedPlanes (std::string &order_of_projected_plane) const + { + order_of_projected_plane = order_of_projected_plane_; + } + + /** \brief get the transformation matrix from camera reference frame to object local reference frame + * \param[out] transformation the resultant transformation matrix + */ + inline void + getTransformationMatrix (Eigen::Matrix4f &transformation) const + { + transformation = transformation_; + } + + /** \brief Estimate the GOOD descriptor at a set of points given by setInputCloud() + * \param[out] object_description the resultant GOOD descriptor representing the feature at the query point cloud + */ + void + compute (std::vector &object_description ); + + private: + + /** \brief number of bins along one dimension; each projection plane is divided into number_of_bins × number_of_bins square bins. + * By default, the number_of_bins_ is set to 5. + */ + unsigned int number_of_bins_; + + /** \brief threshold parameter is used in constructing local reference frame. + * By default, the number_of_bins_ is set to 0.0015. + */ + float threshold_; + + /** \brief resultant of sign disambiguation can be either 1 or -1 */ + int sign_; + + /** \brief given point cloud*/ + PointCloudIn input_ ; + + /** \brief transformed point cloud in LRF */ + PointCloudIn transformed_point_cloud_; + + /** \brief get transformation matrix */ + Eigen::Matrix4f transformation_; + + /** \brief dimensions of boundingboxbox of given point cloud */ + pcl::PointXYZ bbox_dimensions_; + + /** \brief center of boundingboxbox of given point cloud */ + pcl::PointXYZ center_of_bbox_; + + /** \brief vector of three point clouds containing orthographic projection views */ + std::vector < PointCloudIn > vector_of_projected_views_; + + /** \brief get order of projection views e.g. XoY-XoZ-YoZ */ + std::string order_of_projected_plane_; + + + /** \brief get dimensions of bounding box of a given point cloud + * \param[in] pc pointer to a point cloud. + * \param[out] dimensions the resultant boundingbox dimensions + */ + void + computeBoundingBoxDimensions (PointCloudIn pc, pcl::PointXYZ &dimensions); + + /** \brief project point cloud to a plane + * \param[in] pc_in pointer to a point cloud. + * \param[in] coefficients pcl::ModelCoefficients + * \param[out] pc_out the resultant projected point cloud + */ + void + projectPointCloudToPlane (PointCloudIn pc_in, pcl::ModelCoefficients::Ptr coefficients, PointCloudIn pc_out); + + /** \brief convert 2D histogram to 1D histogram + * \param[in] histogram_2D a 2D vector of unsigned int + * \param[out] histogram the resultant 1D vector of unsigned int + */ + void + convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram); + + /** \brief sign disambiguation of axis X + * \param[in] XoZ_projected_view pointer to a point cloud. + * \param[in] threshold used to deal with the special case when a point is close to the YoZ plane + * \param[out] sign the resultant sign (either 1 or -1) + */ + void + signDisambiguationXAxis (PointCloudIn XoZ_projected_view, float threshold, int &sign ); + + /** \brief sign disambiguation of axis Y + * \param[in] YoZ_projected_view pointer to a point cloud. + * \param[in] threshold used to deal with the special case when a point is close to the XoZ plane + * \param[out] sign the resultant sign (either 1 or -1) + */ + void + signDisambiguationYAxis (PointCloudIn YoZ_projected_view, float threshold, int &sign ); + + /** \brief create a 2D histogram from YOZ projection + * \param[in] YoZ_projected_view pointer to a point cloud. + * \param[in] largest_side largest side of object bounding box + * \param[in] number_of_bins number of bins along one dimension; + * \param[in] sign either 1 or -1 + * \param[out] YOZ_histogram a 2D vector of unsigned int + */ + void + create2DHistogramFromYOZProjection (PointCloudIn YOZ_projected_view, double largest_side, unsigned int number_of_bins, + int sign, std::vector > &YOZ_histogram); + + /** \brief create a 2D histogram from XOZ projection + * \param[in] XoZ_projected_view pointer to a point cloud. + * \param[in] largest_side largest side of object bounding box. + * \param[in] number_of_bins number of bins along one dimension. + * \param[in] sign either 1 or -1. + * \param[out] XOZ_histogram a 2D vector of unsigned int. + */ + void + create2DHistogramFromXOZProjection ( PointCloudIn XOZ_projected_view, double largest_side, + unsigned int number_of_bins, int sign, std::vector < std::vector > &XOZ_histogram); + + /** \brief create a 2D histogram from XOY projection + * \param[in] XoY_projected_view pointer to a point cloud. + * \param[in] largest_side largest side of object bounding box. + * \param[in] number_of_bins number of bins along one dimension. + * \param[in] sign either 1 or -1. + * \param[out] XOY_histogram a 2D vector of unsigned int. + */ + void + create2DHistogramFromXOYProjection (PointCloudIn XOY_projected_view, double largest_side, + unsigned int number_of_bins, int sign, std::vector < std::vector > &XOY_histogram); + + /** \brief normalizing a 1D histogram + * \param[in] histogram 1D histogram (int). + * \param[out] normalized_histogram the resultant normalized_histogram (float). + */ + void + normalizingHistogram (std::vector histogram, std::vector &normalized_histogram); + + /** \brief compute viewpoint entropy used for concatenating projections + * \param[in] normalized_histogram normalized_histogram (float). + * \param[out] entropy the resultant view entropy. + */ + void + viewpointEntropy (std::vector normalized_histogram, float &entropy); + + /** \brief find max view point entropy used for concatenating projections + * \param[in] view_point_entropy a vector of float contains three view entropies. + * \param[out] index the resultant projection index. + */ + void + findMaxViewPointEntropy (std::vector view_point_entropy, int &index); + + /** \brief compute average of view point histograms + * \param[in] histogram1 normalized histogram of projection 1. + * \param[in] histogram2 normalized histogram of projection 2 + * \param[in] histogram3 normalized histogram of projection 3 + * \param[out] average the resultant average of three histograms. + */ + void + averageHistograms (std::vector histogram1, std::vector historam2, std::vector historam3, std::vector &average); + + /** \brief compute mean of a given histogram + * \param[in] histogram normalized histogram of projection. + * \param[out] mean the resultant mean. + */ + void + meanOfHistogram (std::vector histogram, float &mean); + + /** \brief compute variance of a given histogram + * \param[in] histogram normalized histogram of projection. + * \param[in] mean mean of the given histogram. + * \param[out] mean the resultant mean. + */ + void + varianceOfHistogram (std::vector histogram, float mean, float &variance); + + /** \brief concatinating three orthographic projections * three histograms are obtained for the projections; afterwards, two statistic features including entropy and variance have been calculated for each distribution vector; * the histograms are consequently concatenated together using entropy and variance features, to form a single description for the given object. The ordering of the three - * histograms is first by decreasing values of entropy. Afterwards the second and third vectors are sorted again by increasing values of variance. - * \param[in] maximum_entropy_index index of orthographic projection that has maximum entropy. - * \param[in] normalized_projected_views a vector of vector of float contains three normalized histogram of projected views - * \param[out] sorted_normalized_projected_views a vector of float representing the GOOD description for a set of points given by setInputCloud() - * \param[out] name_of_sorted_projected_plane an string represents the order of concatenating projections. - */ - void - objectViewHistogram (int maximum_entropy_index, std::vector< std::vector >normalized_projected_views, - std::vector< float> &sorted_normalized_projected_views, - std::string &name_of_sorted_projected_plane /*debug*/); - - /** \brief compute largest side of boundingbox - * \param[in] dimensions shows the dimention of boundingbox - * \param[out] largest_side the resultant largest side. - */ - void - computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ); - - /** \brief compute compute distance between two projections - * \param[in] projection1 2D histogram - * \param[in] projection2 2D histogram - * \param[out] largest_side the resultant distance. - */ - void - computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance); - - /** \brief initializing a 2D histogram with 0; This function creates a 2D vector with the size of [number_of_bins × number_of_bins] and initializes all elements with 0 value. - * \param[in] number_of_bins number of bin - * \param[out] a_2D_vector - */ - inline std::vector < std::vector > initializing2DHistogram (unsigned int number_of_bins); - - }; -} - -#ifdef PCL_NO_PRECOMPILE -#include -#endif - -#endif /* PCL_FEATURES_GOOD_H_ */ + * histograms is first by decreasing values of entropy. Afterwards the second and third vectors are sorted again by increasing values of variance. + * \param[in] maximum_entropy_index index of orthographic projection that has maximum entropy. + * \param[in] normalized_projected_views a vector of vector of float contains three normalized histogram of projected views + * \param[out] sorted_normalized_projected_views a vector of float representing the GOOD description for a set of points given by setInputCloud() + * \param[out] name_of_sorted_projected_plane an string represents the order of concatenating projections. + */ + void + objectViewHistogram (int maximum_entropy_index, std::vector > normalized_projected_views, + std::vector &sorted_normalized_projected_views, + std::string &name_of_sorted_projected_plane /*debug*/); + + /** \brief compute largest side of boundingbox + * \param[in] dimensions shows the dimention of boundingbox + * \param[out] largest_side the resultant largest side. + */ + void + computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ); + + /** \brief compute compute distance between two projections + * \param[in] projection1 2D histogram + * \param[in] projection2 2D histogram + * \param[out] largest_side the resultant distance. + */ + void + computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance); + + /** \brief initializing a 2D histogram with 0; This function creates a 2D vector with the size of [number_of_bins × number_of_bins] and initializes all elements with 0 value. + * \param[in] number_of_bins number of bin + * \param[out] a_2D_vector + */ + inline std::vector > initializing2DHistogram (unsigned int number_of_bins); + + }; +} + +#ifdef PCL_NO_PRECOMPILE +#include +#endif + +#endif /* PCL_FEATURES_GOOD_H_ */ diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index 1958eab4141..d5828db7301 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -2,8 +2,7 @@ * Software License Agreement (BSD License) * * Point Cloud Library (PCL) - www.pointclouds.org - * Copyright (c) 2009-2014, Willow Garage, Inc. - * Copyright (c) 2014-, Open Perception, Inc. + * Copyright (c) 2017-, Open Perception, Inc. * * All rights reserved. * @@ -34,7 +33,6 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * */ #ifndef PCL_FEATURES_IMPL_GOOD_H_ @@ -69,136 +67,57 @@ * Please adequately refer to this work any time this code is being used by citing above papers. * If you do publish a paper where GOOD descriptor helped your research, we encourage you to cite the above papers in your publications. * - * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt) + * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt Kasaei.Hamidreza[at]gmail[dot]com ) */ - -template -pcl::GOODEstimation::GOODEstimation() -{ - number_of_bins_ = 5; - threshold_ = 0.0015; -} - -template -pcl::GOODEstimation::GOODEstimation(unsigned int number_of_bins, float threshold) -{ - number_of_bins_ = number_of_bins; - threshold_ = threshold; -}; ////////////////////////////////////////////////////////////////////////////////////////////// - -/*______________________________ -| | -| Methods | -|_______________________________| */ template void -pcl::GOODEstimation::setInputCloud (boost::shared_ptr > cloud) +pcl::GOODEstimation::setInputCloud (PointCloudIn cloud) { input_ = cloud; }; ////////////////////////////////////////////////////////////////////////////////////////////// template -void -pcl::GOODEstimation::setNumberOfBins (unsigned int number_of_bins) -{ - number_of_bins_ = number_of_bins; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::setThreshold (float threshold) -{ - threshold_ = threshold; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::getOrthographicProjections (std::vector < boost::shared_ptr > > &vector_of_projected_views) -{ - vector_of_projected_views = vector_of_projected_views_; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::getTransformedObject (boost::shared_ptr > &transformed_point_cloud) -{ - transformed_point_cloud = transformed_point_cloud_; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::getCenterOfObjectBoundingBox (pcl::PointXYZ ¢er_of_bbox) -{ - center_of_bbox = center_of_bbox_; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::getObjectBoundingBoxDimensions(pcl::PointXYZ &bbox_dimensions) -{ - bbox_dimensions = bbox_dimensions_; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template void -pcl::GOODEstimation::getOrderOfProjectedPlanes(std::string &order_of_projected_plane) -{ - order_of_projected_plane = order_of_projected_plane_; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::getTransformationMatrix( Eigen::Matrix4f &transformation) -{ - transformation = transformation_; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::computeBoundingBoxDimensions (boost::shared_ptr > pc, pcl::PointXYZ& dimensions) +pcl::GOODEstimation::computeBoundingBoxDimensions (PointCloudIn pc, pcl::PointXYZ& dimensions) { PointInT minimum_pt; PointInT maximum_pt; - pcl::getMinMax3D(*pc, minimum_pt, maximum_pt); // min max for bounding box + + pcl::getMinMax3D (*pc, minimum_pt, maximum_pt); // min max for bounding box dimensions.x = (maximum_pt.x - minimum_pt.x); dimensions.y = (maximum_pt.y - minimum_pt.y); dimensions.z = (maximum_pt.z - minimum_pt.z); + //NOTE: I changed the above lines as follow, but I faced several error. + //dimensions = maximum_pt.getVector3fMap () - minimum_pt.getVector3fMap (); + } ////////////////////////////////////////////////////////////////////////////////////////////// template void -pcl::GOODEstimation::projectPointCloudToPlane (boost::shared_ptr > pc_in, boost::shared_ptr coefficients, boost::shared_ptr > pc_out) +pcl::GOODEstimation::projectPointCloudToPlane (PointCloudIn pc_in, boost::shared_ptr coefficients, PointCloudIn pc_out) { //Create the projection object pcl::ProjectInliers projection; - projection.setModelType(pcl::SACMODEL_NORMAL_PLANE); //set model type - projection.setInputCloud(pc_in); - projection.setModelCoefficients(coefficients); - projection.filter(*pc_out); + projection.setModelType (pcl::SACMODEL_NORMAL_PLANE); //set model type + projection.setInputCloud (pc_in); + projection.setModelCoefficients (coefficients); + projection.filter (*pc_out); } ////////////////////////////////////////////////////////////////////////////////////////////// template void -pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram) +pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram) { - for (size_t i=0 ; i < histogram_2D.size(); i++) + for (size_t i = 0 ; i < histogram_2D.size(); i++) { - for (size_t j=0; j < histogram_2D.at(i).size(); j++) + for (size_t j = 0; j < histogram_2D.at(i).size(); j++) { - histogram.push_back(histogram_2D.at(i).at(j)); + histogram.push_back (histogram_2D.at(i).at(j)); } } } @@ -206,14 +125,14 @@ pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector void -pcl::GOODEstimation::signDisambiguationXAxis (boost::shared_ptr > XoZ_projected_view, float threshold, int &sign ) +pcl::GOODEstimation::signDisambiguationXAxis (PointCloudIn XoZ_projected_view, float threshold, int &sign ) { - int Xpositive =0; - int Xnegative =0; - int threshold_overall = trunc (XoZ_projected_view -> points.size()/10); + unsigned Xpositive = 0; + unsigned Xnegative = 0; + unsigned threshold_overall = trunc (XoZ_projected_view -> points.size() / 10); //XoZ page - for (size_t i=0; i< XoZ_projected_view -> points.size(); i++) + for (size_t i = 0; i < XoZ_projected_view -> points.size(); i++) { if (XoZ_projected_view->points.at(i).x > threshold) { @@ -237,13 +156,13 @@ pcl::GOODEstimation::signDisambiguationXAxis (boost::shared_ptr void -pcl::GOODEstimation::signDisambiguationYAxis (boost::shared_ptr > YoZ_projected_view, float threshold, int &sign ) +pcl::GOODEstimation::signDisambiguationYAxis (PointCloudIn YoZ_projected_view, float threshold, int &sign ) { - int Ypositive =0; - int Ynegative =0; - int threshold_overall = trunc (YoZ_projected_view -> points.size()/10); + unsigned int Ypositive =0; + unsigned int Ynegative =0; + unsigned int threshold_overall = trunc (YoZ_projected_view -> points.size() / 10); //YoZ page - for (size_t i=0; i < YoZ_projected_view -> points.size(); i++) + for (size_t i = 0; i < YoZ_projected_view -> points.size(); i++) { if (YoZ_projected_view->points.at(i).y > threshold) { @@ -268,17 +187,17 @@ pcl::GOODEstimation::signDisambiguationYAxis (boost::shared_ptr void -pcl::GOODEstimation::create2DHistogramFromYOZProjection (boost::shared_ptr > YOZ_projected_view, - double largest_side, unsigned int number_of_bins, int sign, std::vector < std::vector > &YOZ_histogram) +pcl::GOODEstimation::create2DHistogramFromYOZProjection (PointCloudIn YOZ_projected_view, + double largest_side, unsigned int number_of_bins, int sign, std::vector > &YOZ_histogram) { - double y = largest_side/2; - double z = largest_side/2; - double interval_y = largest_side/number_of_bins; - double interval_z = largest_side/number_of_bins; - for (size_t i=0; i < YOZ_projected_view-> points.size(); i++) + double y = largest_side / 2; + double z = largest_side / 2; + double interval_y = largest_side / number_of_bins; + double interval_z = largest_side / number_of_bins; + for (size_t i=0; i < YOZ_projected_view->points.size(); i++) { pcl::PointXYZ p; - p.y = sign * YOZ_projected_view->points.at(i).y + y; + p.y = sign * YOZ_projected_view->points.at(i).y + y; p.z = YOZ_projected_view ->points.at(i).z + z; //if adaptive_support_lenght parameter == false, some points might be projected outside of the plane, we must discard them. @@ -293,21 +212,21 @@ pcl::GOODEstimation::create2DHistogramFromYOZProjection (boost::shared template void -pcl::GOODEstimation::create2DHistogramFromXOZProjection ( boost::shared_ptr > XOZ_projected_view, double largest_side, - unsigned int number_of_bins, int sign, std::vector < std::vector > &XOZ_histogram) +pcl::GOODEstimation::create2DHistogramFromXOZProjection (PointCloudIn XOZ_projected_view, double largest_side, + unsigned int number_of_bins, int sign, std::vector > &XOZ_histogram) { - double x = largest_side/2; - double z = largest_side/2; - double interval_x = largest_side/number_of_bins; - double interval_z = largest_side/number_of_bins; - for (size_t i=0; i < XOZ_projected_view-> points.size(); i++) + double x = largest_side / 2; + double z = largest_side / 2; + double interval_x = largest_side / number_of_bins; + double interval_z = largest_side / number_of_bins; + for (size_t i = 0; i < XOZ_projected_view->points.size(); i++) { pcl::PointXYZ p; - p.x =sign * XOZ_projected_view->points.at(i).x + x; - p.z = XOZ_projected_view ->points.at(i).z + z; + p.x = sign * XOZ_projected_view->points.at(i).x + x; + p.z = XOZ_projected_view->points.at(i).z + z; if ((trunc(p.x / interval_x) < XOZ_histogram.size()) and (trunc(p.z / interval_z) < XOZ_histogram.at(0).size()) - and (trunc(p.x / interval_x) >=0) and (trunc(p.z / interval_z) >=0)) + and (trunc(p.x / interval_x) >= 0) and (trunc(p.z / interval_z) >= 0)) { XOZ_histogram.at(trunc(p.x / interval_x)).at(trunc(p.z / interval_z))++; } @@ -317,20 +236,20 @@ pcl::GOODEstimation::create2DHistogramFromXOZProjection ( boost::share template void -pcl::GOODEstimation::create2DHistogramFromXOYProjection (boost::shared_ptr > XOY_projected_view, double largest_side, - unsigned int number_of_bins, int sign, std::vector < std::vector > &XOY_histogram) +pcl::GOODEstimation::create2DHistogramFromXOYProjection (PointCloudIn XOY_projected_view, double largest_side, + unsigned int number_of_bins, int sign, std::vector > &XOY_histogram) { - double x = largest_side/2; - double y = largest_side/2; - double interval_x = largest_side/number_of_bins; - double interval_y = largest_side/number_of_bins; - for (size_t i=0; i < XOY_projected_view-> points.size(); i++) + double x = largest_side / 2; + double y = largest_side / 2; + double interval_x = largest_side / number_of_bins; + double interval_y = largest_side / number_of_bins; + for (size_t i = 0; i < XOY_projected_view->points.size(); i++) { pcl::PointXYZ p; p.x = sign * XOY_projected_view->points.at(i).x + x; p.y = sign * XOY_projected_view->points.at(i).y + y; - if ((trunc(p.x / interval_x) < XOY_histogram.size()) and (trunc(p.y / interval_y) < XOY_histogram.at(0).size())and - (trunc(p.x / interval_x) >= 0) and (trunc(p.y / interval_y) >=0)) + if ((trunc(p.x / interval_x) < XOY_histogram.size()) and (trunc(p.y / interval_y) < XOY_histogram.at(0).size()) and + (trunc(p.x / interval_x) >= 0) and (trunc(p.y / interval_y) >= 0)) { XOY_histogram.at(trunc(p.x / interval_x)).at(trunc(p.y / interval_y))++; } @@ -340,7 +259,7 @@ pcl::GOODEstimation::create2DHistogramFromXOYProjection (boost::shared template void -pcl::GOODEstimation::normalizingHistogram (std::vector histogram, std::vector &normalized_histogram) +pcl::GOODEstimation::normalizingHistogram (std::vector histogram, std::vector &normalized_histogram) { int sum_all_bins = 0; //compute sumation of all histogram's bins. @@ -352,7 +271,7 @@ pcl::GOODEstimation::normalizingHistogram (std::vector { for(std::vector::iterator it = histogram.begin(); it != histogram.end(); ++it) { - normalized_histogram.push_back(*it/ float (sum_all_bins)); + normalized_histogram.push_back (*it / float (sum_all_bins)); } } } @@ -360,7 +279,7 @@ pcl::GOODEstimation::normalizingHistogram (std::vector template void -pcl::GOODEstimation::viewpointEntropy (std::vector normalized_histogram, float &entropy) +pcl::GOODEstimation::viewpointEntropy (std::vector normalized_histogram, float &entropy) { //http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform entropy =0; @@ -368,7 +287,7 @@ pcl::GOODEstimation::viewpointEntropy (std::vector normalized_ { if (*it != 0) { - float entropy_tmp = *it * log2(*it); + float entropy_tmp = *it * log2 (*it); entropy += entropy_tmp; } } @@ -382,32 +301,32 @@ pcl::GOODEstimation::findMaxViewPointEntropy (std::vector view { index = 0; std::vector::iterator it; - it=std::max_element(view_point_entropy.begin(),view_point_entropy.end()); - index = it - view_point_entropy.begin(); + it=std::max_element (view_point_entropy.begin(), view_point_entropy.end()); + index = it - view_point_entropy.begin (); //std::cout << "\nindex ="<< it - view_point_entropy.begin() <<"\t , content = " << *it <<"\n"; } ////////////////////////////////////////////////////////////////////////////////////////////// template void -pcl::GOODEstimation::averageHistograms (std::vector< float> histogram1, std::vector< float> historam2, std::vector< float> historam3, std::vector< float> &average) +pcl::GOODEstimation::averageHistograms (std::vector histogram1, std::vector historam2, std::vector historam3, std::vector &average) { - for (size_t i=0; i void -pcl::GOODEstimation::meanOfHistogram (std::vector< float> histogram, float &mean) +pcl::GOODEstimation::meanOfHistogram (std::vector histogram, float &mean) { // http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm float mu = 0; for (size_t i = 0; i < histogram.size(); i++) { - mu += (i+1)*histogram.at(i); + mu += (i+1) * histogram.at(i); } mean = mu; } @@ -415,14 +334,14 @@ pcl::GOODEstimation::meanOfHistogram (std::vector< float> histogram, f template void -pcl::GOODEstimation::varianceOfHistogram (std::vector< float> histogram, float mean, float &variance) +pcl::GOODEstimation::varianceOfHistogram (std::vector histogram, float mean, float &variance) { //https://people.richland.edu/james/lecture/m170/ch06-prb.html //http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm float variance_tmp = 0; for (size_t i = 0; i < histogram.size(); i++) { - variance_tmp += pow((i+1)-mean,2)*histogram.at(i); + variance_tmp += pow ((i+1)-mean , 2) * histogram.at(i); } variance = variance_tmp; } @@ -430,15 +349,15 @@ pcl::GOODEstimation::varianceOfHistogram (std::vector< float> histogra template void -pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, std::vector< std::vector >normalized_projected_views, - std::vector< float> &sorted_normalized_projected_views, +pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, std::vector > normalized_projected_views, + std::vector &sorted_normalized_projected_views, std::string &name_of_sorted_projected_plane /*debug*/) { float variance1 = 0; float variance2 = 0; - float mean =0; + float mean = 0; - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(maximum_entropy_index).begin(), + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(maximum_entropy_index).begin(), normalized_projected_views.at(maximum_entropy_index).end()); switch (maximum_entropy_index) @@ -446,64 +365,64 @@ pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, s case 0 : name_of_sorted_projected_plane += "YoZ - "; - meanOfHistogram(normalized_projected_views.at(1), mean); - varianceOfHistogram(normalized_projected_views.at(1), mean, variance1); - meanOfHistogram(normalized_projected_views.at(2), mean); - varianceOfHistogram(normalized_projected_views.at(2), mean, variance2); + meanOfHistogram (normalized_projected_views.at(1), mean); + varianceOfHistogram (normalized_projected_views.at(1), mean, variance1); + meanOfHistogram (normalized_projected_views.at(2), mean); + varianceOfHistogram (normalized_projected_views.at(2), mean, variance2); if (variance1 <= variance2) { name_of_sorted_projected_plane += "XoZ - XoY "; - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); } else { name_of_sorted_projected_plane += "XoY - XoZ "; - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); } break; case 1 : name_of_sorted_projected_plane += "XoZ - "; - meanOfHistogram(normalized_projected_views.at(0), mean); - varianceOfHistogram(normalized_projected_views.at(0), mean, variance1); - meanOfHistogram(normalized_projected_views.at(2), mean); - varianceOfHistogram(normalized_projected_views.at(2), mean, variance2); + meanOfHistogram (normalized_projected_views.at(0), mean); + varianceOfHistogram (normalized_projected_views.at(0), mean, variance1); + meanOfHistogram (normalized_projected_views.at(2), mean); + varianceOfHistogram (normalized_projected_views.at(2), mean, variance2); if (variance1 <= variance2) { name_of_sorted_projected_plane += "YoZ - XoY "; - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(),normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); } else { name_of_sorted_projected_plane += "XoY - YoZ "; - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); } break; case 2 : name_of_sorted_projected_plane += "XoY - "; - meanOfHistogram(normalized_projected_views.at(0), mean); - varianceOfHistogram(normalized_projected_views.at(0), mean, variance1); - meanOfHistogram(normalized_projected_views.at(1), mean); - varianceOfHistogram(normalized_projected_views.at(1), mean, variance2); + meanOfHistogram (normalized_projected_views.at(0), mean); + varianceOfHistogram (normalized_projected_views.at(0), mean, variance1); + meanOfHistogram (normalized_projected_views.at(1), mean); + varianceOfHistogram (normalized_projected_views.at(1), mean, variance2); if (variance1 <= variance2) { name_of_sorted_projected_plane += "YoZ - XoZ "; - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(),normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); } else { name_of_sorted_projected_plane += "XoZ - YoZ "; - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(), normalized_projected_views.at(1).end()); - sorted_normalized_projected_views.insert ( sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(), normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(), normalized_projected_views.at(1).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(), normalized_projected_views.at(0).end()); } break; @@ -521,47 +440,47 @@ pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ di tmp.push_back (dimensions.x); tmp.push_back (dimensions.y); tmp.push_back (dimensions.z); std::vector::iterator it; it=std::max_element(tmp.begin(),tmp.end()); - largest_side=*it; + largest_side = *it; largest_side += 0.02; } ////////////////////////////////////////////////////////////////////////////////////////////// template void -pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance) +pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance) { float sum = 0 ; - for (size_t i =0; i < projection1.size(); i++) - { for (size_t j =0; j < projection1.size(); j++) + for (size_t i = 0; i < projection1.size(); i++) + { for (size_t j = 0; j < projection1.size(); j++) { float d = projection1.at(i).at(j) - projection2.at(i).at(j); - sum += pow(d,2); + sum += pow (d, 2); } } - distance = sqrt(sum); + distance = sqrt (sum); } ////////////////////////////////////////////////////////////////////////////////////////////// template -inline std::vector < std::vector > pcl::GOODEstimation::initializing2DHistogram (unsigned int number_of_bins) +inline std::vector > pcl::GOODEstimation::initializing2DHistogram (unsigned int number_of_bins) { - std::vector row( number_of_bins, 0); - std::vector < std::vector > histogram2D(number_of_bins, row); + std::vector row (number_of_bins, 0); + std::vector > histogram2D (number_of_bins, row); return histogram2D; } ////////////////////////////////////////////////////////////////////////////////////////////// template void -pcl::GOODEstimation::compute (std::vector< float > &object_description ) +pcl::GOODEstimation::compute (std::vector &object_description ) { double largest_side = 0; int sign = 1; std::vector view_point_entropy; std::string name_of_sorted_projected_plane; - boost::shared_ptr > initial_cloud_projection_along_x_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud - boost::shared_ptr > initial_cloud_projection_along_y_axis(new pcl::PointCloud);//Declare a boost share ptr to the pointCloud - boost::shared_ptr > initial_cloud_projection_along_z_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + PointCloudIn initial_cloud_projection_along_x_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + PointCloudIn initial_cloud_projection_along_y_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + PointCloudIn initial_cloud_projection_along_z_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud pcl::PointXYZ pt; /* __________________________ @@ -580,10 +499,10 @@ pcl::GOODEstimation::compute (std::vector< float > &object_description // compute principal directions Eigen::Vector4f centroid; - pcl::compute3DCentroid(*input_, centroid); + pcl::compute3DCentroid (*input_, centroid); Eigen::Matrix3f covariance; - computeCovarianceMatrixNormalized(*input_, centroid, covariance); - Eigen::SelfAdjointEigenSolver eigen_solver(covariance, Eigen::ComputeEigenvectors); + computeCovarianceMatrixNormalized (*input_, centroid, covariance); + Eigen::SelfAdjointEigenSolver eigen_solver (covariance, Eigen::ComputeEigenvectors); Eigen::Matrix3f eigen_vectors = eigen_solver.eigenvectors(); eigen_vectors.col(2) = eigen_vectors.col(0).cross(eigen_vectors.col(1)); //std::cout << "eigen vectores : \n " << eigen_vectors << std::endl; @@ -592,31 +511,31 @@ pcl::GOODEstimation::compute (std::vector< float > &object_description //std::cout << "The eigenvalues of the covariance matrix before sorting are \n:" << eigen_values << endl; //sorting eigen vectors based on eigen values - eigen_vectors.col(0)= eigen_vectors.col(2); - eigen_vectors.col(2) = eigen_vectors.col(0).cross(eigen_vectors.col(1)); + eigen_vectors.col(0) = eigen_vectors.col(2); + eigen_vectors.col(2) = eigen_vectors.col(0).cross (eigen_vectors.col(1)); //std::cout << "eigen vectores cross product : \n " << eigen_vectors << std::endl; // move the points to the PCA based reference frame - Eigen::Matrix4f p2w(Eigen::Matrix4f::Identity()); + Eigen::Matrix4f p2w (Eigen::Matrix4f::Identity()); p2w.block<3,3>(0,0) = eigen_vectors.transpose(); p2w.block<3,1>(0,3) = -1.f * (p2w.block<3,3>(0,0) * centroid.head<3>()); transformation_ = p2w; - boost::shared_ptr > transformed_point_cloud (new pcl::PointCloud); - pcl::transformPointCloud(*input_, *transformed_point_cloud, p2w); + PointCloudIn transformed_point_cloud (new pcl::PointCloud); + pcl::transformPointCloud (*input_, *transformed_point_cloud, p2w); transformed_point_cloud_ = transformed_point_cloud; //compute the max, the min and the center of the diagonal (mean_diag) PointInT min_pt, max_pt; - pcl::getMinMax3D(*transformed_point_cloud_, min_pt, max_pt); - const Eigen::Vector3f mean_diag = 0.5f*(max_pt.getVector3fMap() + min_pt.getVector3fMap()); + pcl::getMinMax3D (*transformed_point_cloud_, min_pt, max_pt); + const Eigen::Vector3f mean_diag = 0.5f * (max_pt.getVector3fMap() + min_pt.getVector3fMap()); // centroid transform - Eigen::Quaternionf qfinal(eigen_vectors);//rotation matrix + Eigen::Quaternionf qfinal (eigen_vectors);//rotation matrix Eigen::Vector3f center_of_bbox = eigen_vectors*mean_diag + centroid.head<3>(); // Translation = Rotation * center_diag + (c0, c1, c2) center_of_bbox_.x = center_of_bbox(0,0); center_of_bbox_.y = center_of_bbox(1,0); center_of_bbox_.z = center_of_bbox(2,0); /* _________________________________ - | | + | | | construct three projection view | |_________________________________| */ @@ -624,44 +543,44 @@ pcl::GOODEstimation::compute (std::vector< float > &object_description pcl::ModelCoefficients::Ptr coefficients_x (new pcl::ModelCoefficients ()); coefficients_x->values.resize (4); coefficients_x->values[0] = 1.0; coefficients_x->values[1] = 0; coefficients_x->values[2] = 0; coefficients_x->values[3] = 0; - projectPointCloudToPlane(transformed_point_cloud_, coefficients_x, initial_cloud_projection_along_x_axis); - for (size_t i=0; i< initial_cloud_projection_along_x_axis->points.size(); i++) + projectPointCloudToPlane (transformed_point_cloud_, coefficients_x, initial_cloud_projection_along_x_axis); + for (size_t i = 0; i < initial_cloud_projection_along_x_axis->points.size(); i++) { initial_cloud_projection_along_x_axis->points.at(i).x = 0.25; } - vector_of_projected_views_.push_back(initial_cloud_projection_along_x_axis); + vector_of_projected_views_.push_back (initial_cloud_projection_along_x_axis); //ax+by+cz+d=0, where a=c=d=0, and b=1, or said differently, the XoZ plane. pcl::ModelCoefficients::Ptr coefficients_y (new pcl::ModelCoefficients ()); coefficients_y->values.resize (4); coefficients_y->values[0] = 0.0; coefficients_y->values[1] = 1.0; coefficients_y->values[2] = 0; coefficients_y->values[3] = 0; - projectPointCloudToPlane(transformed_point_cloud_, coefficients_y, initial_cloud_projection_along_y_axis); - for (size_t i=0; i< initial_cloud_projection_along_y_axis->points.size(); i++) + projectPointCloudToPlane (transformed_point_cloud_, coefficients_y, initial_cloud_projection_along_y_axis); + for (size_t i = 0; i < initial_cloud_projection_along_y_axis->points.size(); i++) { initial_cloud_projection_along_y_axis->points.at(i).y = 0.3; } - vector_of_projected_views_.push_back(initial_cloud_projection_along_y_axis); + vector_of_projected_views_.push_back (initial_cloud_projection_along_y_axis); // ax+by+cz+d=0, where a=b=d=0, and c=1, or said differently, the XoY plane. pcl::ModelCoefficients::Ptr coefficients_z (new pcl::ModelCoefficients ()); coefficients_z->values.resize (4); coefficients_z->values[0] = 0; coefficients_z->values[1] = 0; coefficients_z->values[2] = 1.0; coefficients_z->values[3] = 0; - projectPointCloudToPlane(transformed_point_cloud_, coefficients_z, initial_cloud_projection_along_z_axis); - for (size_t i=0; i< initial_cloud_projection_along_z_axis->points.size(); i++) + projectPointCloudToPlane (transformed_point_cloud_, coefficients_z, initial_cloud_projection_along_z_axis); + for (size_t i = 0; i < initial_cloud_projection_along_z_axis->points.size(); i++) { initial_cloud_projection_along_z_axis->points.at(i).z = 0.3; } - vector_of_projected_views_.push_back(initial_cloud_projection_along_z_axis); + vector_of_projected_views_.push_back (initial_cloud_projection_along_z_axis); /* _________________________ | | | Axes sign disambiguation | |___________________________| */ - computeBoundingBoxDimensions(transformed_point_cloud_, bbox_dimensions_); - computeLargestSideOfBoundingBox(bbox_dimensions_ ,largest_side); + computeBoundingBoxDimensions (transformed_point_cloud_, bbox_dimensions_); + computeLargestSideOfBoundingBox (bbox_dimensions_ ,largest_side); /* _________________________ | | @@ -669,80 +588,79 @@ pcl::GOODEstimation::compute (std::vector< float > &object_description |___________________________| */ int Sx=1, Sy=1; - signDisambiguationXAxis(initial_cloud_projection_along_y_axis, threshold_, Sx );//XoZ Plane - signDisambiguationYAxis(initial_cloud_projection_along_x_axis, threshold_, Sy );//YoZ Plane + signDisambiguationXAxis (initial_cloud_projection_along_y_axis, threshold_, Sx );//XoZ Plane + signDisambiguationYAxis (initial_cloud_projection_along_x_axis, threshold_, Sy );//YoZ Plane sign = Sx * Sy; sign_=sign; /* _______________________________________________________ - | | + | | | compute histograms of projection of the given object | |_________________________________________________________| */ - std::vector complete_object_histogram; - std::vector complete_object_histogram_normalized;//each projection view is normalized sepreatly - std::vector < std::vector > XOY_histogram = initializing2DHistogram(number_of_bins_); - std::vector < std::vector > XOZ_histogram = initializing2DHistogram(number_of_bins_); - std::vector < std::vector > YOZ_histogram = initializing2DHistogram(number_of_bins_); + std::vector complete_object_histogram; + std::vector complete_object_histogram_normalized;//each projection view is normalized sepreatly + std::vector > XOY_histogram = initializing2DHistogram (number_of_bins_); + std::vector > XOZ_histogram = initializing2DHistogram (number_of_bins_); + std::vector > YOZ_histogram = initializing2DHistogram (number_of_bins_); - std::vector > normalized_projected_views; + std::vector > normalized_projected_views; //projection along X axis - create2DHistogramFromYOZProjection( initial_cloud_projection_along_x_axis, largest_side, number_of_bins_, sign,YOZ_histogram); - - std::vector histogramYOZ1D; - convert2DHistogramTo1DHistogram(YOZ_histogram, histogramYOZ1D); - complete_object_histogram.insert(complete_object_histogram.end(), histogramYOZ1D.begin(), histogramYOZ1D.end()); - std::vector normalized_histogramYoZ; - normalizingHistogram( histogramYOZ1D, normalized_histogramYoZ); - normalized_projected_views.push_back(normalized_histogramYoZ); + create2DHistogramFromYOZProjection (initial_cloud_projection_along_x_axis, largest_side, number_of_bins_, sign,YOZ_histogram); + + std::vector histogramYOZ1D; + convert2DHistogramTo1DHistogram (YOZ_histogram, histogramYOZ1D); + complete_object_histogram.insert (complete_object_histogram.end(), histogramYOZ1D.begin(), histogramYOZ1D.end()); + std::vector normalized_histogramYoZ; + normalizingHistogram (histogramYOZ1D, normalized_histogramYoZ); + normalized_projected_views.push_back (normalized_histogramYoZ); - complete_object_histogram_normalized.insert(complete_object_histogram_normalized.end(), normalized_histogramYoZ.begin(), normalized_histogramYoZ.end()); + complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramYoZ.begin(), normalized_histogramYoZ.end()); float YoZ_entropy = 0; - viewpointEntropy(normalized_histogramYoZ, YoZ_entropy); + viewpointEntropy (normalized_histogramYoZ, YoZ_entropy); //viewpointEntropyNotNormalized(histogramYOZ1D, YoZ_entropy); - view_point_entropy.push_back(YoZ_entropy); + view_point_entropy.push_back (YoZ_entropy); //projection along Y axis - create2DHistogramFromXOZProjection( initial_cloud_projection_along_y_axis,largest_side, number_of_bins_, sign,XOZ_histogram); + create2DHistogramFromXOZProjection (initial_cloud_projection_along_y_axis, largest_side, number_of_bins_, sign,XOZ_histogram); - std::vector histogramXOZ1D; - convert2DHistogramTo1DHistogram(XOZ_histogram, histogramXOZ1D); - complete_object_histogram.insert(complete_object_histogram.end(), histogramXOZ1D.begin(), histogramXOZ1D.end()); + std::vector histogramXOZ1D; + convert2DHistogramTo1DHistogram (XOZ_histogram, histogramXOZ1D); + complete_object_histogram.insert (complete_object_histogram.end(), histogramXOZ1D.begin(), histogramXOZ1D.end()); - std::vector normalized_histogramXoZ; - normalizingHistogram( histogramXOZ1D, normalized_histogramXoZ); - normalized_projected_views.push_back(normalized_histogramXoZ); + std::vector normalized_histogramXoZ; + normalizingHistogram (histogramXOZ1D, normalized_histogramXoZ); + normalized_projected_views.push_back (normalized_histogramXoZ); - complete_object_histogram_normalized.insert(complete_object_histogram_normalized.end(), normalized_histogramXoZ.begin(), normalized_histogramXoZ.end()); + complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoZ.begin(), normalized_histogramXoZ.end()); float XoZ_entropy = 0; - viewpointEntropy(normalized_histogramXoZ, XoZ_entropy); - view_point_entropy.push_back(XoZ_entropy); + viewpointEntropy (normalized_histogramXoZ, XoZ_entropy); + view_point_entropy.push_back (XoZ_entropy); //projection along Z axis - create2DHistogramFromXOYProjection( initial_cloud_projection_along_z_axis, largest_side, number_of_bins_, sign, XOY_histogram); + create2DHistogramFromXOYProjection (initial_cloud_projection_along_z_axis, largest_side, number_of_bins_, sign, XOY_histogram); - std::vector histogramXOY1D; - convert2DHistogramTo1DHistogram(XOY_histogram, histogramXOY1D); - complete_object_histogram.insert(complete_object_histogram.end(), histogramXOY1D.begin(), histogramXOY1D.end()); + std::vector histogramXOY1D; + convert2DHistogramTo1DHistogram (XOY_histogram, histogramXOY1D); + complete_object_histogram.insert (complete_object_histogram.end(), histogramXOY1D.begin(), histogramXOY1D.end()); - std::vector normalized_histogramXoY; - normalizingHistogram( histogramXOY1D, normalized_histogramXoY); - normalized_projected_views.push_back(normalized_histogramXoY); + std::vector normalized_histogramXoY; + normalizingHistogram (histogramXOY1D, normalized_histogramXoY); + normalized_projected_views.push_back (normalized_histogramXoY); - complete_object_histogram_normalized.insert(complete_object_histogram_normalized.end(), normalized_histogramXoY.begin(), normalized_histogramXoY.end()); + complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoY.begin(), normalized_histogramXoY.end()); float XoY_entropy = 0; - viewpointEntropy(normalized_histogramXoY, XoY_entropy); - view_point_entropy.push_back(XoY_entropy); + viewpointEntropy (normalized_histogramXoY, XoY_entropy); + view_point_entropy.push_back (XoY_entropy); - std::vector normalized_histogram; - normalizingHistogram( complete_object_histogram, normalized_histogram); + std::vector normalized_histogram; + normalizingHistogram (complete_object_histogram, normalized_histogram); int maximum_entropy_index = 0; - findMaxViewPointEntropy(view_point_entropy, maximum_entropy_index); + findMaxViewPointEntropy (view_point_entropy, maximum_entropy_index); - objectViewHistogram( maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); - order_of_projected_plane_ = name_of_sorted_projected_plane; - + objectViewHistogram (maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); + order_of_projected_plane_ = name_of_sorted_projected_plane; } #define PCL_INSTANTIATE_GOODEstimation(T) template class PCL_EXPORTS pcl::GOODEstimation; diff --git a/features/src/good.cpp b/features/src/good.cpp index 40c43520301..45695b21422 100644 --- a/features/src/good.cpp +++ b/features/src/good.cpp @@ -2,8 +2,7 @@ * Software License Agreement (BSD License) * * Point Cloud Library (PCL) - www.pointclouds.org - * Copyright (c) 2010-2012, Willow Garage, Inc. - * Copyright (c) 2012-, Open Perception, Inc. + * Copyright (c) 2017-, Open Perception, Inc. * * All rights reserved. * From 184a3ed347fe88acf430ef2b61fb5d690ab19ae1 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Fri, 30 Jun 2017 10:58:04 +0100 Subject: [PATCH 08/24] it does not compile, just committed for your revision --- examples/features/example_good_descriptor.cpp | 13 +-- features/include/pcl/features/good.h | 52 ++++----- features/include/pcl/features/impl/good.hpp | 103 ++++++++++-------- features/src/good.cpp | 7 +- 4 files changed, 93 insertions(+), 82 deletions(-) diff --git a/examples/features/example_good_descriptor.cpp b/examples/features/example_good_descriptor.cpp index 6a6576370e0..1cdcd0a4d0c 100644 --- a/examples/features/example_good_descriptor.cpp +++ b/examples/features/example_good_descriptor.cpp @@ -91,7 +91,6 @@ int main(int argc, char* argv[]) return -1; } - std::vector object_description; std::vector vector_of_projected_views; PointCloudIn transformed_object (new pcl::PointCloud); @@ -102,20 +101,20 @@ int main(int argc, char* argv[]) // Setup the GOOD descriptor // GOOD can also be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (5, 0.0015); - pcl::GOODEstimation test_GOOD_descriptor; - test_GOOD_descriptor.setNumberOfBins(5); + const int number_of_bins = 5; + pcl::GOODEstimation test_GOOD_descriptor ; test_GOOD_descriptor.setThreshold(0.0015); // Provide the original point cloud test_GOOD_descriptor.setInputCloud(object); // Compute GOOD discriptor for the given object + pcl::PointCloud > object_description; test_GOOD_descriptor.compute(object_description); - std::cout <<"\n GOOD = ["; - for (size_t i =0; i< object_description.size()-1; i ++) - std::cout << object_description.at(i)<<","; - std::cout << object_description.back() <<"]"< GOOD_descriptor = object_description.points[0]; + std::cout <<"\n GOOD = [" << GOOD_descriptor <<"]"< - class PCL_EXPORTS GOODEstimation //: public Feature + template + class PCL_EXPORTS GOODEstimation : public Feature > { public: typedef typename pcl::PointCloud::Ptr PointCloudIn; - //using PCLBase::input_; + typedef typename Feature >::PointCloudOut PointCloudOut; + using PCLBase::input_; /** \brief Constructor. - * \param[in] number_of_bins_ number of bins along one dimension; each projection plane is divided into number_of_bins × number_of_bins square bins. - * The three projection vectors will be concatenated producing a vector of dimension 3 × number_of_bins^2 which is the final object descriptor, GOOD. + * \param[in] number_of_bins_ number of bins along one dimension; each projection plane is divided into number_of_bins ? number_of_bins square bins. + * The three projection vectors will be concatenated producing a vector of dimension 3 ? number_of_bins^2 which is the final object descriptor, GOOD. * \param[in] threshold_ threshold parameter is used in constructing local reference frame */ GOODEstimation (const unsigned int number_of_bins = 5, const float threshold = 0.0015) @@ -94,17 +95,13 @@ namespace pcl threshold_ = threshold; }; - - /** \brief Set the input cloud. - * \param[in] cloud pointer to a point cloud. - * \note: I will remove this function, whenever I can drive it from PCLBase and Feature - */ - void - setInputCloud (PointCloudIn cloud); + /** \brief Empty destructor */ + virtual ~GOODEstimation () {} + /** \brief Sets GOOD descriptor resolution. - * \param[in] number_of_bins number of bins along one dimension; each projection plane is divided into number_of_bins × number_of_bins square bins. - * The three projection vectors will be concatenated producing a vector of dimension 3 × number_of_bins^2 which is the final object descriptor, GOOD. + * \param[in] number_of_bins number of bins along one dimension; each projection plane is divided into number_of_bins ? number_of_bins square bins. + * The three projection vectors will be concatenated producing a vector of dimension 3 ? number_of_bins^2 which is the final object descriptor, GOOD. */ inline void setNumberOfBins (const unsigned int number_of_bins) @@ -188,16 +185,21 @@ namespace pcl { transformation = transformation_; } - + + + protected: + /** \brief Estimate the GOOD descriptor at a set of points given by setInputCloud() - * \param[out] object_description the resultant GOOD descriptor representing the feature at the query point cloud - */ - void - compute (std::vector &object_description ); - + * \param[out] object_description the resultant GOOD descriptor representing the feature at the query point cloud + */ + + virtual void + computeFeature (PointCloudOut &output); + + private: - /** \brief number of bins along one dimension; each projection plane is divided into number_of_bins × number_of_bins square bins. + /** \brief number of bins along one dimension; each projection plane is divided into number_of_bins ? number_of_bins square bins. * By default, the number_of_bins_ is set to 5. */ unsigned int number_of_bins_; @@ -211,7 +213,7 @@ namespace pcl int sign_; /** \brief given point cloud*/ - PointCloudIn input_ ; + // PointCloudIn input_ ; /** \brief transformed point cloud in LRF */ PointCloudIn transformed_point_cloud_; @@ -377,7 +379,7 @@ namespace pcl void computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance); - /** \brief initializing a 2D histogram with 0; This function creates a 2D vector with the size of [number_of_bins × number_of_bins] and initializes all elements with 0 value. + /** \brief initializing a 2D histogram with 0; This function creates a 2D vector with the size of [number_of_bins ? number_of_bins] and initializes all elements with 0 value. * \param[in] number_of_bins number of bin * \param[out] a_2D_vector */ diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index d5828db7301..d8cd8b42bf0 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -39,6 +39,7 @@ #define PCL_FEATURES_IMPL_GOOD_H_ #include #include +#include /** \brief GOOD: a Global Orthographic Object Descriptor for 3D object recognition and manipulation. @@ -70,18 +71,17 @@ * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt Kasaei.Hamidreza[at]gmail[dot]com ) */ ////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::setInputCloud (PointCloudIn cloud) -{ - input_ = cloud; -}; +// template +// void +// pcl::GOODEstimation::setInputCloud (PointCloudIn cloud) +// { +// input_ = cloud; +// }; ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeBoundingBoxDimensions (PointCloudIn pc, pcl::PointXYZ& dimensions) +pcl::GOODEstimation::computeBoundingBoxDimensions (PointCloudIn pc, pcl::PointXYZ &dimensions) { PointInT minimum_pt; PointInT maximum_pt; @@ -96,9 +96,9 @@ pcl::GOODEstimation::computeBoundingBoxDimensions (PointCloudIn pc, pc } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::projectPointCloudToPlane (PointCloudIn pc_in, boost::shared_ptr coefficients, PointCloudIn pc_out) +pcl::GOODEstimation::projectPointCloudToPlane (PointCloudIn pc_in, boost::shared_ptr coefficients, PointCloudIn pc_out) { //Create the projection object pcl::ProjectInliers projection; @@ -109,9 +109,9 @@ pcl::GOODEstimation::projectPointCloudToPlane (PointCloudIn pc_in, boo } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram) +pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram) { for (size_t i = 0 ; i < histogram_2D.size(); i++) { @@ -123,9 +123,9 @@ pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector +template void -pcl::GOODEstimation::signDisambiguationXAxis (PointCloudIn XoZ_projected_view, float threshold, int &sign ) +pcl::GOODEstimation::signDisambiguationXAxis (PointCloudIn XoZ_projected_view, float threshold, int &sign ) { unsigned Xpositive = 0; unsigned Xnegative = 0; @@ -154,9 +154,9 @@ pcl::GOODEstimation::signDisambiguationXAxis (PointCloudIn XoZ_projec } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::signDisambiguationYAxis (PointCloudIn YoZ_projected_view, float threshold, int &sign ) +pcl::GOODEstimation::signDisambiguationYAxis (PointCloudIn YoZ_projected_view, float threshold, int &sign ) { unsigned int Ypositive =0; unsigned int Ynegative =0; @@ -185,9 +185,9 @@ pcl::GOODEstimation::signDisambiguationYAxis (PointCloudIn YoZ_projec ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::create2DHistogramFromYOZProjection (PointCloudIn YOZ_projected_view, +pcl::GOODEstimation::create2DHistogramFromYOZProjection (PointCloudIn YOZ_projected_view, double largest_side, unsigned int number_of_bins, int sign, std::vector > &YOZ_histogram) { double y = largest_side / 2; @@ -210,9 +210,9 @@ pcl::GOODEstimation::create2DHistogramFromYOZProjection (PointCloudIn } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::create2DHistogramFromXOZProjection (PointCloudIn XOZ_projected_view, double largest_side, +pcl::GOODEstimation::create2DHistogramFromXOZProjection (PointCloudIn XOZ_projected_view, double largest_side, unsigned int number_of_bins, int sign, std::vector > &XOZ_histogram) { double x = largest_side / 2; @@ -234,9 +234,9 @@ pcl::GOODEstimation::create2DHistogramFromXOZProjection (PointCloudIn } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::create2DHistogramFromXOYProjection (PointCloudIn XOY_projected_view, double largest_side, +pcl::GOODEstimation::create2DHistogramFromXOYProjection (PointCloudIn XOY_projected_view, double largest_side, unsigned int number_of_bins, int sign, std::vector > &XOY_histogram) { double x = largest_side / 2; @@ -257,9 +257,9 @@ pcl::GOODEstimation::create2DHistogramFromXOYProjection (PointCloudIn } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::normalizingHistogram (std::vector histogram, std::vector &normalized_histogram) +pcl::GOODEstimation::normalizingHistogram (std::vector histogram, std::vector &normalized_histogram) { int sum_all_bins = 0; //compute sumation of all histogram's bins. @@ -277,9 +277,9 @@ pcl::GOODEstimation::normalizingHistogram (std::vector h } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::viewpointEntropy (std::vector normalized_histogram, float &entropy) +pcl::GOODEstimation::viewpointEntropy (std::vector normalized_histogram, float &entropy) { //http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform entropy =0; @@ -295,9 +295,9 @@ pcl::GOODEstimation::viewpointEntropy (std::vector normalized_h } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::findMaxViewPointEntropy (std::vector view_point_entropy, int &index) +pcl::GOODEstimation::findMaxViewPointEntropy (std::vector view_point_entropy, int &index) { index = 0; std::vector::iterator it; @@ -307,9 +307,9 @@ pcl::GOODEstimation::findMaxViewPointEntropy (std::vector view } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::averageHistograms (std::vector histogram1, std::vector historam2, std::vector historam3, std::vector &average) +pcl::GOODEstimation::averageHistograms (std::vector histogram1, std::vector historam2, std::vector historam3, std::vector &average) { for (size_t i = 0; i < histogram1.size(); i++ ) { @@ -318,9 +318,9 @@ pcl::GOODEstimation::averageHistograms (std::vector histogram1, } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::meanOfHistogram (std::vector histogram, float &mean) +pcl::GOODEstimation::meanOfHistogram (std::vector histogram, float &mean) { // http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm float mu = 0; @@ -332,9 +332,9 @@ pcl::GOODEstimation::meanOfHistogram (std::vector histogram, fl } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::varianceOfHistogram (std::vector histogram, float mean, float &variance) +pcl::GOODEstimation::varianceOfHistogram (std::vector histogram, float mean, float &variance) { //https://people.richland.edu/james/lecture/m170/ch06-prb.html //http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm @@ -347,9 +347,9 @@ pcl::GOODEstimation::varianceOfHistogram (std::vector histogram } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, std::vector > normalized_projected_views, +pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, std::vector > normalized_projected_views, std::vector &sorted_normalized_projected_views, std::string &name_of_sorted_projected_plane /*debug*/) { @@ -432,9 +432,9 @@ pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, s } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ) +pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ) { std::vector tmp; tmp.push_back (dimensions.x); tmp.push_back (dimensions.y); tmp.push_back (dimensions.z); @@ -445,9 +445,9 @@ pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ di } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance) +pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance) { float sum = 0 ; for (size_t i = 0; i < projection1.size(); i++) @@ -461,8 +461,8 @@ pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector -inline std::vector > pcl::GOODEstimation::initializing2DHistogram (unsigned int number_of_bins) +template +inline std::vector > pcl::GOODEstimation::initializing2DHistogram (unsigned int number_of_bins) { std::vector row (number_of_bins, 0); std::vector > histogram2D (number_of_bins, row); @@ -470,10 +470,12 @@ inline std::vector > pcl::GOODEstimation::in } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::compute (std::vector &object_description ) +pcl::GOODEstimation::computeFeature (PointCloudOut &output ) { + //output.points[0].histogram[0]=1; + std::vector object_description; double largest_side = 0; int sign = 1; std::vector view_point_entropy; @@ -663,6 +665,15 @@ pcl::GOODEstimation::compute (std::vector &object_description ) order_of_projected_plane_ = name_of_sorted_projected_plane; } -#define PCL_INSTANTIATE_GOODEstimation(T) template class PCL_EXPORTS pcl::GOODEstimation; +// ////////////////////////////////////////////////////////////////////////////////////////////// +// template +// void +// pcl::GOODEstimation::compute (PointCloudOut &output) +// { +// // Perform the actual feature computation +// computeFeature (output); +// } + +#define PCL_INSTANTIATE_GOODEstimation(T, x) template class PCL_EXPORTS pcl::GOODEstimation; #endif /* PCL_FEATURES_IMPL_GOOD_H_ */ diff --git a/features/src/good.cpp b/features/src/good.cpp index 45695b21422..79554d633c4 100644 --- a/features/src/good.cpp +++ b/features/src/good.cpp @@ -42,9 +42,8 @@ #include // Instantiations of specific point types #ifdef PCL_ONLY_CORE_POINT_TYPES - PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA))) +PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA))((pcl::Histogram<3*5*5>))) #else - PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)) +//PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)((pcl::Histogram<3*5*5>))) #endif -#endif // PCL_NO_PRECOMPILE - +#endif // PCL_NO_PRECOMPILE \ No newline at end of file From 746943ebca568d738b3d21a59b5197f9c5ea1fb2 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Fri, 30 Jun 2017 15:23:24 +0100 Subject: [PATCH 09/24] I applied all the comments and it works like a charm --- examples/features/example_good_descriptor.cpp | 38 ++++---- features/include/pcl/features/good.h | 38 +++----- features/include/pcl/features/impl/good.hpp | 97 ++++++++----------- features/src/good.cpp | 4 +- 4 files changed, 77 insertions(+), 100 deletions(-) diff --git a/examples/features/example_good_descriptor.cpp b/examples/features/example_good_descriptor.cpp index 1cdcd0a4d0c..b0f8e601d6a 100644 --- a/examples/features/example_good_descriptor.cpp +++ b/examples/features/example_good_descriptor.cpp @@ -100,26 +100,26 @@ int main(int argc, char* argv[]) std::string order_of_projected_planes; // Setup the GOOD descriptor - // GOOD can also be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (5, 0.0015); const int number_of_bins = 5; - pcl::GOODEstimation test_GOOD_descriptor ; + const unsigned int lengh_of_descriptor = 3 * number_of_bins * number_of_bins; + pcl::PointCloud > object_description; + + + pcl::GOODEstimation test_GOOD_descriptor ; test_GOOD_descriptor.setThreshold(0.0015); - - // Provide the original point cloud - test_GOOD_descriptor.setInputCloud(object); + // NOTE : GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); + test_GOOD_descriptor.setInputCloud(object); // pass original point cloud + test_GOOD_descriptor.compute(object_description); // Actually compute the GOOD discriptor for the given object - // Compute GOOD discriptor for the given object - pcl::PointCloud > object_description; - test_GOOD_descriptor.compute(object_description); + // Printing GOOD_descriptor for the given point cloud + pcl::Histogram GOOD_descriptor = object_description.points[0]; + std::cout <<"\n GOOD =" << GOOD_descriptor < GOOD_descriptor = object_description.points[0]; - std::cout <<"\n GOOD = [" << GOOD_descriptor <<"]"< -// void -// pcl::GOODEstimation::setInputCloud (PointCloudIn cloud) -// { -// input_ = cloud; -// }; -////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeBoundingBoxDimensions (PointCloudIn pc, pcl::PointXYZ &dimensions) +pcl::GOODEstimation::computeBoundingBoxDimensions (PointCloudIn pc, pcl::PointXYZ &dimensions) { PointInT minimum_pt; PointInT maximum_pt; @@ -96,9 +89,9 @@ pcl::GOODEstimation::computeBoundingBoxDimensions (PointCloudIn pc, } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::projectPointCloudToPlane (PointCloudIn pc_in, boost::shared_ptr coefficients, PointCloudIn pc_out) +pcl::GOODEstimation::projectPointCloudToPlane (PointCloudIn pc_in, boost::shared_ptr coefficients, PointCloudIn pc_out) { //Create the projection object pcl::ProjectInliers projection; @@ -109,9 +102,9 @@ pcl::GOODEstimation::projectPointCloudToPlane (PointCloudIn pc_in, } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram) +pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram) { for (size_t i = 0 ; i < histogram_2D.size(); i++) { @@ -123,9 +116,9 @@ pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector +template void -pcl::GOODEstimation::signDisambiguationXAxis (PointCloudIn XoZ_projected_view, float threshold, int &sign ) +pcl::GOODEstimation::signDisambiguationXAxis (PointCloudIn XoZ_projected_view, float threshold, int &sign ) { unsigned Xpositive = 0; unsigned Xnegative = 0; @@ -154,9 +147,9 @@ pcl::GOODEstimation::signDisambiguationXAxis (PointCloudIn XoZ_pro } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::signDisambiguationYAxis (PointCloudIn YoZ_projected_view, float threshold, int &sign ) +pcl::GOODEstimation::signDisambiguationYAxis (PointCloudIn YoZ_projected_view, float threshold, int &sign ) { unsigned int Ypositive =0; unsigned int Ynegative =0; @@ -185,9 +178,9 @@ pcl::GOODEstimation::signDisambiguationYAxis (PointCloudIn YoZ_pro ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::create2DHistogramFromYOZProjection (PointCloudIn YOZ_projected_view, +pcl::GOODEstimation::create2DHistogramFromYOZProjection (PointCloudIn YOZ_projected_view, double largest_side, unsigned int number_of_bins, int sign, std::vector > &YOZ_histogram) { double y = largest_side / 2; @@ -210,9 +203,9 @@ pcl::GOODEstimation::create2DHistogramFromYOZProjection (PointCloud } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::create2DHistogramFromXOZProjection (PointCloudIn XOZ_projected_view, double largest_side, +pcl::GOODEstimation::create2DHistogramFromXOZProjection (PointCloudIn XOZ_projected_view, double largest_side, unsigned int number_of_bins, int sign, std::vector > &XOZ_histogram) { double x = largest_side / 2; @@ -234,9 +227,9 @@ pcl::GOODEstimation::create2DHistogramFromXOZProjection (PointCloud } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::create2DHistogramFromXOYProjection (PointCloudIn XOY_projected_view, double largest_side, +pcl::GOODEstimation::create2DHistogramFromXOYProjection (PointCloudIn XOY_projected_view, double largest_side, unsigned int number_of_bins, int sign, std::vector > &XOY_histogram) { double x = largest_side / 2; @@ -257,9 +250,9 @@ pcl::GOODEstimation::create2DHistogramFromXOYProjection (PointCloud } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::normalizingHistogram (std::vector histogram, std::vector &normalized_histogram) +pcl::GOODEstimation::normalizingHistogram (std::vector histogram, std::vector &normalized_histogram) { int sum_all_bins = 0; //compute sumation of all histogram's bins. @@ -277,9 +270,9 @@ pcl::GOODEstimation::normalizingHistogram (std::vector +template void -pcl::GOODEstimation::viewpointEntropy (std::vector normalized_histogram, float &entropy) +pcl::GOODEstimation::viewpointEntropy (std::vector normalized_histogram, float &entropy) { //http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform entropy =0; @@ -295,9 +288,9 @@ pcl::GOODEstimation::viewpointEntropy (std::vector normalize } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::findMaxViewPointEntropy (std::vector view_point_entropy, int &index) +pcl::GOODEstimation::findMaxViewPointEntropy (std::vector view_point_entropy, int &index) { index = 0; std::vector::iterator it; @@ -307,9 +300,9 @@ pcl::GOODEstimation::findMaxViewPointEntropy (std::vector v } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::averageHistograms (std::vector histogram1, std::vector historam2, std::vector historam3, std::vector &average) +pcl::GOODEstimation::averageHistograms (std::vector histogram1, std::vector historam2, std::vector historam3, std::vector &average) { for (size_t i = 0; i < histogram1.size(); i++ ) { @@ -318,9 +311,9 @@ pcl::GOODEstimation::averageHistograms (std::vector histogra } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::meanOfHistogram (std::vector histogram, float &mean) +pcl::GOODEstimation::meanOfHistogram (std::vector histogram, float &mean) { // http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm float mu = 0; @@ -332,9 +325,9 @@ pcl::GOODEstimation::meanOfHistogram (std::vector histogram, } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::varianceOfHistogram (std::vector histogram, float mean, float &variance) +pcl::GOODEstimation::varianceOfHistogram (std::vector histogram, float mean, float &variance) { //https://people.richland.edu/james/lecture/m170/ch06-prb.html //http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm @@ -347,9 +340,9 @@ pcl::GOODEstimation::varianceOfHistogram (std::vector histog } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, std::vector > normalized_projected_views, +pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, std::vector > normalized_projected_views, std::vector &sorted_normalized_projected_views, std::string &name_of_sorted_projected_plane /*debug*/) { @@ -432,9 +425,9 @@ pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ) +pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ) { std::vector tmp; tmp.push_back (dimensions.x); tmp.push_back (dimensions.y); tmp.push_back (dimensions.z); @@ -445,9 +438,9 @@ pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance) +pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance) { float sum = 0 ; for (size_t i = 0; i < projection1.size(); i++) @@ -461,8 +454,8 @@ pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector } ////////////////////////////////////////////////////////////////////////////////////////////// -template -inline std::vector > pcl::GOODEstimation::initializing2DHistogram (unsigned int number_of_bins) +template +inline std::vector > pcl::GOODEstimation::initializing2DHistogram (unsigned int number_of_bins) { std::vector row (number_of_bins, 0); std::vector > histogram2D (number_of_bins, row); @@ -470,11 +463,10 @@ inline std::vector > pcl::GOODEstimation: } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeFeature (PointCloudOut &output ) +pcl::GOODEstimation::computeFeature (PointCloudOut &output ) { - //output.points[0].histogram[0]=1; std::vector object_description; double largest_side = 0; int sign = 1; @@ -663,17 +655,12 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) objectViewHistogram (maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); order_of_projected_plane_ = name_of_sorted_projected_plane; + + for(size_t i =0; i < object_description.size(); i++) + output.points[0].histogram[i]=object_description.at(i); + } -// ////////////////////////////////////////////////////////////////////////////////////////////// -// template -// void -// pcl::GOODEstimation::compute (PointCloudOut &output) -// { -// // Perform the actual feature computation -// computeFeature (output); -// } - #define PCL_INSTANTIATE_GOODEstimation(T, x) template class PCL_EXPORTS pcl::GOODEstimation; #endif /* PCL_FEATURES_IMPL_GOOD_H_ */ diff --git a/features/src/good.cpp b/features/src/good.cpp index 79554d633c4..9c0a8bc136a 100644 --- a/features/src/good.cpp +++ b/features/src/good.cpp @@ -42,8 +42,8 @@ #include // Instantiations of specific point types #ifdef PCL_ONLY_CORE_POINT_TYPES -PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA))((pcl::Histogram<3*5*5>))) +PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA))((5))) #else -//PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)((pcl::Histogram<3*5*5>))) +PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)((5))) #endif #endif // PCL_NO_PRECOMPILE \ No newline at end of file From 1178ce7928052f9ae9ff137614345a73f91eee9f Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Fri, 8 Dec 2017 14:31:15 +0000 Subject: [PATCH 10/24] updated version - comments have been applied --- examples/features/CMakeLists.txt | 2 +- examples/features/example_good_descriptor.cpp | 92 +-- features/include/pcl/features/good.h | 226 +++---- features/include/pcl/features/impl/good.hpp | 556 ++++++------------ 4 files changed, 290 insertions(+), 586 deletions(-) diff --git a/examples/features/CMakeLists.txt b/examples/features/CMakeLists.txt index 14e0d19fd21..9ec76eddfef 100644 --- a/examples/features/CMakeLists.txt +++ b/examples/features/CMakeLists.txt @@ -23,4 +23,4 @@ PCL_ADD_EXAMPLE(pcl_example_difference_of_normals FILES example_difference_of_no LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io pcl_segmentation pcl_sample_consensus) PCL_ADD_EXAMPLE(pcl_example_good_descriptor FILES example_good_descriptor.cpp - LINK_WITH pcl_common pcl_features pcl_io pcl_sample_consensus) + LINK_WITH pcl_common pcl_features pcl_io pcl_sample_consensus) \ No newline at end of file diff --git a/examples/features/example_good_descriptor.cpp b/examples/features/example_good_descriptor.cpp index b0f8e601d6a..c8f6a1a49a4 100644 --- a/examples/features/example_good_descriptor.cpp +++ b/examples/features/example_good_descriptor.cpp @@ -49,11 +49,11 @@ * * \note This is an implementation of the GOOD descriptor which has been presented in the following papers: * - * [1] Kasaei, S. Hamidreza, Ana Maria Tomé, Luís Seabra Lopes, Miguel Oliveira + * [1] Kasaei, S. Hamidreza, Ana Maria Tome, Luis Seabra Lopes, Miguel Oliveira * "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation." * Pattern Recognition Letters 83 (2016): 312-320.http://dx.doi.org/10.1016/j.patrec.2016.07.006 * - * [2] Kasaei, S. Hamidreza, Luís Seabra Lopes, Ana Maria Tomé, Miguel Oliveira + * [2] Kasaei, S. Hamidreza, Luis Seabra Lopes, Ana Maria Tome, Miguel Oliveira * "An orthographic descriptor for 3D object learning and recognition." * 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Daejeon, 2016, * pp. 4158-4163. doi: 10.1109/IROS.2016.7759612 @@ -71,15 +71,13 @@ #include typedef pcl::PointXYZRGBA PointT; -typedef pcl::PointCloud::Ptr PointCloudIn; - +typedef pcl::PointCloud::Ptr PointCloudInPtr; int main(int argc, char* argv[]) { - if (argc != 2) { - std::cout << "\n Syntax is: example_good_descriptor " << std::endl; + std::cerr << "\n Syntax is: example_good_descriptor " << std::endl; return 0; } @@ -87,59 +85,65 @@ int main(int argc, char* argv[]) pcl::PointCloud::Ptr object (new pcl::PointCloud); if (pcl::io::load(object_path, *object)==-1) { - std::cout << "\n file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + std::cerr << "\n file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; return -1; } - - std::vector vector_of_projected_views; - PointCloudIn transformed_object (new pcl::PointCloud); + + /*____________________________ + | | + | Setup the GOOD descriptor | + |_____________________________| */ - Eigen::Matrix4f transformation; - pcl::PointXYZ center_of_bounding_box; - pcl::PointXYZ bounding_box_dimensions; - std::string order_of_projected_planes; - - // Setup the GOOD descriptor - const int number_of_bins = 5; - const unsigned int lengh_of_descriptor = 3 * number_of_bins * number_of_bins; + const int NUMBER_OF_BINS = 5; + const unsigned int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; pcl::PointCloud > object_description; - - pcl::GOODEstimation test_GOOD_descriptor ; + pcl::GOODEstimation test_GOOD_descriptor ; test_GOOD_descriptor.setThreshold(0.0015); - // NOTE : GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); + ///NOTE: GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); test_GOOD_descriptor.setInputCloud(object); // pass original point cloud - test_GOOD_descriptor.compute(object_description); // Actually compute the GOOD discriptor for the given object + test_GOOD_descriptor.compute(object_description); // Actually compute the GOOD discriptor for the given object - // Printing GOOD_descriptor for the given point cloud - pcl::Histogram GOOD_descriptor = object_description.points[0]; - std::cout <<"\n GOOD =" << GOOD_descriptor < - class PCL_EXPORTS GOODEstimation : public Feature > + template + class PCL_EXPORTS GOODEstimation : public Feature > { public: - typedef Histogram<3*NumberOfBins*NumberOfBins> Descriptor; - typedef typename pcl::PointCloud::Ptr PointCloudIn; + typedef pcl::Histogram<3*BinN*BinN> Descriptor; + typedef typename pcl::PointCloud::Ptr PointCloudInPtr; typedef typename Feature::PointCloudOut PointCloudOut; using Feature::feature_name_; using Feature::k_; using PCLBase::input_; /** \brief Constructor. - * \param[in] number_of_bins_ number of bins along one dimension of a projection plane; therefore, each projection plane is divided into number_of_bins X number_of_bins square bins. - * The three projection vectors will be concatenated producing a vector of dimension 3 X number_of_bins^2 which is the final lengh of GOOD descriptor. * \param[in] threshold_ threshold parameter is used in constructing local reference frame - */ - GOODEstimation (const float threshold = 0.0015) + */ + GOODEstimation (const float threshold = 0.0015) + : threshold_ (threshold) { - number_of_bins_ = NumberOfBins; - threshold_ = threshold; feature_name_ = "GOODEstimation"; - k_ =1;//not needed? + k_ = 1; }; - - /** \brief Empty destructor */ + + /** \brief Default virtual destructor, due to existence of virtual methods */ virtual ~GOODEstimation () {} - + /** \brief Returns the number_of_bins_ parameter. */ - inline unsigned int - getNumberOfBins () - { - return number_of_bins_; - } - + inline static int + getNumberOfBins () { return BinN; } + /** \brief Set the threshold param which is used for local reference frame construction * \param[in] threshold threshold_ parameter */ @@ -119,125 +113,102 @@ namespace pcl threshold_ = threshold; } - /** \brief Returns the number_of_bins_ parameter. */ + /** \brief Returns the threshold_ parameter. */ inline float - getThreshold () - { - return threshold_; - } - + getThreshold () const { return threshold_; } + /** \brief get three orthographic projections of a set of points given by setInputCloud() * \param[out] vector_of_projected_views the resultant vector of point clouds that contains three orthographic projections of the query point cloud */ - inline void - getOrthographicProjections (std::vector &vector_of_projected_views) const - { - vector_of_projected_views = vector_of_projected_views_; - } - + inline const std::vector& + getOrthographicProjections () const { return vector_of_projected_views_; } + /** \brief get objec point cloud in local reference frame constructed by the GOOD descriptor * \param[out] transformed_point_cloud the resultant point cloud of the object in local reference frame */ - inline void - getTransformedObject (PointCloudIn &transformed_point_cloud) const - { - transformed_point_cloud = transformed_point_cloud_; - } + inline const PointCloudInPtr& + getTransformedObject () const { return transformed_point_cloud_; } /** \brief get center of boundingbox of a set of points given by setInputCloud() in camera reference frame * \param[out] center_of_bbox the resultant center of boundingbox */ - inline void - getCenterOfObjectBoundingBox (pcl::PointXYZ ¢er_of_bbox) const - { - center_of_bbox = center_of_bbox_; - } + inline const pcl::PointXYZ& + getCenterOfObjectBoundingBox () const { return center_of_bbox_; } /** \brief get dimensions of bounding box of a set of points given by setInputCloud() * \param[out] bbox_dimensions the resultant boundingbox dimensions */ - inline void - getObjectBoundingBoxDimensions(pcl::PointXYZ &bbox_dimensions) const - { - bbox_dimensions = bbox_dimensions_; - } + inline const Eigen::Vector3f& + getObjectBoundingBoxDimensions () const { return bbox_dimensions_; } /** \brief get the order of protection plans in constructing GOOD descriptor * \param[out] order_of_projected_plane the resultant of order of projections */ - inline void - getOrderOfProjectedPlanes (std::string &order_of_projected_plane) const - { - order_of_projected_plane = order_of_projected_plane_; - } + inline const std::string& + getOrderOfProjectedPlanes () const { return order_of_projected_plane_; } + /** \brief get the transformation matrix from camera reference frame to object local reference frame * \param[out] transformation the resultant transformation matrix */ - inline void - getTransformationMatrix (Eigen::Matrix4f &transformation) const - { - transformation = transformation_; - } + inline const Eigen::Matrix4f& + getTransformationMatrix () const {return transformation_;} + - protected: /** \brief Estimate the GOOD descriptor at a set of points given by setInputCloud() - * \param[out] object_description the resultant GOOD descriptor representing the feature at the query point cloud + * \param[out] output the resultant GOOD descriptor representing the feature at the query point cloud */ - virtual void computeFeature (PointCloudOut &output); private: + + enum Axis { X, Y, Z}; /** \brief number of bins along one dimension; each projection plane is divided into number_of_bins ? number_of_bins square bins. * By default, the number_of_bins_ is set to 5. */ - unsigned int number_of_bins_; /** \brief threshold parameter is used in constructing local reference frame. - * By default, the number_of_bins_ is set to 0.0015. + * By default, the threshold_ is set to 0.0015. */ float threshold_; /** \brief resultant of sign disambiguation can be either 1 or -1 */ - int sign_; + int8_t sign_; /** \brief transformed point cloud in LRF */ - PointCloudIn transformed_point_cloud_; + PointCloudInPtr transformed_point_cloud_; /** \brief get transformation matrix */ Eigen::Matrix4f transformation_; /** \brief dimensions of boundingboxbox of given point cloud */ - pcl::PointXYZ bbox_dimensions_; + Eigen::Vector3f bbox_dimensions_; /** \brief center of boundingboxbox of given point cloud */ pcl::PointXYZ center_of_bbox_; /** \brief vector of three point clouds containing orthographic projection views */ - std::vector < PointCloudIn > vector_of_projected_views_; + std::vector vector_of_projected_views_; /** \brief get order of projection views e.g. XoY-XoZ-YoZ */ std::string order_of_projected_plane_; - /** \brief get dimensions of bounding box of a given point cloud - * \param[in] pc pointer to a point cloud. - * \param[out] dimensions the resultant boundingbox dimensions - */ + /** \brief get dimensions of bounding box of a given point cloud */ void - computeBoundingBoxDimensions (PointCloudIn pc, pcl::PointXYZ &dimensions); - + computeBoundingBoxDimensions (); + /** \brief project point cloud to a plane * \param[in] pc_in pointer to a point cloud. * \param[in] coefficients pcl::ModelCoefficients * \param[out] pc_out the resultant projected point cloud */ void - projectPointCloudToPlane (PointCloudIn pc_in, pcl::ModelCoefficients::Ptr coefficients, PointCloudIn pc_out); + projectPointCloudToPlane (PointCloudInPtr pc_in, pcl::ModelCoefficients::Ptr coefficients, PointCloudInPtr pc_out); /** \brief convert 2D histogram to 1D histogram * \param[in] histogram_2D a 2D vector of unsigned int @@ -246,99 +217,55 @@ namespace pcl void convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram); - /** \brief sign disambiguation of axis X - * \param[in] XoZ_projected_view pointer to a point cloud. - * \param[in] threshold used to deal with the special case when a point is close to the YoZ plane - * \param[out] sign the resultant sign (either 1 or -1) - */ - void - signDisambiguationXAxis (PointCloudIn XoZ_projected_view, float threshold, int &sign ); - - /** \brief sign disambiguation of axis Y - * \param[in] YoZ_projected_view pointer to a point cloud. - * \param[in] threshold used to deal with the special case when a point is close to the XoZ plane + /** \brief sign disambiguation + * \param[in] projected_view pointer to a point cloud. + * \param[in] threshold used to deal with the special case when a point is close to the other planes * \param[out] sign the resultant sign (either 1 or -1) */ - void - signDisambiguationYAxis (PointCloudIn YoZ_projected_view, float threshold, int &sign ); - - /** \brief create a 2D histogram from YOZ projection - * \param[in] YoZ_projected_view pointer to a point cloud. - * \param[in] largest_side largest side of object bounding box - * \param[in] number_of_bins number of bins along one dimension; - * \param[in] sign either 1 or -1 - * \param[out] YOZ_histogram a 2D vector of unsigned int - */ + + ///TODO : const PointCloudInPtr should be PointCloudInConstPtr void - create2DHistogramFromYOZProjection (PointCloudIn YOZ_projected_view, double largest_side, unsigned int number_of_bins, - int sign, std::vector > &YOZ_histogram); + signDisambiguation ( PointCloudInPtr &projected_view, const int8_t axis, int8_t &sign) const; - /** \brief create a 2D histogram from XOZ projection - * \param[in] XoZ_projected_view pointer to a point cloud. - * \param[in] largest_side largest side of object bounding box. - * \param[in] number_of_bins number of bins along one dimension. - * \param[in] sign either 1 or -1. - * \param[out] XOZ_histogram a 2D vector of unsigned int. - */ - void - create2DHistogramFromXOZProjection ( PointCloudIn XOZ_projected_view, double largest_side, - unsigned int number_of_bins, int sign, std::vector < std::vector > &XOZ_histogram); - - /** \brief create a 2D histogram from XOY projection - * \param[in] XoY_projected_view pointer to a point cloud. + /** \brief create a 2D histogram from a projection + * \param[in] projected_view pointer to a point cloud. * \param[in] largest_side largest side of object bounding box. * \param[in] number_of_bins number of bins along one dimension. * \param[in] sign either 1 or -1. - * \param[out] XOY_histogram a 2D vector of unsigned int. - */ + * \param[out] histogram a 2D vector of unsigned int. + */ void - create2DHistogramFromXOYProjection (PointCloudIn XOY_projected_view, double largest_side, - unsigned int number_of_bins, int sign, std::vector < std::vector > &XOY_histogram); - + create2DHistogramFromProjection (const PointCloudInPtr &projected_view, const float largest_side, + const int8_t axis_a, const int8_t axis_b, + std::vector > &histogram) const; + /** \brief normalizing a 1D histogram * \param[in] histogram 1D histogram (int). * \param[out] normalized_histogram the resultant normalized_histogram (float). */ void - normalizingHistogram (std::vector histogram, std::vector &normalized_histogram); + normalizeHistogram (const std::vector histogram, std::vector &normalized_histogram); /** \brief compute viewpoint entropy used for concatenating projections * \param[in] normalized_histogram normalized_histogram (float). * \param[out] entropy the resultant view entropy. */ void - viewpointEntropy (std::vector normalized_histogram, float &entropy); + viewpointEntropy (const std::vector normalized_histogram, float &entropy); /** \brief find max view point entropy used for concatenating projections * \param[in] view_point_entropy a vector of float contains three view entropies. * \param[out] index the resultant projection index. */ void - findMaxViewPointEntropy (std::vector view_point_entropy, int &index); - - /** \brief compute average of view point histograms - * \param[in] histogram1 normalized histogram of projection 1. - * \param[in] histogram2 normalized histogram of projection 2 - * \param[in] histogram3 normalized histogram of projection 3 - * \param[out] average the resultant average of three histograms. - */ - void - averageHistograms (std::vector histogram1, std::vector historam2, std::vector historam3, std::vector &average); - - /** \brief compute mean of a given histogram - * \param[in] histogram normalized histogram of projection. - * \param[out] mean the resultant mean. - */ - void - meanOfHistogram (std::vector histogram, float &mean); + findMaxViewPointEntropy (const std::vector view_point_entropy, int &index); /** \brief compute variance of a given histogram * \param[in] histogram normalized histogram of projection. - * \param[in] mean mean of the given histogram. - * \param[out] mean the resultant mean. + * \param[out] variance the resultant variance. */ void - varianceOfHistogram (std::vector histogram, float mean, float &variance); + varianceOfHistogram (const std::vector histogram, float &variance); /** \brief concatinating three orthographic projections * three histograms are obtained for the projections; afterwards, two statistic features including entropy and variance have been calculated for each distribution vector; @@ -350,30 +277,15 @@ namespace pcl * \param[out] name_of_sorted_projected_plane an string represents the order of concatenating projections. */ void - objectViewHistogram (int maximum_entropy_index, std::vector > normalized_projected_views, + objectViewHistogram (int maximum_entropy_index, const std::vector > normalized_projected_views, std::vector &sorted_normalized_projected_views, std::string &name_of_sorted_projected_plane /*debug*/); - /** \brief compute largest side of boundingbox - * \param[in] dimensions shows the dimention of boundingbox + /** \brief compute largest side of the computed boundingbox i.e. bbox_dimensions_ * \param[out] largest_side the resultant largest side. */ - void - computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ); - - /** \brief compute compute distance between two projections - * \param[in] projection1 2D histogram - * \param[in] projection2 2D histogram - * \param[out] largest_side the resultant distance. - */ - void - computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance); - - /** \brief initializing a 2D histogram with 0; This function creates a 2D vector with the size of [number_of_bins ? number_of_bins] and initializes all elements with 0 value. - * \param[in] number_of_bins number of bin - * \param[out] a_2D_vector - */ - inline std::vector > initializing2DHistogram (unsigned int number_of_bins); + inline float + computeLargestSideOfBoundingBox () const { return (bbox_dimensions_.maxCoeff() + 0.02) ;} }; } diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index fae6a45e7e7..cdfb98087ea 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -42,241 +42,116 @@ #include -/** \brief GOOD: a Global Orthographic Object Descriptor for 3D object recognition and manipulation. - * GOOD descriptor has been designed to be robust, descriptive and efficient to compute and use. - * It has two outstanding characteristics: - * - * (1) Providing a good trade-off among : - * - descriptiveness, - * - robustness, - * - computation time, - * - memory usage. - * - * (2) Allowing concurrent object recognition and pose estimation for manipulation. - * - * \note This is an implementation of the GOOD descriptor which has been presented in the following papers: - * - * [1] Kasaei, S. Hamidreza, Ana Maria Tomé, Luís Seabra Lopes, Miguel Oliveira - * "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation." - * Pattern Recognition Letters 83 (2016): 312-320.http://dx.doi.org/10.1016/j.patrec.2016.07.006 - * - * [2] Kasaei, S. Hamidreza, Luís Seabra Lopes, Ana Maria Tomé, Miguel Oliveira - * "An orthographic descriptor for 3D object learning and recognition." - * 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Daejeon, 2016, - * pp. 4158-4163. doi: 10.1109/IROS.2016.7759612 - * - * Please adequately refer to this work any time this code is being used by citing above papers. - * If you do publish a paper where GOOD descriptor helped your research, we encourage you to cite the above papers in your publications. - * - * \author Hamidreza Kasaei (Seyed.Hamidreza[at]ua[dot]pt Kasaei.Hamidreza[at]gmail[dot]com ) - */ -////////////////////////////////////////////////////////////////////////////////////////////// +#include ///std::accumulate + +////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeBoundingBoxDimensions (PointCloudIn pc, pcl::PointXYZ &dimensions) +pcl::GOODEstimation::computeBoundingBoxDimensions () { - PointInT minimum_pt; - PointInT maximum_pt; - - pcl::getMinMax3D (*pc, minimum_pt, maximum_pt); // min max for bounding box - dimensions.x = (maximum_pt.x - minimum_pt.x); - dimensions.y = (maximum_pt.y - minimum_pt.y); - dimensions.z = (maximum_pt.z - minimum_pt.z); - //NOTE: I changed the above lines as follow, but I faced several error. - //dimensions = maximum_pt.getVector3fMap () - minimum_pt.getVector3fMap (); - + PointInT minimum_pt, maximum_pt, dimensions; + pcl::getMinMax3D (*transformed_point_cloud_, minimum_pt, maximum_pt); // min max for bounding box + dimensions.getVector3fMap () = maximum_pt.getVector3fMap () - minimum_pt.getVector3fMap (); + bbox_dimensions_ << dimensions.x, dimensions.y, dimensions.z; } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::projectPointCloudToPlane (PointCloudIn pc_in, boost::shared_ptr coefficients, PointCloudIn pc_out) +pcl::GOODEstimation::projectPointCloudToPlane (PointCloudInPtr pc_in, pcl::ModelCoefficients::Ptr coefficients, PointCloudInPtr pc_out) { - //Create the projection object + ///Create the projection object pcl::ProjectInliers projection; - projection.setModelType (pcl::SACMODEL_NORMAL_PLANE); //set model type + projection.setModelType (pcl::SACMODEL_NORMAL_PLANE); projection.setInputCloud (pc_in); projection.setModelCoefficients (coefficients); projection.filter (*pc_out); } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram) +pcl::GOODEstimation::convert2DHistogramTo1DHistogram (const std::vector > histogram_2D, std::vector &histogram) { - for (size_t i = 0 ; i < histogram_2D.size(); i++) + for (size_t i = 0 ; i < BinN; i++) { - for (size_t j = 0; j < histogram_2D.at(i).size(); j++) + for (size_t j = 0; j < BinN; j++) { - histogram.push_back (histogram_2D.at(i).at(j)); + histogram.at (i * BinN + j) = histogram_2D.at(i).at(j); } } } ////////////////////////////////////////////////////////////////////////////////////////////// -template -void -pcl::GOODEstimation::signDisambiguationXAxis (PointCloudIn XoZ_projected_view, float threshold, int &sign ) +template void +pcl::GOODEstimation::signDisambiguation ( PointCloudInPtr &projected_view, const int8_t axis, int8_t &sign) const { - unsigned Xpositive = 0; - unsigned Xnegative = 0; - unsigned threshold_overall = trunc (XoZ_projected_view -> points.size() / 10); - - //XoZ page - for (size_t i = 0; i < XoZ_projected_view -> points.size(); i++) - { - if (XoZ_projected_view->points.at(i).x > threshold) - { - Xpositive ++; - } - else if (XoZ_projected_view->points.at(i).x < - threshold) - { - Xnegative ++; - } - } - if ((Xpositive < Xnegative) and (Xnegative - Xpositive >= threshold_overall)) - { - sign = -1; + unsigned int positive = 0; + unsigned int negative = 0; + const unsigned int threshold_overall = std::max (1u, (unsigned int) trunc (projected_view->size ()/10)); + + for (size_t i = 0; i < projected_view->size(); ++i) + { + if (projected_view->at(i).data[axis] > threshold_) //Not sure if data[axis] is valid since you're using the members x y z of the union + ++positive; + else if (projected_view->at(i).data[axis] < -threshold_) + ++negative; } - else - { - sign = 1; - } + sign = ((int) (negative - positive) >= (int) threshold_overall)? -1 : 1; } ////////////////////////////////////////////////////////////////////////////////////////////// -template -void -pcl::GOODEstimation::signDisambiguationYAxis (PointCloudIn YoZ_projected_view, float threshold, int &sign ) -{ - unsigned int Ypositive =0; - unsigned int Ynegative =0; - unsigned int threshold_overall = trunc (YoZ_projected_view -> points.size() / 10); - //YoZ page - for (size_t i = 0; i < YoZ_projected_view -> points.size(); i++) - { - if (YoZ_projected_view->points.at(i).y > threshold) - { - Ypositive ++; - } - else if (YoZ_projected_view->points.at(i).y < - threshold) - { - Ynegative ++; - } - } - if ((Ypositive < Ynegative) and (Ynegative - Ypositive >= threshold_overall)) - { - sign = -1; - } - else - { - sign = 1; - } -} -////////////////////////////////////////////////////////////////////////////////////////////// - - -template -void -pcl::GOODEstimation::create2DHistogramFromYOZProjection (PointCloudIn YOZ_projected_view, - double largest_side, unsigned int number_of_bins, int sign, std::vector > &YOZ_histogram) -{ - double y = largest_side / 2; - double z = largest_side / 2; - double interval_y = largest_side / number_of_bins; - double interval_z = largest_side / number_of_bins; - for (size_t i=0; i < YOZ_projected_view->points.size(); i++) - { - pcl::PointXYZ p; - p.y = sign * YOZ_projected_view->points.at(i).y + y; - p.z = YOZ_projected_view ->points.at(i).z + z; - - //if adaptive_support_lenght parameter == false, some points might be projected outside of the plane, we must discard them. - if ((trunc(p.y / interval_y) < YOZ_histogram.size()) and (trunc(p.z / interval_z) < YOZ_histogram.at(0).size()) - and (trunc(p.y / interval_y) >= 0) and (trunc(p.z / interval_z) >= 0)) - { - YOZ_histogram.at(trunc(p.y / interval_y)).at(trunc(p.z / interval_z))++; - } - } -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::create2DHistogramFromXOZProjection (PointCloudIn XOZ_projected_view, double largest_side, - unsigned int number_of_bins, int sign, std::vector > &XOZ_histogram) +template void +pcl::GOODEstimation::create2DHistogramFromProjection (const PointCloudInPtr &projected_view, const float largest_side, + const int8_t axis_a, const int8_t axis_b, std::vector > &histogram) const { - double x = largest_side / 2; - double z = largest_side / 2; - double interval_x = largest_side / number_of_bins; - double interval_z = largest_side / number_of_bins; - for (size_t i = 0; i < XOZ_projected_view->points.size(); i++) + const float half = .5f * largest_side; + const float interval = largest_side / (float) BinN; + + for (size_t i = 0; i < projected_view->size (); ++i) { - pcl::PointXYZ p; - p.x = sign * XOZ_projected_view->points.at(i).x + x; - p.z = XOZ_projected_view->points.at(i).z + z; + const float a = sign_ * projected_view->at (i).data[axis_a] + half; + float b ; + (axis_b == Y)? b = sign_ * projected_view->at (i).data[axis_b] + half : b = projected_view->at (i).data[axis_b] + half ; - if ((trunc(p.x / interval_x) < XOZ_histogram.size()) and (trunc(p.z / interval_z) < XOZ_histogram.at(0).size()) - and (trunc(p.x / interval_x) >= 0) and (trunc(p.z / interval_z) >= 0)) - { - XOZ_histogram.at(trunc(p.x / interval_x)).at(trunc(p.z / interval_z))++; - } + const int idx_o = (int) trunc (a / interval); //outer index + const int idx_i = (int) trunc (b / interval); //inner index + if ((idx_o < BinN) + and (idx_i < BinN) + and (idx_o >= 0) + and (idx_i >= 0)) + ++histogram[idx_o][idx_i]; } } ////////////////////////////////////////////////////////////////////////////////////////////// -template -void -pcl::GOODEstimation::create2DHistogramFromXOYProjection (PointCloudIn XOY_projected_view, double largest_side, - unsigned int number_of_bins, int sign, std::vector > &XOY_histogram) -{ - double x = largest_side / 2; - double y = largest_side / 2; - double interval_x = largest_side / number_of_bins; - double interval_y = largest_side / number_of_bins; - for (size_t i = 0; i < XOY_projected_view->points.size(); i++) - { - pcl::PointXYZ p; - p.x = sign * XOY_projected_view->points.at(i).x + x; - p.y = sign * XOY_projected_view->points.at(i).y + y; - if ((trunc(p.x / interval_x) < XOY_histogram.size()) and (trunc(p.y / interval_y) < XOY_histogram.at(0).size()) and - (trunc(p.x / interval_x) >= 0) and (trunc(p.y / interval_y) >= 0)) - { - XOY_histogram.at(trunc(p.x / interval_x)).at(trunc(p.y / interval_y))++; - } - } -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template +template void -pcl::GOODEstimation::normalizingHistogram (std::vector histogram, std::vector &normalized_histogram) +pcl::GOODEstimation::normalizeHistogram (const std::vector histogram, std::vector &normalized_histogram) { - int sum_all_bins = 0; - //compute sumation of all histogram's bins. - for(std::vector::iterator it = histogram.begin(); it != histogram.end(); ++it) - { - sum_all_bins += *it; - } + ///compute sumation of all histogram's bins. + float sum_all_bins = std::accumulate (histogram.begin (), histogram.end (), 0); + if (sum_all_bins != 0) - { - for(std::vector::iterator it = histogram.begin(); it != histogram.end(); ++it) + { + size_t idx = 0; + for(std::vector::const_iterator it = histogram.begin(); it != histogram.end(); ++it) { - normalized_histogram.push_back (*it / float (sum_all_bins)); + normalized_histogram.at (idx) = (*it / sum_all_bins); + idx++; } } } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::viewpointEntropy (std::vector normalized_histogram, float &entropy) +pcl::GOODEstimation::viewpointEntropy (const std::vector normalized_histogram, float &entropy) { - //http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform + ///NOTE: http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform entropy =0; - for(std::vector::iterator it = normalized_histogram.begin(); it != normalized_histogram.end(); ++it) + for(std::vector::const_iterator it = normalized_histogram.begin(); it != normalized_histogram.end(); ++it) { if (*it != 0) { @@ -288,80 +163,56 @@ pcl::GOODEstimation::viewpointEntropy (std::vector +template void -pcl::GOODEstimation::findMaxViewPointEntropy (std::vector view_point_entropy, int &index) +pcl::GOODEstimation::findMaxViewPointEntropy (const std::vector view_point_entropy, int &index) { index = 0; - std::vector::iterator it; - it=std::max_element (view_point_entropy.begin(), view_point_entropy.end()); + std::vector::const_iterator it; + it = std::max_element (view_point_entropy.begin(), view_point_entropy.end()); index = it - view_point_entropy.begin (); - //std::cout << "\nindex ="<< it - view_point_entropy.begin() <<"\t , content = " << *it <<"\n"; } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::averageHistograms (std::vector histogram1, std::vector historam2, std::vector historam3, std::vector &average) +pcl::GOODEstimation::varianceOfHistogram (const std::vector histogram, float &variance) { - for (size_t i = 0; i < histogram1.size(); i++ ) - { - average.push_back (float(histogram1.at(i) + historam2.at(i) + historam3.at(i)) / float(3.00)); - } -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::meanOfHistogram (std::vector histogram, float &mean) -{ - // http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm - float mu = 0; + ///NOTE: https://people.richland.edu/james/lecture/m170/ch06-prb.html + ///NOTE: http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm + + float mean = 0; for (size_t i = 0; i < histogram.size(); i++) { - mu += (i+1) * histogram.at(i); + mean += (i+1) * histogram.at(i); } - mean = mu; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::varianceOfHistogram (std::vector histogram, float mean, float &variance) -{ - //https://people.richland.edu/james/lecture/m170/ch06-prb.html - //http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm - float variance_tmp = 0; + for (size_t i = 0; i < histogram.size(); i++) { - variance_tmp += pow ((i+1)-mean , 2) * histogram.at(i); + variance += std::pow ((i+1)-mean , 2) * histogram.at(i); } - variance = variance_tmp; + } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, std::vector > normalized_projected_views, - std::vector &sorted_normalized_projected_views, - std::string &name_of_sorted_projected_plane /*debug*/) +pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, const std::vector > normalized_projected_views, + std::vector &sorted_normalized_projected_views, std::string &name_of_sorted_projected_plane) { float variance1 = 0; float variance2 = 0; - float mean = 0; sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(maximum_entropy_index).begin(), - normalized_projected_views.at(maximum_entropy_index).end()); + normalized_projected_views.at(maximum_entropy_index).end()); switch (maximum_entropy_index) { case 0 : name_of_sorted_projected_plane += "YoZ - "; - meanOfHistogram (normalized_projected_views.at(1), mean); - varianceOfHistogram (normalized_projected_views.at(1), mean, variance1); - meanOfHistogram (normalized_projected_views.at(2), mean); - varianceOfHistogram (normalized_projected_views.at(2), mean, variance2); + varianceOfHistogram (normalized_projected_views.at(1), variance1); + varianceOfHistogram (normalized_projected_views.at(2), variance2); if (variance1 <= variance2) { @@ -378,11 +229,9 @@ pcl::GOODEstimation::objectViewHistogram (int maximum_en break; case 1 : - name_of_sorted_projected_plane += "XoZ - "; - meanOfHistogram (normalized_projected_views.at(0), mean); - varianceOfHistogram (normalized_projected_views.at(0), mean, variance1); - meanOfHistogram (normalized_projected_views.at(2), mean); - varianceOfHistogram (normalized_projected_views.at(2), mean, variance2); + name_of_sorted_projected_plane += "XoZ - "; + varianceOfHistogram (normalized_projected_views.at(0), variance1); + varianceOfHistogram (normalized_projected_views.at(2), variance2); if (variance1 <= variance2) { @@ -399,11 +248,9 @@ pcl::GOODEstimation::objectViewHistogram (int maximum_en break; case 2 : - name_of_sorted_projected_plane += "XoY - "; - meanOfHistogram (normalized_projected_views.at(0), mean); - varianceOfHistogram (normalized_projected_views.at(0), mean, variance1); - meanOfHistogram (normalized_projected_views.at(1), mean); - varianceOfHistogram (normalized_projected_views.at(1), mean, variance2); + name_of_sorted_projected_plane += "XoY - "; + varianceOfHistogram (normalized_projected_views.at(0), variance1); + varianceOfHistogram (normalized_projected_views.at(1), variance2); if (variance1 <= variance2) { @@ -425,73 +272,25 @@ pcl::GOODEstimation::objectViewHistogram (int maximum_en } ////////////////////////////////////////////////////////////////////////////////////////////// -template +template void -pcl::GOODEstimation::computeLargestSideOfBoundingBox (pcl::PointXYZ dimensions, double &largest_side ) -{ - std::vector tmp; - tmp.push_back (dimensions.x); tmp.push_back (dimensions.y); tmp.push_back (dimensions.z); - std::vector::iterator it; - it=std::max_element(tmp.begin(),tmp.end()); - largest_side = *it; - largest_side += 0.02; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::computeDistanceBetweenProjections (std::vector > projection1, std::vector > projection2, float &distance) -{ - float sum = 0 ; - for (size_t i = 0; i < projection1.size(); i++) - { for (size_t j = 0; j < projection1.size(); j++) - { - float d = projection1.at(i).at(j) - projection2.at(i).at(j); - sum += pow (d, 2); - } - } - distance = sqrt (sum); -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -inline std::vector > pcl::GOODEstimation::initializing2DHistogram (unsigned int number_of_bins) -{ - std::vector row (number_of_bins, 0); - std::vector > histogram2D (number_of_bins, row); - return histogram2D; -} -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::computeFeature (PointCloudOut &output ) +pcl::GOODEstimation::computeFeature (PointCloudOut &output ) { std::vector object_description; - double largest_side = 0; - int sign = 1; - std::vector view_point_entropy; + float largest_side = 0; + std::vector view_point_entropy (3); std::string name_of_sorted_projected_plane; - PointCloudIn initial_cloud_projection_along_x_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud - PointCloudIn initial_cloud_projection_along_y_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud - PointCloudIn initial_cloud_projection_along_z_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + PointCloudInPtr initial_cloud_projection_along_x_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + PointCloudInPtr initial_cloud_projection_along_y_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud + PointCloudInPtr initial_cloud_projection_along_z_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud pcl::PointXYZ pt; /* __________________________ | | | construct ORF based on PCA | |____________________________| */ - - ///////// the theory of new shape descriptor /////////////////////////// - // //NOTE the PCA base reference frame construction basically does: - // 1) compute the centroid (c0, c1, c2) and the normalized covariance - // 2) compute the eigenvectors e0, e1, e2. The reference system will be (e0, e1, e0 X e1) --- note: e0 X e1 = +/- e2 - // 3) move the points in that RF --- note: the transformation given by the rotation matrix (e0, e1, e0 X e1) & (c0, c1, c2) must be inverted - // 4) compute the max, the min and the center of the diagonal (mean_diag) - // 5) given a box centered at the origin with size (max_pt.x - min_pt.x, max_pt.y - min_pt.y, max_pt.z - min_pt.z) - // the transformation you have to apply is Rotation = (e0, e1, e0 X e1) & Translation = Rotation * mean_diag + (c0, c1, c2) - // compute principal directions + /// compute principal directions Eigen::Vector4f centroid; pcl::compute3DCentroid (*input_, centroid); Eigen::Matrix3f covariance; @@ -499,52 +298,51 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &outp Eigen::SelfAdjointEigenSolver eigen_solver (covariance, Eigen::ComputeEigenvectors); Eigen::Matrix3f eigen_vectors = eigen_solver.eigenvectors(); eigen_vectors.col(2) = eigen_vectors.col(0).cross(eigen_vectors.col(1)); - //std::cout << "eigen vectores : \n " << eigen_vectors << std::endl; - - //Eigen::Vector3f eigen_values = eigen_solver.eigenvalues(); - //std::cout << "The eigenvalues of the covariance matrix before sorting are \n:" << eigen_values << endl; - - //sorting eigen vectors based on eigen values + + ///sorting eigen vectors based on eigen values eigen_vectors.col(0) = eigen_vectors.col(2); - eigen_vectors.col(2) = eigen_vectors.col(0).cross (eigen_vectors.col(1)); - //std::cout << "eigen vectores cross product : \n " << eigen_vectors << std::endl; + eigen_vectors.col(2) = eigen_vectors.col(0).cross (eigen_vectors.col(1)); - // move the points to the PCA based reference frame + /// move the points to the PCA based reference frame Eigen::Matrix4f p2w (Eigen::Matrix4f::Identity()); p2w.block<3,3>(0,0) = eigen_vectors.transpose(); p2w.block<3,1>(0,3) = -1.f * (p2w.block<3,3>(0,0) * centroid.head<3>()); transformation_ = p2w; - PointCloudIn transformed_point_cloud (new pcl::PointCloud); + PointCloudInPtr transformed_point_cloud (new pcl::PointCloud); pcl::transformPointCloud (*input_, *transformed_point_cloud, p2w); transformed_point_cloud_ = transformed_point_cloud; - //compute the max, the min and the center of the diagonal (mean_diag) + ///compute the max, the min and the center of the diagonal (mean_diag) PointInT min_pt, max_pt; pcl::getMinMax3D (*transformed_point_cloud_, min_pt, max_pt); const Eigen::Vector3f mean_diag = 0.5f * (max_pt.getVector3fMap() + min_pt.getVector3fMap()); - // centroid transform - Eigen::Quaternionf qfinal (eigen_vectors);//rotation matrix + + /// centroid transform + Eigen::Quaternionf qfinal (eigen_vectors); ///rotation matrix Eigen::Vector3f center_of_bbox = eigen_vectors*mean_diag + centroid.head<3>(); // Translation = Rotation * center_diag + (c0, c1, c2) center_of_bbox_.x = center_of_bbox(0,0); center_of_bbox_.y = center_of_bbox(1,0); center_of_bbox_.z = center_of_bbox(2,0); -/* _________________________________ + + /* _______________________________ | | | construct three projection view | |_________________________________| */ - // ax+by+cz+d=0, where b=c=d=0, and a=1, or said differently, the YoZ plane. + const static float OFFSET_TO_THE_ORIGIN = 0.3; + + /// ax+by+cz+d=0, where b=c=d=0, and a=1, or said differently, the YoZ plane. pcl::ModelCoefficients::Ptr coefficients_x (new pcl::ModelCoefficients ()); coefficients_x->values.resize (4); coefficients_x->values[0] = 1.0; coefficients_x->values[1] = 0; coefficients_x->values[2] = 0; coefficients_x->values[3] = 0; projectPointCloudToPlane (transformed_point_cloud_, coefficients_x, initial_cloud_projection_along_x_axis); for (size_t i = 0; i < initial_cloud_projection_along_x_axis->points.size(); i++) { - initial_cloud_projection_along_x_axis->points.at(i).x = 0.25; + initial_cloud_projection_along_x_axis->points.at(i).x = OFFSET_TO_THE_ORIGIN; } vector_of_projected_views_.push_back (initial_cloud_projection_along_x_axis); - //ax+by+cz+d=0, where a=c=d=0, and b=1, or said differently, the XoZ plane. + ///ax+by+cz+d=0, where a=c=d=0, and b=1, or said differently, the XoZ plane. pcl::ModelCoefficients::Ptr coefficients_y (new pcl::ModelCoefficients ()); coefficients_y->values.resize (4); coefficients_y->values[0] = 0.0; coefficients_y->values[1] = 1.0; coefficients_y->values[2] = 0; coefficients_y->values[3] = 0; @@ -552,112 +350,102 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &outp projectPointCloudToPlane (transformed_point_cloud_, coefficients_y, initial_cloud_projection_along_y_axis); for (size_t i = 0; i < initial_cloud_projection_along_y_axis->points.size(); i++) { - initial_cloud_projection_along_y_axis->points.at(i).y = 0.3; + initial_cloud_projection_along_y_axis->points.at(i).y = OFFSET_TO_THE_ORIGIN; } vector_of_projected_views_.push_back (initial_cloud_projection_along_y_axis); - // ax+by+cz+d=0, where a=b=d=0, and c=1, or said differently, the XoY plane. + /// ax+by+cz+d=0, where a=b=d=0, and c=1, or said differently, the XoY plane. pcl::ModelCoefficients::Ptr coefficients_z (new pcl::ModelCoefficients ()); coefficients_z->values.resize (4); coefficients_z->values[0] = 0; coefficients_z->values[1] = 0; coefficients_z->values[2] = 1.0; coefficients_z->values[3] = 0; projectPointCloudToPlane (transformed_point_cloud_, coefficients_z, initial_cloud_projection_along_z_axis); for (size_t i = 0; i < initial_cloud_projection_along_z_axis->points.size(); i++) { - initial_cloud_projection_along_z_axis->points.at(i).z = 0.3; + initial_cloud_projection_along_z_axis->points.at(i).z = OFFSET_TO_THE_ORIGIN; } vector_of_projected_views_.push_back (initial_cloud_projection_along_z_axis); - /* _________________________ - | | - | Axes sign disambiguation | - |___________________________| */ - - computeBoundingBoxDimensions (transformed_point_cloud_, bbox_dimensions_); - computeLargestSideOfBoundingBox (bbox_dimensions_ ,largest_side); + /// compute BoundingBox Dimensions + computeBoundingBoxDimensions (); + largest_side = computeLargestSideOfBoundingBox (); /* _________________________ | | | Axes sign disambiguation | |___________________________| */ - int Sx=1, Sy=1; - signDisambiguationXAxis (initial_cloud_projection_along_y_axis, threshold_, Sx );//XoZ Plane - signDisambiguationYAxis (initial_cloud_projection_along_x_axis, threshold_, Sy );//YoZ Plane - sign = Sx * Sy; - sign_=sign; + int8_t sx = 1, sy = 1; + signDisambiguation (initial_cloud_projection_along_y_axis, X, sx); ///XoZ Plane + signDisambiguation (initial_cloud_projection_along_x_axis, Y, sy); ///YoZ Plane + sign_= sx * sy; + /* _______________________________________________________ | | | compute histograms of projection of the given object | |_________________________________________________________| */ - - std::vector complete_object_histogram; - std::vector complete_object_histogram_normalized;//each projection view is normalized sepreatly - std::vector > XOY_histogram = initializing2DHistogram (number_of_bins_); - std::vector > XOZ_histogram = initializing2DHistogram (number_of_bins_); - std::vector > YOZ_histogram = initializing2DHistogram (number_of_bins_); - - std::vector > normalized_projected_views; - - //projection along X axis - create2DHistogramFromYOZProjection (initial_cloud_projection_along_x_axis, largest_side, number_of_bins_, sign,YOZ_histogram); - - std::vector histogramYOZ1D; + + ///initialize vectors + std::vector complete_object_histogram (3 * BinN * BinN); + std::vector complete_object_histogram_normalized (3 * BinN * BinN); ///each projection view is normalized sepreatly + std::vector > XOY_histogram (BinN, std::vector (BinN)); + std::vector > XOZ_histogram (BinN, std::vector (BinN)); + std::vector > YOZ_histogram (BinN, std::vector (BinN)); + std::vector > normalized_projected_views (3, std::vector (BinN * BinN)); + + ///YOZ Projection + std::vector histogramYOZ1D (BinN * BinN); + std::vector normalized_histogramYoZ (BinN * BinN); + float YoZ_entropy = 0; + create2DHistogramFromProjection (initial_cloud_projection_along_x_axis, largest_side, Y, Z, YOZ_histogram); convert2DHistogramTo1DHistogram (YOZ_histogram, histogramYOZ1D); - complete_object_histogram.insert (complete_object_histogram.end(), histogramYOZ1D.begin(), histogramYOZ1D.end()); - std::vector normalized_histogramYoZ; - normalizingHistogram (histogramYOZ1D, normalized_histogramYoZ); - normalized_projected_views.push_back (normalized_histogramYoZ); - + complete_object_histogram.insert (complete_object_histogram.end(), histogramYOZ1D.begin(), histogramYOZ1D.end()); + normalizeHistogram (histogramYOZ1D, normalized_histogramYoZ); + normalized_projected_views.at (0) = normalized_histogramYoZ; complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramYoZ.begin(), normalized_histogramYoZ.end()); - float YoZ_entropy = 0; viewpointEntropy (normalized_histogramYoZ, YoZ_entropy); - //viewpointEntropyNotNormalized(histogramYOZ1D, YoZ_entropy); - view_point_entropy.push_back (YoZ_entropy); - - //projection along Y axis - create2DHistogramFromXOZProjection (initial_cloud_projection_along_y_axis, largest_side, number_of_bins_, sign,XOZ_histogram); - - std::vector histogramXOZ1D; + view_point_entropy.at (0) = YoZ_entropy; + + ///XOZ Projection + std::vector histogramXOZ1D (BinN * BinN); + std::vector normalized_histogramXoZ (BinN * BinN); + float XoZ_entropy = 0; + create2DHistogramFromProjection (initial_cloud_projection_along_y_axis, largest_side, X, Z, XOZ_histogram); convert2DHistogramTo1DHistogram (XOZ_histogram, histogramXOZ1D); complete_object_histogram.insert (complete_object_histogram.end(), histogramXOZ1D.begin(), histogramXOZ1D.end()); - - std::vector normalized_histogramXoZ; - normalizingHistogram (histogramXOZ1D, normalized_histogramXoZ); - normalized_projected_views.push_back (normalized_histogramXoZ); - - complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoZ.begin(), normalized_histogramXoZ.end()); - float XoZ_entropy = 0; + normalizeHistogram (histogramXOZ1D, normalized_histogramXoZ); + normalized_projected_views.at (1) = normalized_histogramXoZ; + complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoZ.begin(), normalized_histogramXoZ.end()); viewpointEntropy (normalized_histogramXoZ, XoZ_entropy); - view_point_entropy.push_back (XoZ_entropy); + view_point_entropy.at (1) = XoZ_entropy; - //projection along Z axis - create2DHistogramFromXOYProjection (initial_cloud_projection_along_z_axis, largest_side, number_of_bins_, sign, XOY_histogram); - - std::vector histogramXOY1D; + ///XOY Projection + std::vector histogramXOY1D (BinN * BinN); + std::vector normalized_histogramXoY (BinN * BinN); + float XoY_entropy = 0; + create2DHistogramFromProjection (initial_cloud_projection_along_z_axis, largest_side, X, Y, XOY_histogram); convert2DHistogramTo1DHistogram (XOY_histogram, histogramXOY1D); - complete_object_histogram.insert (complete_object_histogram.end(), histogramXOY1D.begin(), histogramXOY1D.end()); - - std::vector normalized_histogramXoY; - normalizingHistogram (histogramXOY1D, normalized_histogramXoY); - normalized_projected_views.push_back (normalized_histogramXoY); - + complete_object_histogram.insert (complete_object_histogram.end(), histogramXOY1D.begin(), histogramXOY1D.end()); + normalizeHistogram (histogramXOY1D, normalized_histogramXoY); + normalized_projected_views.at (2) = normalized_histogramXoY; complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoY.begin(), normalized_histogramXoY.end()); - float XoY_entropy = 0; viewpointEntropy (normalized_histogramXoY, XoY_entropy); - view_point_entropy.push_back (XoY_entropy); - - std::vector normalized_histogram; - normalizingHistogram (complete_object_histogram, normalized_histogram); - - int maximum_entropy_index = 0; - findMaxViewPointEntropy (view_point_entropy, maximum_entropy_index); + view_point_entropy.at (2) = XoY_entropy; + + /* ____________________________________ + | | + | producing a GOOD shape description | + |______________________________________| */ - objectViewHistogram (maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); - order_of_projected_plane_ = name_of_sorted_projected_plane; + ///NOTE: The ordering of the three distribution vectors is first by decreasing values of entropy. + ///Afterwards the second and third vectors are sorted again by increasing values of variance. + int maximum_entropy_index = 0; + findMaxViewPointEntropy (view_point_entropy, maximum_entropy_index); + objectViewHistogram (maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); + order_of_projected_plane_ = name_of_sorted_projected_plane; for(size_t i =0; i < object_description.size(); i++) - output.points[0].histogram[i]=object_description.at(i); + output.points[0].histogram[i] = object_description.at(i); } From 2ca0d1f0d65960c048255689b8bc5db6b132a603 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Fri, 8 Dec 2017 18:02:07 +0000 Subject: [PATCH 11/24] update - adding the GOOD tutorial --- doc/tutorials/content/good_estimation.rst | 289 ++++++++++++++++++ .../content/images/good_descriptor.jpg | Bin 0 -> 137242 bytes examples/features/example_good_descriptor.cpp | 14 +- features/CMakeLists.txt | 1 - features/include/pcl/features/good.h | 2 +- 5 files changed, 297 insertions(+), 9 deletions(-) create mode 100644 doc/tutorials/content/good_estimation.rst create mode 100644 doc/tutorials/content/images/good_descriptor.jpg diff --git a/doc/tutorials/content/good_estimation.rst b/doc/tutorials/content/good_estimation.rst new file mode 100644 index 00000000000..26dc3830c40 --- /dev/null +++ b/doc/tutorials/content/good_estimation.rst @@ -0,0 +1,289 @@ +.. _good_estimation: + +GOOD: A Global Orthographic Object Descriptor for 3D Object Recognition and Manipulation +------------------------------------------------------------------------------------------- + +The Global Orthographic Object Descriptor (GOOD) has been designed to be robust, descriptive and efficient to compute and use. GOOD descriptor has two outstanding characteristics: + + (1) Providing a good trade-off among: + + * **descriptiveness**, + * **robustness**, + * **computation time**, + * **memory usage**. + + (2) Allowing concurrent object recognition and pose estimation for manipulation. + +The performance of the proposed object descriptor is compared with the main state-of-the-art descriptors. Experimental results show that the overall classification performance obtained with GOOD is comparable to the best performances obtained with the state-of-the-art descriptors. Concerning memory and computation time, GOOD clearly outperforms the other descriptors. Therefore, GOOD is especially suited for real-time applications. The current implementation of GOOD descriptor supports several functionalities for 3D object recognition and Object Manipulation. + +To show all the functionalities and properties of the GOOD descriptor, a demonstration in real time was performed. +A video of this demonstration is available at: https://youtu.be/iEq9TAaY9u8 + +.. raw:: html + + + +Theoretical Primer +-------------------------- +Object representation is one of the most challenging tasks in robotics because it must provide reliable information in real-time to enable the robot to physically interact with the objects in its environment. To ensure robustness, a global object descriptor must be computed based on a unique and repeatable object reference frame. Moreover, the descriptor should contain enough information enabling to recognize the same or similar objects seen from different perspectives. + +This work presents a new object descriptor named Global Orthographic Object Descriptor (**GOOD**) designed to be robust, descriptive and efficient to compute and use. It consists of the following steps: + + * We propose a novel sign disambiguation method, for computing a unique reference frame from the eigenvectors obtained through Principal Component Analysis of the point cloud of the target object view captured by a 3D sensor. + + * Three principal orthographic projections and their distribution matrices are computed by exploiting the object reference frame. + + * The descriptor is finally obtained by concatenating the distribution matrices in a sequence determined by entropy and variance features of the projections. + +The following figure illustrates an example of the producing a GOOD shape description for a mug object: + + +.. image:: images/good_descriptor.jpg + :align: center + +**An illustrative example of the producing a GOOD shape description for a mug object (number of bin = 5):** (**a**) The mug object and its bounding box, reference frame, and three projected views; the object's points are then projected onto three planes; therefore, XoZ (**b**), YoZ (**c**) and XoY projections (**d**) are created. Each plane is partitioned +into bins and the number of points falling into each bin is counted. Accordingly, three distribution matrices are obtained for the projections; afterward, each distribution matrix is converted to a distribution vector, (i.e. (**e**), (**f**) and (**g**)) and two statistic features including entropy and variance are then calculated for each distribution vector; +(**h**) the distribution vectors are consequently concatenated together using the statistics features, to form a single description for the given object. The ordering of the three distribution vectors is first by decreasing values of entropy. Afterward, the second and third vectors are sorted again by increasing values of variance. + +Estimating GOOD features +-------------------------- +The GOOD descriptor is implemented in PCL as part of the `pcl_features +`_ library. +This tutorial exemplifies how to use the GOOD description. First of all, you will need a point cloud in PCD or PLY format. For your convenience, we have provided a sample point cloud in both PCD format in the following path "**../pcl/test/milk.pcd**" + +The code +-------- +.. code-block:: cpp + :linenos: + #include + #include + #include + #include + #include + + typedef pcl::PointXYZRGBA PointT; + typedef pcl::PointCloud::Ptr PointCloudInPtr; + + int main(int argc, char* argv[]) + { + if (argc != 2) + { + std::cerr << "\n Syntax is: example_good_descriptor " << std::endl; + return 0; + } + + std::string object_path = argv[1]; + pcl::PointCloud::Ptr object (new pcl::PointCloud); + if (pcl::io::load(object_path, *object)==-1) + { + std::cerr << "\n file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + return -1; + } + + /*____________________________ + | | + | Setup the GOOD descriptor | + |_____________________________| */ + + const int NUMBER_OF_BINS = 5; + const unsigned int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; + pcl::PointCloud > object_description; + + pcl::GOODEstimation test_GOOD_descriptor ; + test_GOOD_descriptor.setThreshold(0.0015); + ///NOTE: GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); + test_GOOD_descriptor.setInputCloud(object); // pass original point cloud + test_GOOD_descriptor.compute(object_description); // Actually compute the GOOD discriptor for the given object + + ///Printing GOOD_descriptor for the given point cloud, + ///NOTE: the descriptor is only the first point. + std::cout <<"\n GOOD =" << object_description.points[0] < vector_of_projected_views; + PointCloudInPtr transformed_object (new pcl::PointCloud); + + /// Get objec point cloud in local reference frame + transformed_object = test_GOOD_descriptor.getTransformedObject (); + /// Get three orthographic projects and transformation matrix + vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); + transformation = test_GOOD_descriptor.getTransformationMatrix (); + std::cout << "\n transofrmation matrix =\n"<" << std::endl; + return 0; + } + + std::string object_path = argv[1]; + pcl::PointCloud::Ptr object (new pcl::PointCloud); + if (pcl::io::load(object_path, *object)==-1) + { + std::cerr << "\n file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + return -1; + } + + +The following code will set up the GOOD descriptor; GOOD descriptor has two important parameters including: + + * **NUMBER_OF_BINS:** each projection plane is divided into NUMBER_OF_BINS * NUMBER_OF_BINS square bins. Therefore the size of GOOD descriptor will be 3 * NUMBER_OF_BINS * NUMBER_OF_BINS. + * **Threshold:** this parameter is used in constructing local reference frame, especially in the sign disambiguation procedure. + + +.. code-block:: cpp + :linenos: + + const int NUMBER_OF_BINS = 5; + const unsigned int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; + pcl::PointCloud > object_description; + pcl::GOODEstimation test_GOOD_descriptor ; + test_GOOD_descriptor.setThreshold(0.0015); + + +Alternatively, the GOOD descriptor can be set up in a line: + +.. code-block:: cpp + :linenos: + + pcl::GOODEstimation test_GOOD_descriptor (0.0015); + +Finally, we pass the input point cloud and compute the GOOD descriptor for the given point cloud. + +.. code-block:: cpp + :linenos: + + test_GOOD_descriptor.setInputCloud(object); + test_GOOD_descriptor.compute(object_description); + + +GOOD also provides a set of functionalities that are useful for manipulation tasks. They are including: + + * Get objec point cloud in local reference frame + * Get three orthographic projects and transformation matrix + * Get the order of the three projected planes + +.. code-block:: cpp + :linenos: + + Eigen::Matrix4f transformation; + pcl::PointXYZ center_of_bounding_box; + Eigen::Vector3f bounding_box_dimensions; + std::string order_of_projected_planes; + std::vector vector_of_projected_views; + PointCloudInPtr transformed_object (new pcl::PointCloud); + + /// Get objec point cloud in local reference frame + transformed_object = test_GOOD_descriptor.getTransformedObject (); + + /// Get three orthographic projects and transformation matrix + vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); + transformation = test_GOOD_descriptor.getTransformationMatrix (); + std::cout << "\n transofrmation matrix =\n"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

~+tBz!Fi?uIJSc9ulzfNUj+}s#LL#fV zttJ@u`ExMM5NRcrH$yZ2*!`HAhE%)0)wLV}Lco3c+<#DJGpX+&Gzh+GV6Nk{FxN&9 zavG_>5O_nN>Few+SJ0^N)CJgjPc7_q_-_6`9YW7lx&>U$RaU_pjzk@f|1^E0 z@x?g~EjmqhA8WeHLjJ*8XYtkcm?7%;HZrF|V%o~z8z4Bd?z1pMWK~OKeByrW2D)ud zf-U?%VIV5aj5c#M$ZR!bLg3oN)2X_9GUO$Ht2+99?Di=p+WUhglevoNTAv9Vy1LZ^ zugm#Y3JpFU&CWM0q@3Bi$3RfjDFR!2MXeXf_wFY^@lImsQK3SY^~Q$<6`M3;6mYhF z7Kwn^VYm$CTl;cG1$#TinOYB`{R1+_WR?dTTD3?RhBgp?u$G40G4zj{T&rfKF&M~@ z!8or)6~Ps;+z^owEm}(#(~QwMBhy{TBRtm-Myg`*oT| zy˜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 > object_description; pcl::GOODEstimation test_GOOD_descriptor ; - test_GOOD_descriptor.setThreshold(0.0015); + test_GOOD_descriptor.setThreshold (0.0015); ///NOTE: GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); - test_GOOD_descriptor.setInputCloud(object); // pass original point cloud - test_GOOD_descriptor.compute(object_description); // Actually compute the GOOD discriptor for the given object + test_GOOD_descriptor.setInputCloud (object); // pass original point cloud + test_GOOD_descriptor.compute (object_description); // Actually compute the GOOD discriptor for the given object ///Printing GOOD_descriptor for the given point cloud, ///NOTE: the descriptor is only the first point. @@ -113,7 +113,7 @@ int main(int argc, char* argv[]) | Usefull Functionalities for Object Manipulation | |___________________________________________________| */ - ///NOTE: The following functinalities of GOOD descriptor are usefull for manipulation tasks: + ///NOTE: The following functionalities of the GOOD descriptor are useful for manipulation tasks: Eigen::Matrix4f transformation; pcl::PointXYZ center_of_bounding_box; Eigen::Vector3f bounding_box_dimensions; @@ -143,8 +143,8 @@ int main(int argc, char* argv[]) | Visualizing orthographic projections | |__________________________________________| */ - ///NOTE: Pass the following point cloud to a pcl::visualization::PCLVisualizer forVisualizing the - //transformed object, local reference fram and three orthographic projections + ///NOTE: Pass the following point cloud to a pcl::visualization::PCLVisualizer for Visualizing the + ///transformed object, local reference fram and three orthographic projections //pcl::PointCloud::Ptr transformed_object_and_projected_views (new pcl::PointCloud); //*transformed_object_and_projected_views += *vector_of_projected_views.at(0); diff --git a/features/CMakeLists.txt b/features/CMakeLists.txt index 865eb982ef4..1e8feefcaf6 100644 --- a/features/CMakeLists.txt +++ b/features/CMakeLists.txt @@ -62,7 +62,6 @@ if(build) "include/pcl/${SUBSYS_NAME}/usc.h" "include/pcl/${SUBSYS_NAME}/boundary.h" "include/pcl/${SUBSYS_NAME}/range_image_border_extractor.h" - "include/pcl/${SUBSYS_NAME}/range_image_border_extractor.h" "include/pcl/${SUBSYS_NAME}/good.h" ) diff --git a/features/include/pcl/features/good.h b/features/include/pcl/features/good.h index 832844a914d..112455180e0 100644 --- a/features/include/pcl/features/good.h +++ b/features/include/pcl/features/good.h @@ -168,7 +168,7 @@ namespace pcl enum Axis { X, Y, Z}; - /** \brief number of bins along one dimension; each projection plane is divided into number_of_bins ? number_of_bins square bins. + /** \brief number of bins along one dimension; each projection plane is divided into BinN * BinN square bins. * By default, the number_of_bins_ is set to 5. */ From 27f4888226cba759533a1c58e380955e7c245fb9 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Fri, 8 Dec 2017 18:50:32 +0000 Subject: [PATCH 12/24] update good tutorial and example of good descriptor --- doc/tutorials/content/good_estimation.rst | 27 +++---------------- examples/features/example_good_descriptor.cpp | 2 +- features/src/good.cpp | 4 +-- 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/doc/tutorials/content/good_estimation.rst b/doc/tutorials/content/good_estimation.rst index 26dc3830c40..8e4f8a4b3b2 100644 --- a/doc/tutorials/content/good_estimation.rst +++ b/doc/tutorials/content/good_estimation.rst @@ -85,7 +85,7 @@ The code | Setup the GOOD descriptor | |_____________________________| */ - const int NUMBER_OF_BINS = 5; + const int NUMBER_OF_BINS = 15; const unsigned int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; pcl::PointCloud > object_description; @@ -164,7 +164,7 @@ The following code will set up the GOOD descriptor; GOOD descriptor has two impo .. code-block:: cpp :linenos: - const int NUMBER_OF_BINS = 5; + const int NUMBER_OF_BINS = 15; const unsigned int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; pcl::PointCloud > object_description; pcl::GOODEstimation test_GOOD_descriptor ; @@ -231,28 +231,9 @@ The syntax for running the sample code is : ./pcl/build/bin/pcl_example_good_descriptor ../test/milk.pcd -.. code-block:: bash - - GOOD =(0, 0.0207239, 0.0786632, 0.0221833, 0, 0, 0.0754524, 0.129451, 0.0750876, 0, 0, 0.0650905, 0.101649, - 0.0682283, 0, 0, 0.0602014, 0.0890981, 0.0600555, 0, 0, 0.0412288, 0.068885, 0.0440018, 0, 0, 0, 0, 0, 0, 0, 0.0642148, - 0.198263, 0.000218914, 0, 0, 0.0207239, 0.358581, 0.0884413, 0, 0, 0.0212347, 0.248322, 0, 0, 0, 0, 0, 0, 0, 0, 0.0375073, - 0.084063, 0, 0, 0, 0.0106538, 0.22446, 0.0448774, 0, 0, 0.0146673, 0.180385, 0.0399154, 0, 0, 0.0215995, 0.183888, - 0.00386748, 0, 0, 0.0217455, 0.13237, 0, 0) - - - transofrmation matrix = - -0.0108418 0.887046 0.461555 -0.236646 - 0.998495 -0.0152106 0.0526872 0.0132545 - 0.0537565 0.461432 -0.885546 0.75173 - 0 0 0 1 - center_of_bounding_box = (-0.0624728,-0.140744,0.790559) - - bounding_box_dimensions = 0.257679 - 0.151612 - 0.111211 - - order of projected planes = XoY - YoZ - XoZ +.. image:: images/output_good.jpg + :align: center CITING diff --git a/examples/features/example_good_descriptor.cpp b/examples/features/example_good_descriptor.cpp index b19b14384cb..f93fc82b324 100644 --- a/examples/features/example_good_descriptor.cpp +++ b/examples/features/example_good_descriptor.cpp @@ -94,7 +94,7 @@ int main(int argc, char* argv[]) | Setup the GOOD descriptor | |_____________________________| */ - const int NUMBER_OF_BINS = 5; + const int NUMBER_OF_BINS = 15; const int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; pcl::PointCloud > object_description; diff --git a/features/src/good.cpp b/features/src/good.cpp index 9c0a8bc136a..4f957ad67ab 100644 --- a/features/src/good.cpp +++ b/features/src/good.cpp @@ -42,8 +42,8 @@ #include // Instantiations of specific point types #ifdef PCL_ONLY_CORE_POINT_TYPES -PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA))((5))) +PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::PointXYZRGB)(pcl::PointXYZRGBA))((15))) #else -PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)((5))) +PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)((15))) #endif #endif // PCL_NO_PRECOMPILE \ No newline at end of file From cc98609dcc5c504201c789beafdfb18faffb951c Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Sun, 10 Dec 2017 03:09:29 +0000 Subject: [PATCH 13/24] updated version of GOOD descriptor- add the getAxisAlignedBoundingBox function to the pcl/common/common.h and common.hpp --- common/include/pcl/common/common.h | 8 + common/include/pcl/common/impl/common.hpp | 8 + doc/tutorials/content/good_estimation.rst | 140 ++++++------ examples/features/CMakeLists.txt | 2 +- examples/features/example_good_descriptor.cpp | 51 ++--- features/include/pcl/features/good.h | 153 ++++++------- features/include/pcl/features/impl/good.hpp | 206 ++++++++---------- features/src/good.cpp | 2 +- 8 files changed, 271 insertions(+), 299 deletions(-) diff --git a/common/include/pcl/common/common.h b/common/include/pcl/common/common.h index ef61328c29d..63b3d8cd553 100644 --- a/common/include/pcl/common/common.h +++ b/common/include/pcl/common/common.h @@ -201,6 +201,14 @@ namespace pcl PCL_EXPORTS void getMeanStdDev (const std::vector &values, double &mean, double &stddev); + /** \brief Compute get axis aligned boundingbox + * \param cloud the point cloud + * \return the resultant axis aligned boundingbox + * \ingroup common + */ + template Eigen::Vector4f + getAxisAlignedBoundingBox (const pcl::PointCloud &cloud); + } /*@}*/ #include diff --git a/common/include/pcl/common/impl/common.hpp b/common/include/pcl/common/impl/common.hpp index 520f20008e5..213e44a16cb 100644 --- a/common/include/pcl/common/impl/common.hpp +++ b/common/include/pcl/common/impl/common.hpp @@ -423,5 +423,13 @@ pcl::calculatePolygonArea (const pcl::PointCloud &polygon) return (area*0.5); } +////////////////////////////////////////////////////////////////////////////////////////////// +template Eigen::Vector4f +pcl::getAxisAlignedBoundingBox (const pcl::PointCloud &cloud) +{ + Eigen::Vector4f min, max; + getMinMax3D (cloud, min, max); + return (max - min); +} #endif //#ifndef PCL_COMMON_IMPL_H_ diff --git a/doc/tutorials/content/good_estimation.rst b/doc/tutorials/content/good_estimation.rst index 8e4f8a4b3b2..5bd3b3c220e 100644 --- a/doc/tutorials/content/good_estimation.rst +++ b/doc/tutorials/content/good_estimation.rst @@ -1,9 +1,11 @@ +:ref:`features_tutorial` + .. _good_estimation: GOOD: A Global Orthographic Object Descriptor for 3D Object Recognition and Manipulation ------------------------------------------------------------------------------------------- -The Global Orthographic Object Descriptor (GOOD) has been designed to be robust, descriptive and efficient to compute and use. GOOD descriptor has two outstanding characteristics: +The Global Orthographic Object Descriptor (**GOOD**) has been designed to be robust, descriptive and efficient to compute and use. GOOD descriptor has two outstanding characteristics: (1) Providing a good trade-off among: @@ -14,7 +16,8 @@ The Global Orthographic Object Descriptor (GOOD) has been designed to be robust, (2) Allowing concurrent object recognition and pose estimation for manipulation. -The performance of the proposed object descriptor is compared with the main state-of-the-art descriptors. Experimental results show that the overall classification performance obtained with GOOD is comparable to the best performances obtained with the state-of-the-art descriptors. Concerning memory and computation time, GOOD clearly outperforms the other descriptors. Therefore, GOOD is especially suited for real-time applications. The current implementation of GOOD descriptor supports several functionalities for 3D object recognition and Object Manipulation. +The performance of the proposed object descriptor is compared with the main state-of-the-art descriptors. Experimental results show that the overall classification performance obtained with GOOD is comparable to the best performances obtained with the state-of-the-art descriptors. Concerning memory and computation time, GOOD clearly outperforms the other descriptors (For more details please have a look at `our_paper +`_ ). Therefore, GOOD is especially suited for real-time applications. The current implementation of GOOD descriptor supports several functionalities for **3D Object Recognition** and **Object Manipulation**. To show all the functionalities and properties of the GOOD descriptor, a demonstration in real time was performed. A video of this demonstration is available at: https://youtu.be/iEq9TAaY9u8 @@ -53,18 +56,18 @@ This tutorial exemplifies how to use the GOOD description. First of all, you wil The code -------- + +It should be noted that the corresponding code is provided as an example in the PCL repository (i.e. ../pcl/examples/features/example_good_descriptor.cpp) and will be compiled if examples are enabled during compilation. + .. code-block:: cpp :linenos: #include - #include - #include - #include #include typedef pcl::PointXYZRGBA PointT; typedef pcl::PointCloud::Ptr PointCloudInPtr; - int main(int argc, char* argv[]) + int main (int argc, char* argv[]) { if (argc != 2) { @@ -72,11 +75,11 @@ The code return 0; } - std::string object_path = argv[1]; + std::string object_path = argv[1]; pcl::PointCloud::Ptr object (new pcl::PointCloud); - if (pcl::io::load(object_path, *object)==-1) + if (pcl::io::load (object_path, *object) == -1) { - std::cerr << "\n file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + std::cerr << "\n Failed to parse the file provided. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; return -1; } @@ -85,48 +88,42 @@ The code | Setup the GOOD descriptor | |_____________________________| */ - const int NUMBER_OF_BINS = 15; - const unsigned int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; - pcl::PointCloud > object_description; - - pcl::GOODEstimation test_GOOD_descriptor ; - test_GOOD_descriptor.setThreshold(0.0015); + const int NUMBER_OF_BINS = 15; + typedef pcl::GOODEstimation::Descriptor Descriptor; + pcl::PointCloud object_description; + pcl::GOODEstimation test_GOOD_descriptor; + test_GOOD_descriptor.setThreshold (0.0015); ///NOTE: GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); - test_GOOD_descriptor.setInputCloud(object); // pass original point cloud - test_GOOD_descriptor.compute(object_description); // Actually compute the GOOD discriptor for the given object - + test_GOOD_descriptor.setInputCloud (object); // pass original point cloud + test_GOOD_descriptor.compute (object_description); // Actually compute the GOOD discriptor for the given object + ///Printing GOOD_descriptor for the given point cloud, ///NOTE: the descriptor is only the first point. - std::cout <<"\n GOOD =" << object_description.points[0] < vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); + Eigen::Matrix4f transformation = test_GOOD_descriptor.getTransformationMatrix (); + std::cout << "\n transofrmation matrix = \n" << transformation << std::endl; /// Get object bounding box information - center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); - bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions(); - std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box< or example_good_descriptor " << std::endl; + std::cerr << "\n Failed to parse the file provided. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; return -1; } - The following code will set up the GOOD descriptor; GOOD descriptor has two important parameters including: * **NUMBER_OF_BINS:** each projection plane is divided into NUMBER_OF_BINS * NUMBER_OF_BINS square bins. Therefore the size of GOOD descriptor will be 3 * NUMBER_OF_BINS * NUMBER_OF_BINS. @@ -163,65 +159,53 @@ The following code will set up the GOOD descriptor; GOOD descriptor has two impo .. code-block:: cpp :linenos: - - const int NUMBER_OF_BINS = 15; - const unsigned int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; - pcl::PointCloud > object_description; - pcl::GOODEstimation test_GOOD_descriptor ; - test_GOOD_descriptor.setThreshold(0.0015); - + const int NUMBER_OF_BINS = 15; + typedef pcl::GOODEstimation::Descriptor Descriptor; + pcl::PointCloud object_description; + pcl::GOODEstimation test_GOOD_descriptor ; + test_GOOD_descriptor.setThreshold (0.0015); Alternatively, the GOOD descriptor can be set up in a line: .. code-block:: cpp :linenos: - pcl::GOODEstimation test_GOOD_descriptor (0.0015); Finally, we pass the input point cloud and compute the GOOD descriptor for the given point cloud. .. code-block:: cpp - :linenos: - + :linenos: test_GOOD_descriptor.setInputCloud(object); test_GOOD_descriptor.compute(object_description); - GOOD also provides a set of functionalities that are useful for manipulation tasks. They are including: * Get objec point cloud in local reference frame * Get three orthographic projects and transformation matrix * Get the order of the three projected planes +To get more information about how to use the GOOD descriptor for manipulation purposes, please have a look at `our_paper `_ + .. code-block:: cpp :linenos: - - Eigen::Matrix4f transformation; - pcl::PointXYZ center_of_bounding_box; - Eigen::Vector3f bounding_box_dimensions; - std::string order_of_projected_planes; - std::vector vector_of_projected_views; - PointCloudInPtr transformed_object (new pcl::PointCloud); - /// Get objec point cloud in local reference frame - transformed_object = test_GOOD_descriptor.getTransformedObject (); - + PointCloudInPtr transformed_object = test_GOOD_descriptor.getTransformedObject (); + /// Get three orthographic projects and transformation matrix - vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); - transformation = test_GOOD_descriptor.getTransformationMatrix (); - std::cout << "\n transofrmation matrix =\n"< vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); + Eigen::Matrix4f transformation = test_GOOD_descriptor.getTransformationMatrix (); + std::cout << "\n transofrmation matrix = \n" << transformation << std::endl; /// Get object bounding box information - center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); - bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions(); - std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box< -#include -#include -#include #include typedef pcl::PointXYZRGBA PointT; typedef pcl::PointCloud::Ptr PointCloudInPtr; -int main(int argc, char* argv[]) +int main (int argc, char* argv[]) { if (argc != 2) { @@ -81,11 +78,11 @@ int main(int argc, char* argv[]) return 0; } - std::string object_path = argv[1]; + std::string object_path = argv[1]; pcl::PointCloud::Ptr object (new pcl::PointCloud); - if (pcl::io::load(object_path, *object)==-1) + if (pcl::io::load (object_path, *object) == -1) { - std::cerr << "\n file extension is not correct. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + std::cerr << "\n Failed to parse the file provided. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; return -1; } @@ -93,12 +90,11 @@ int main(int argc, char* argv[]) | | | Setup the GOOD descriptor | |_____________________________| */ - - const int NUMBER_OF_BINS = 15; - const int lengh_of_descriptor = 3 * NUMBER_OF_BINS * NUMBER_OF_BINS; - pcl::PointCloud > object_description; - - pcl::GOODEstimation test_GOOD_descriptor ; + + const int NUMBER_OF_BINS = 15; + typedef pcl::GOODEstimation::Descriptor Descriptor; + pcl::PointCloud object_description; + pcl::GOODEstimation test_GOOD_descriptor; test_GOOD_descriptor.setThreshold (0.0015); ///NOTE: GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); test_GOOD_descriptor.setInputCloud (object); // pass original point cloud @@ -106,7 +102,7 @@ int main(int argc, char* argv[]) ///Printing GOOD_descriptor for the given point cloud, ///NOTE: the descriptor is only the first point. - std::cout <<"\n GOOD =" << object_description.points[0] < vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); + Eigen::Matrix4f transformation = test_GOOD_descriptor.getTransformationMatrix (); + std::cout << "\n transofrmation matrix = \n" << transformation << std::endl; /// Get object bounding box information - center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); - bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions(); - std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box<& getOrthographicProjections () const { return vector_of_projected_views_; } /** \brief get objec point cloud in local reference frame constructed by the GOOD descriptor - * \param[out] transformed_point_cloud the resultant point cloud of the object in local reference frame + * \return the resultant point cloud of the object in local reference frame */ inline const PointCloudInPtr& getTransformedObject () const { return transformed_point_cloud_; } /** \brief get center of boundingbox of a set of points given by setInputCloud() in camera reference frame - * \param[out] center_of_bbox the resultant center of boundingbox + * \return the resultant center of boundingbox */ inline const pcl::PointXYZ& getCenterOfObjectBoundingBox () const { return center_of_bbox_; } /** \brief get dimensions of bounding box of a set of points given by setInputCloud() - * \param[out] bbox_dimensions the resultant boundingbox dimensions + * \return the resultant boundingbox dimensions */ inline const Eigen::Vector3f& getObjectBoundingBoxDimensions () const { return bbox_dimensions_; } /** \brief get the order of protection plans in constructing GOOD descriptor - * \param[out] order_of_projected_plane the resultant of order of projections + * \return the resultant of order of projections */ inline const std::string& getOrderOfProjectedPlanes () const { return order_of_projected_plane_; } /** \brief get the transformation matrix from camera reference frame to object local reference frame - * \param[out] transformation the resultant transformation matrix + * \return the resultant transformation matrix */ inline const Eigen::Matrix4f& getTransformationMatrix () const {return transformation_;} @@ -167,10 +166,6 @@ namespace pcl private: enum Axis { X, Y, Z}; - - /** \brief number of bins along one dimension; each projection plane is divided into BinN * BinN square bins. - * By default, the number_of_bins_ is set to 5. - */ /** \brief threshold parameter is used in constructing local reference frame. * By default, the threshold_ is set to 0.0015. @@ -196,97 +191,93 @@ namespace pcl std::vector vector_of_projected_views_; /** \brief get order of projection views e.g. XoY-XoZ-YoZ */ - std::string order_of_projected_plane_; - - /** \brief get dimensions of bounding box of a given point cloud */ - void - computeBoundingBoxDimensions (); - + std::string order_of_projected_plane_; + /** \brief project point cloud to a plane - * \param[in] pc_in pointer to a point cloud. - * \param[in] coefficients pcl::ModelCoefficients - * \param[out] pc_out the resultant projected point cloud + * \param[in] pc_in pointer to a point cloud. + * \param[in] coefficients pcl::ModelCoefficients + * \param[out] pc_out the resultant projected point cloud */ void - projectPointCloudToPlane (PointCloudInPtr pc_in, pcl::ModelCoefficients::Ptr coefficients, PointCloudInPtr pc_out); + projectPointCloudToPlane (const PointCloudInConstPtr &pc_in, const pcl::ModelCoefficients::Ptr &coefficients, PointCloudIn &pc_out); /** \brief convert 2D histogram to 1D histogram - * \param[in] histogram_2D a 2D vector of unsigned int - * \param[out] histogram the resultant 1D vector of unsigned int + * \param[in] histogram_2D a 2D vector of unsigned int + * \return the resultant 1D vector of unsigned int */ - void - convert2DHistogramTo1DHistogram (std::vector > histogram_2D, std::vector &histogram); - + static std::vector + convert2DHistogramTo1DHistogram (const std::vector > &histogram_2D); + /** \brief sign disambiguation - * \param[in] projected_view pointer to a point cloud. - * \param[in] threshold used to deal with the special case when a point is close to the other planes - * \param[out] sign the resultant sign (either 1 or -1) + * \param[in] projected_view pointer to a point cloud. + * \param[in] threshold used to deal with the special case when a point is close to the other planes + * \return the resultant sign (either 1 or -1) */ - - ///TODO : const PointCloudInPtr should be PointCloudInConstPtr - void - signDisambiguation ( PointCloudInPtr &projected_view, const int8_t axis, int8_t &sign) const; + int8_t + signDisambiguation (const PointCloudIn &projected_view, const int8_t axis) const; /** \brief create a 2D histogram from a projection - * \param[in] projected_view pointer to a point cloud. - * \param[in] largest_side largest side of object bounding box. - * \param[in] number_of_bins number of bins along one dimension. - * \param[in] sign either 1 or -1. - * \param[out] histogram a 2D vector of unsigned int. - */ + * \param[in] projected_view pointer to a point cloud. + * \param[in] largest_side largest side of object bounding box. + * \param[in] number_of_bins number of bins along one dimension. + * \param[in] sign either 1 or -1. + * \param[out] histogram a 2D vector of unsigned int. + */ void create2DHistogramFromProjection (const PointCloudInPtr &projected_view, const float largest_side, - const int8_t axis_a, const int8_t axis_b, - std::vector > &histogram) const; + const int8_t axis_a, const int8_t axis_b, + std::vector > &histogram) const; /** \brief normalizing a 1D histogram - * \param[in] histogram 1D histogram (int). - * \param[out] normalized_histogram the resultant normalized_histogram (float). + * \param[in] histogram 1D histogram (int). + * \param[out] normalized_histogram the resultant normalized_histogram (float). */ - void + static void normalizeHistogram (const std::vector histogram, std::vector &normalized_histogram); /** \brief compute viewpoint entropy used for concatenating projections - * \param[in] normalized_histogram normalized_histogram (float). - * \param[out] entropy the resultant view entropy. + * \param[in] normalized_histogram normalized_histogram (float). + * \return the resultant view entropy. */ - void - viewpointEntropy (const std::vector normalized_histogram, float &entropy); + float + viewpointEntropy (const std::vector &normalized_histogram); /** \brief find max view point entropy used for concatenating projections - * \param[in] view_point_entropy a vector of float contains three view entropies. - * \param[out] index the resultant projection index. + * \param[in] view_point_entropy a vector of float contains three view entropies. + * \return the resultant projection index. */ - void - findMaxViewPointEntropy (const std::vector view_point_entropy, int &index); + int + findMaxViewPointEntropy (const std::vector &view_point_entropy); /** \brief compute variance of a given histogram - * \param[in] histogram normalized histogram of projection. - * \param[out] variance the resultant variance. + * \param[in] histogram normalized histogram of projection. + * \return variance the resultant variance. */ - void - varianceOfHistogram (const std::vector histogram, float &variance); + float + varianceOfHistogram (const std::vector &histogram); /** \brief concatinating three orthographic projections * three histograms are obtained for the projections; afterwards, two statistic features including entropy and variance have been calculated for each distribution vector; * the histograms are consequently concatenated together using entropy and variance features, to form a single description for the given object. The ordering of the three * histograms is first by decreasing values of entropy. Afterwards the second and third vectors are sorted again by increasing values of variance. - * \param[in] maximum_entropy_index index of orthographic projection that has maximum entropy. - * \param[in] normalized_projected_views a vector of vector of float contains three normalized histogram of projected views - * \param[out] sorted_normalized_projected_views a vector of float representing the GOOD description for a set of points given by setInputCloud() - * \param[out] name_of_sorted_projected_plane an string represents the order of concatenating projections. - */ + * \param[in] maximum_entropy_index index of orthographic projection that has maximum entropy. + * \param[in] normalized_projected_views a vector of vector of float contains three normalized histogram of projected views + * \param[out] sorted_normalized_projected_views a vector of float representing the GOOD description for a set of points given by setInputCloud() + * \param[out] name_of_sorted_projected_plane an string represents the order of concatenating projections. + */ void - objectViewHistogram (int maximum_entropy_index, const std::vector > normalized_projected_views, - std::vector &sorted_normalized_projected_views, - std::string &name_of_sorted_projected_plane /*debug*/); + objectViewHistogram (int maximum_entropy_index, + const std::vector > &normalized_projected_views, + std::vector &sorted_normalized_projected_views, + std::string &name_of_sorted_projected_plane); /** \brief compute largest side of the computed boundingbox i.e. bbox_dimensions_ - * \param[out] largest_side the resultant largest side. - */ + * \return the resultant largest side. + * It should be noted that a small value (i.e. 0.02) is added to the output to deal with the special cases, + * when a point is projected onto the upper bound of the projection area + */ inline float - computeLargestSideOfBoundingBox () const { return (bbox_dimensions_.maxCoeff() + 0.02) ;} - + computeLargestSideOfBoundingBox () const { return (bbox_dimensions_.maxCoeff() + 0.02) ;} }; } diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index cdfb98087ea..8d64f1302a8 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -44,67 +44,53 @@ #include ///std::accumulate -////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::computeBoundingBoxDimensions () -{ - PointInT minimum_pt, maximum_pt, dimensions; - pcl::getMinMax3D (*transformed_point_cloud_, minimum_pt, maximum_pt); // min max for bounding box - dimensions.getVector3fMap () = maximum_pt.getVector3fMap () - minimum_pt.getVector3fMap (); - bbox_dimensions_ << dimensions.x, dimensions.y, dimensions.z; -} ////////////////////////////////////////////////////////////////////////////////////////////// - -template -void -pcl::GOODEstimation::projectPointCloudToPlane (PointCloudInPtr pc_in, pcl::ModelCoefficients::Ptr coefficients, PointCloudInPtr pc_out) +template void +pcl::GOODEstimation::projectPointCloudToPlane (const PointCloudInConstPtr &pc_in, const pcl::ModelCoefficients::Ptr &coefficients, PointCloudIn &pc_out) { ///Create the projection object pcl::ProjectInliers projection; projection.setModelType (pcl::SACMODEL_NORMAL_PLANE); projection.setInputCloud (pc_in); projection.setModelCoefficients (coefficients); - projection.filter (*pc_out); + projection.filter (pc_out); } -////////////////////////////////////////////////////////////////////////////////////////////// -template -void -pcl::GOODEstimation::convert2DHistogramTo1DHistogram (const std::vector > histogram_2D, std::vector &histogram) +////////////////////////////////////////////////////////////////////////////////////////////// +template std::vector +pcl::GOODEstimation::convert2DHistogramTo1DHistogram (const std::vector > &histogram_2D) { - for (size_t i = 0 ; i < BinN; i++) - { - for (size_t j = 0; j < BinN; j++) - { - histogram.at (i * BinN + j) = histogram_2D.at(i).at(j); - } - } + std::vector histogram (BinN * BinN); + for (size_t i = 0, j = 0; i < BinN; ++i, j += BinN) + std::copy (histogram_2D[i].begin (), histogram_2D[i].end (), &histogram[j]); + + return histogram; } -////////////////////////////////////////////////////////////////////////////////////////////// -template void -pcl::GOODEstimation::signDisambiguation ( PointCloudInPtr &projected_view, const int8_t axis, int8_t &sign) const +////////////////////////////////////////////////////////////////////////////////////////////// +template int8_t +pcl::GOODEstimation::signDisambiguation ( const PointCloudIn &projected_view, const int8_t axis) const { + int8_t sign = 1; unsigned int positive = 0; unsigned int negative = 0; - const unsigned int threshold_overall = std::max (1u, (unsigned int) trunc (projected_view->size ()/10)); + const unsigned int threshold_overall = std::max (1u, (unsigned int) trunc (projected_view.size ()/10)); - for (size_t i = 0; i < projected_view->size(); ++i) + for (size_t i = 0; i < projected_view.size(); ++i) { - if (projected_view->at(i).data[axis] > threshold_) //Not sure if data[axis] is valid since you're using the members x y z of the union + if (projected_view.at(i).data[axis] > threshold_) ++positive; - else if (projected_view->at(i).data[axis] < -threshold_) + else if (projected_view.at(i).data[axis] < -threshold_) ++negative; } sign = ((int) (negative - positive) >= (int) threshold_overall)? -1 : 1; + return (sign); } -////////////////////////////////////////////////////////////////////////////////////////////// -template void +////////////////////////////////////////////////////////////////////////////////////////////// +template void pcl::GOODEstimation::create2DHistogramFromProjection (const PointCloudInPtr &projected_view, const float largest_side, - const int8_t axis_a, const int8_t axis_b, std::vector > &histogram) const + const int8_t axis_a, const int8_t axis_b, std::vector > &histogram) const { const float half = .5f * largest_side; const float interval = largest_side / (float) BinN; @@ -124,10 +110,9 @@ pcl::GOODEstimation::create2DHistogramFromProjection (const Poin ++histogram[idx_o][idx_i]; } } -////////////////////////////////////////////////////////////////////////////////////////////// -template -void +////////////////////////////////////////////////////////////////////////////////////////////// +template void pcl::GOODEstimation::normalizeHistogram (const std::vector histogram, std::vector &normalized_histogram) { ///compute sumation of all histogram's bins. @@ -143,14 +128,13 @@ pcl::GOODEstimation::normalizeHistogram (const std::vector -void -pcl::GOODEstimation::viewpointEntropy (const std::vector normalized_histogram, float &entropy) +////////////////////////////////////////////////////////////////////////////////////////////// +template float +pcl::GOODEstimation::viewpointEntropy (const std::vector &normalized_histogram) { ///NOTE: http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform - entropy =0; + float entropy =0; for(std::vector::const_iterator it = normalized_histogram.begin(); it != normalized_histogram.end(); ++it) { if (*it != 0) @@ -158,30 +142,30 @@ pcl::GOODEstimation::viewpointEntropy (const std::vector float entropy_tmp = *it * log2 (*it); entropy += entropy_tmp; } - } - entropy = -entropy; + } + return (-entropy); } -////////////////////////////////////////////////////////////////////////////////////////////// -template -void -pcl::GOODEstimation::findMaxViewPointEntropy (const std::vector view_point_entropy, int &index) +////////////////////////////////////////////////////////////////////////////////////////////// +template int +pcl::GOODEstimation::findMaxViewPointEntropy (const std::vector &view_point_entropy) { - index = 0; + int index = 0; std::vector::const_iterator it; it = std::max_element (view_point_entropy.begin(), view_point_entropy.end()); index = it - view_point_entropy.begin (); + return (index); } -////////////////////////////////////////////////////////////////////////////////////////////// -template -void -pcl::GOODEstimation::varianceOfHistogram (const std::vector histogram, float &variance) +////////////////////////////////////////////////////////////////////////////////////////////// +template float +pcl::GOODEstimation::varianceOfHistogram (const std::vector &histogram) { ///NOTE: https://people.richland.edu/james/lecture/m170/ch06-prb.html ///NOTE: http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm float mean = 0; + float variance = 0; for (size_t i = 0; i < histogram.size(); i++) { mean += (i+1) * histogram.at(i); @@ -190,79 +174,80 @@ pcl::GOODEstimation::varianceOfHistogram (const std::vector -void -pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, const std::vector > normalized_projected_views, - std::vector &sorted_normalized_projected_views, std::string &name_of_sorted_projected_plane) +////////////////////////////////////////////////////////////////////////////////////////////// +template void +pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, + const std::vector > &normalized_projected_views, + std::vector &sorted_normalized_projected_views, + std::string &name_of_sorted_projected_plane) { float variance1 = 0; float variance2 = 0; sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(maximum_entropy_index).begin(), - normalized_projected_views.at(maximum_entropy_index).end()); + normalized_projected_views.at(maximum_entropy_index).end()); switch (maximum_entropy_index) { case 0 : name_of_sorted_projected_plane += "YoZ - "; - varianceOfHistogram (normalized_projected_views.at(1), variance1); - varianceOfHistogram (normalized_projected_views.at(2), variance2); + variance1 = varianceOfHistogram (normalized_projected_views.at(1)); + variance2 = varianceOfHistogram (normalized_projected_views.at(2)); if (variance1 <= variance2) { - name_of_sorted_projected_plane += "XoZ - XoY "; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + name_of_sorted_projected_plane += "XoZ - XoY "; + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); } else - { - name_of_sorted_projected_plane += "XoY - XoZ "; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + { + name_of_sorted_projected_plane += "XoY - XoZ "; + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); } break; case 1 : name_of_sorted_projected_plane += "XoZ - "; - varianceOfHistogram (normalized_projected_views.at(0), variance1); - varianceOfHistogram (normalized_projected_views.at(2), variance2); + variance1 = varianceOfHistogram (normalized_projected_views.at(0)); + variance2 = varianceOfHistogram (normalized_projected_views.at(2)); if (variance1 <= variance2) { - name_of_sorted_projected_plane += "YoZ - XoY "; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + name_of_sorted_projected_plane += "YoZ - XoY "; + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); } else { name_of_sorted_projected_plane += "XoY - YoZ "; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); } break; - + case 2 : name_of_sorted_projected_plane += "XoY - "; - varianceOfHistogram (normalized_projected_views.at(0), variance1); - varianceOfHistogram (normalized_projected_views.at(1), variance2); + variance1 = varianceOfHistogram (normalized_projected_views.at(0)); + variance2 = varianceOfHistogram (normalized_projected_views.at(1)); if (variance1 <= variance2) { - name_of_sorted_projected_plane += "YoZ - XoZ "; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + name_of_sorted_projected_plane += "YoZ - XoZ "; + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); } else { - name_of_sorted_projected_plane += "XoZ - YoZ "; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(), normalized_projected_views.at(1).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(), normalized_projected_views.at(0).end()); + name_of_sorted_projected_plane += "XoZ - YoZ "; + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(), normalized_projected_views.at(1).end()); + sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(), normalized_projected_views.at(0).end()); } break; @@ -270,16 +255,14 @@ pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_in break; } } -////////////////////////////////////////////////////////////////////////////////////////////// -template -void +////////////////////////////////////////////////////////////////////////////////////////////// +template void pcl::GOODEstimation::computeFeature (PointCloudOut &output ) { std::vector object_description; float largest_side = 0; std::vector view_point_entropy (3); - std::string name_of_sorted_projected_plane; PointCloudInPtr initial_cloud_projection_along_x_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud PointCloudInPtr initial_cloud_projection_along_y_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud PointCloudInPtr initial_cloud_projection_along_z_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud @@ -328,14 +311,14 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) | | | construct three projection view | |_________________________________| */ - + const static float OFFSET_TO_THE_ORIGIN = 0.3; /// ax+by+cz+d=0, where b=c=d=0, and a=1, or said differently, the YoZ plane. pcl::ModelCoefficients::Ptr coefficients_x (new pcl::ModelCoefficients ()); coefficients_x->values.resize (4); coefficients_x->values[0] = 1.0; coefficients_x->values[1] = 0; coefficients_x->values[2] = 0; coefficients_x->values[3] = 0; - projectPointCloudToPlane (transformed_point_cloud_, coefficients_x, initial_cloud_projection_along_x_axis); + projectPointCloudToPlane (transformed_point_cloud_, coefficients_x, *initial_cloud_projection_along_x_axis); for (size_t i = 0; i < initial_cloud_projection_along_x_axis->points.size(); i++) { initial_cloud_projection_along_x_axis->points.at(i).x = OFFSET_TO_THE_ORIGIN; @@ -347,19 +330,18 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) coefficients_y->values.resize (4); coefficients_y->values[0] = 0.0; coefficients_y->values[1] = 1.0; coefficients_y->values[2] = 0; coefficients_y->values[3] = 0; - projectPointCloudToPlane (transformed_point_cloud_, coefficients_y, initial_cloud_projection_along_y_axis); + projectPointCloudToPlane (transformed_point_cloud_, coefficients_y, *initial_cloud_projection_along_y_axis); for (size_t i = 0; i < initial_cloud_projection_along_y_axis->points.size(); i++) { initial_cloud_projection_along_y_axis->points.at(i).y = OFFSET_TO_THE_ORIGIN; } vector_of_projected_views_.push_back (initial_cloud_projection_along_y_axis); - - + /// ax+by+cz+d=0, where a=b=d=0, and c=1, or said differently, the XoY plane. pcl::ModelCoefficients::Ptr coefficients_z (new pcl::ModelCoefficients ()); coefficients_z->values.resize (4); coefficients_z->values[0] = 0; coefficients_z->values[1] = 0; coefficients_z->values[2] = 1.0; coefficients_z->values[3] = 0; - projectPointCloudToPlane (transformed_point_cloud_, coefficients_z, initial_cloud_projection_along_z_axis); + projectPointCloudToPlane (transformed_point_cloud_, coefficients_z, *initial_cloud_projection_along_z_axis); for (size_t i = 0; i < initial_cloud_projection_along_z_axis->points.size(); i++) { initial_cloud_projection_along_z_axis->points.at(i).z = OFFSET_TO_THE_ORIGIN; @@ -367,7 +349,8 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) vector_of_projected_views_.push_back (initial_cloud_projection_along_z_axis); /// compute BoundingBox Dimensions - computeBoundingBoxDimensions (); + Eigen::Vector4f bbox_dimensions = getAxisAlignedBoundingBox(*transformed_point_cloud_); + bbox_dimensions_ = bbox_dimensions.head<3>(); largest_side = computeLargestSideOfBoundingBox (); /* _________________________ @@ -376,12 +359,12 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) |___________________________| */ int8_t sx = 1, sy = 1; - signDisambiguation (initial_cloud_projection_along_y_axis, X, sx); ///XoZ Plane - signDisambiguation (initial_cloud_projection_along_x_axis, Y, sy); ///YoZ Plane + sx = signDisambiguation (*initial_cloud_projection_along_y_axis, X); ///XoZ Plane + sy = signDisambiguation (*initial_cloud_projection_along_x_axis, Y); ///YoZ Plane sign_= sx * sy; /* _______________________________________________________ - | | + | | | compute histograms of projection of the given object | |_________________________________________________________| */ @@ -398,12 +381,12 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) std::vector normalized_histogramYoZ (BinN * BinN); float YoZ_entropy = 0; create2DHistogramFromProjection (initial_cloud_projection_along_x_axis, largest_side, Y, Z, YOZ_histogram); - convert2DHistogramTo1DHistogram (YOZ_histogram, histogramYOZ1D); + histogramYOZ1D = convert2DHistogramTo1DHistogram (YOZ_histogram); complete_object_histogram.insert (complete_object_histogram.end(), histogramYOZ1D.begin(), histogramYOZ1D.end()); normalizeHistogram (histogramYOZ1D, normalized_histogramYoZ); normalized_projected_views.at (0) = normalized_histogramYoZ; complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramYoZ.begin(), normalized_histogramYoZ.end()); - viewpointEntropy (normalized_histogramYoZ, YoZ_entropy); + YoZ_entropy = viewpointEntropy (normalized_histogramYoZ); view_point_entropy.at (0) = YoZ_entropy; ///XOZ Projection @@ -411,12 +394,12 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) std::vector normalized_histogramXoZ (BinN * BinN); float XoZ_entropy = 0; create2DHistogramFromProjection (initial_cloud_projection_along_y_axis, largest_side, X, Z, XOZ_histogram); - convert2DHistogramTo1DHistogram (XOZ_histogram, histogramXOZ1D); + histogramXOZ1D = convert2DHistogramTo1DHistogram (XOZ_histogram); complete_object_histogram.insert (complete_object_histogram.end(), histogramXOZ1D.begin(), histogramXOZ1D.end()); normalizeHistogram (histogramXOZ1D, normalized_histogramXoZ); normalized_projected_views.at (1) = normalized_histogramXoZ; complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoZ.begin(), normalized_histogramXoZ.end()); - viewpointEntropy (normalized_histogramXoZ, XoZ_entropy); + XoZ_entropy = viewpointEntropy (normalized_histogramXoZ); view_point_entropy.at (1) = XoZ_entropy; ///XOY Projection @@ -424,12 +407,12 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) std::vector normalized_histogramXoY (BinN * BinN); float XoY_entropy = 0; create2DHistogramFromProjection (initial_cloud_projection_along_z_axis, largest_side, X, Y, XOY_histogram); - convert2DHistogramTo1DHistogram (XOY_histogram, histogramXOY1D); + histogramXOY1D = convert2DHistogramTo1DHistogram (XOY_histogram); complete_object_histogram.insert (complete_object_histogram.end(), histogramXOY1D.begin(), histogramXOY1D.end()); normalizeHistogram (histogramXOY1D, normalized_histogramXoY); normalized_projected_views.at (2) = normalized_histogramXoY; complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoY.begin(), normalized_histogramXoY.end()); - viewpointEntropy (normalized_histogramXoY, XoY_entropy); + XoY_entropy = viewpointEntropy (normalized_histogramXoY); view_point_entropy.at (2) = XoY_entropy; /* ____________________________________ @@ -440,8 +423,9 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) ///NOTE: The ordering of the three distribution vectors is first by decreasing values of entropy. ///Afterwards the second and third vectors are sorted again by increasing values of variance. - int maximum_entropy_index = 0; - findMaxViewPointEntropy (view_point_entropy, maximum_entropy_index); + int maximum_entropy_index = findMaxViewPointEntropy (view_point_entropy); + + std::string name_of_sorted_projected_plane; objectViewHistogram (maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); order_of_projected_plane_ = name_of_sorted_projected_plane; for(size_t i =0; i < object_description.size(); i++) diff --git a/features/src/good.cpp b/features/src/good.cpp index 4f957ad67ab..8609523788a 100644 --- a/features/src/good.cpp +++ b/features/src/good.cpp @@ -46,4 +46,4 @@ PCL_INSTANTIATE_PRODUCT(GOODEstimation, ((pcl::PointXYZ)(pcl::PointXYZI)(pcl::Po #else PCL_INSTANTIATE_PRODUCT(GOODEstimation, (PCL_XYZ_POINT_TYPES)((15))) #endif -#endif // PCL_NO_PRECOMPILE \ No newline at end of file +#endif // PCL_NO_PRECOMPILE From 619634394317d49e39fc9f3e8f6cb01e40069b87 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Sun, 10 Dec 2017 20:33:55 +0000 Subject: [PATCH 14/24] add enum as Sergio suggested --- doc/tutorials/content/good_estimation.rst | 295 ++++++++++-------- examples/features/example_good_descriptor.cpp | 8 +- features/include/pcl/features/good.h | 18 +- features/include/pcl/features/impl/good.hpp | 24 +- 4 files changed, 196 insertions(+), 149 deletions(-) diff --git a/doc/tutorials/content/good_estimation.rst b/doc/tutorials/content/good_estimation.rst index 5bd3b3c220e..359edb71469 100644 --- a/doc/tutorials/content/good_estimation.rst +++ b/doc/tutorials/content/good_estimation.rst @@ -61,73 +61,78 @@ It should be noted that the corresponding code is provided as an example in the .. code-block:: cpp :linenos: - #include - #include - - typedef pcl::PointXYZRGBA PointT; - typedef pcl::PointCloud::Ptr PointCloudInPtr; - - int main (int argc, char* argv[]) - { - if (argc != 2) - { - std::cerr << "\n Syntax is: example_good_descriptor " << std::endl; - return 0; - } - - std::string object_path = argv[1]; - pcl::PointCloud::Ptr object (new pcl::PointCloud); - if (pcl::io::load (object_path, *object) == -1) - { - std::cerr << "\n Failed to parse the file provided. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; - return -1; - } - - /*____________________________ - | | - | Setup the GOOD descriptor | - |_____________________________| */ - - const int NUMBER_OF_BINS = 15; - typedef pcl::GOODEstimation::Descriptor Descriptor; - pcl::PointCloud object_description; - pcl::GOODEstimation test_GOOD_descriptor; - test_GOOD_descriptor.setThreshold (0.0015); - ///NOTE: GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); - test_GOOD_descriptor.setInputCloud (object); // pass original point cloud - test_GOOD_descriptor.compute (object_description); // Actually compute the GOOD discriptor for the given object - - ///Printing GOOD_descriptor for the given point cloud, - ///NOTE: the descriptor is only the first point. - std::cout << "\n GOOD = " << object_description.points[0] << std::endl; - - /*__________________________________________________ - | | - | Usefull Functionalities for Object Manipulation | - |___________________________________________________| */ - - ///NOTE: The following functionalities of the GOOD descriptor are useful for manipulation tasks: - - /// Get objec point cloud in local reference frame - PointCloudInPtr transformed_object = test_GOOD_descriptor.getTransformedObject (); - - /// Get three orthographic projects and transformation matrix - std::vector vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); - Eigen::Matrix4f transformation = test_GOOD_descriptor.getTransformationMatrix (); - std::cout << "\n transofrmation matrix = \n" << transformation << std::endl; - - /// Get object bounding box information - pcl::PointXYZ center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); - Eigen::Vector3f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); - std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box << std::endl; - std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; - - /// Get the order of the three projected planes - std::string order_of_projected_planes = test_GOOD_descriptor.getOrderOfProjectedPlanes (); - std::cout << "\n order of projected planes = " << order_of_projected_planes << std::endl; - - return 0; - } + #include + #include + + typedef pcl::PointXYZRGBA PointT; + typedef pcl::PointCloud::Ptr PointCloudInPtr; + + int main (int argc, char* argv[]) + { + if (argc != 2) + { + std::cerr << "\n Syntax is: example_good_descriptor " << std::endl; + return 0; + } + + std::string object_path = argv[1]; + pcl::PointCloud::Ptr object (new pcl::PointCloud); + if (pcl::io::load (object_path, *object) == -1) + { + std::cerr << "\n Failed to parse the file provided. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + return -1; + } + + /*____________________________ + | | + | Setup the GOOD descriptor | + |_____________________________| */ + + const int NUMBER_OF_BINS = 15; + typedef pcl::GOODEstimation::Descriptor Descriptor; + pcl::PointCloud object_description; + pcl::GOODEstimation test_GOOD_descriptor; + test_GOOD_descriptor.setThreshold (0.0015); + + ///NOTE: GOOD descriptor can be setup in a line: pcl::GOODEstimation test_GOOD_descriptor (0.0015); + test_GOOD_descriptor.setInputCloud (object); // pass original point cloud + test_GOOD_descriptor.compute (object_description); // Actually compute the GOOD discriptor for the given object + + ///Printing GOOD_descriptor for the given point cloud, + ///NOTE: the descriptor is only the first point. + std::cout << "\n GOOD = " << object_description.points[0] << std::endl; + + /*__________________________________________________ + | | + | Usefull Functionalities for Object Manipulation | + |___________________________________________________| */ + + ///NOTE: The following functionalities of the GOOD descriptor are useful for manipulation tasks: + + /// Get objec point cloud in local reference frame + PointCloudInPtr transformed_object = test_GOOD_descriptor.getTransformedObject (); + + /// Get three orthographic projects and transformation matrix + std::vector vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); + Eigen::Matrix4f transformation = test_GOOD_descriptor.getTransformationMatrix (); + std::cout << "\n transofrmation matrix = \n" << transformation << std::endl; + + /// Get object bounding box information + pcl::PointXYZ center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); + Eigen::Vector3f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); + std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box << std::endl; + std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; + + /// Get the order of the three projection views as a string + std::string order_of_projected_planes = test_GOOD_descriptor.getOrderOfProjectedPlanes (); + std::cout << "\n order of projected planes = " << order_of_projected_planes << std::endl; + + /// Get the order of projection views programatically + const char *plane_names [3][3] = {{"XoY", "YoZ", "XoZ"}}; + std::cout << "\n order of projected planes - the first plane is " << *plane_names[test_GOOD_descriptor.order_of_projected_plane_[0]] << std::endl; + + return 0; + } The explanation --------------- @@ -136,20 +141,33 @@ Now let's study out what is the purpose of this code. The following lines are simply checking and loading the cloud from the .pcd or .ply file. .. code-block:: cpp - :linenos: - if (argc != 2) - { - std::cerr << "\n Syntax is: example_good_descriptor " << std::endl; - return 0; - } - - std::string object_path = argv[1]; - pcl::PointCloud::Ptr object (new pcl::PointCloud); - if (pcl::io::load (object_path, *object) == -1) - { - std::cerr << "\n Failed to parse the file provided. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; - return -1; - } + :linenos: + if (argc != 2) + { + std::cerr << "\n Syntax is: example_good_descriptor " << std::endl; + return 0; + } + + std::string object_path = argv[1]; + pcl::PointCloud::Ptr object (new pcl::PointCloud); + if (pcl::io::load (object_path, *object) == -1) + { + std::cerr << "\n Failed to parse the file provided. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + return -1; + } + if (argc != 2) + { + std::cerr << "\n Syntax is: example_good_descriptor " << std::endl; + return 0; + } + + std::string object_path = argv[1]; + pcl::PointCloud::Ptr object (new pcl::PointCloud); + if (pcl::io::load (object_path, *object) == -1) + { + std::cerr << "\n Failed to parse the file provided. Syntax is: example_good_descriptor or example_good_descriptor " << std::endl; + return -1; + } The following code will set up the GOOD descriptor; GOOD descriptor has two important parameters including: @@ -159,24 +177,24 @@ The following code will set up the GOOD descriptor; GOOD descriptor has two impo .. code-block:: cpp :linenos: - const int NUMBER_OF_BINS = 15; - typedef pcl::GOODEstimation::Descriptor Descriptor; - pcl::PointCloud object_description; - pcl::GOODEstimation test_GOOD_descriptor ; - test_GOOD_descriptor.setThreshold (0.0015); + const int NUMBER_OF_BINS = 15; + typedef pcl::GOODEstimation::Descriptor Descriptor; + pcl::PointCloud object_description; + pcl::GOODEstimation test_GOOD_descriptor; + test_GOOD_descriptor.setThreshold (0.0015); Alternatively, the GOOD descriptor can be set up in a line: .. code-block:: cpp :linenos: - pcl::GOODEstimation test_GOOD_descriptor (0.0015); + pcl::GOODEstimation test_GOOD_descriptor (0.0015); Finally, we pass the input point cloud and compute the GOOD descriptor for the given point cloud. .. code-block:: cpp :linenos: - test_GOOD_descriptor.setInputCloud(object); - test_GOOD_descriptor.compute(object_description); + test_GOOD_descriptor.setInputCloud(object); + test_GOOD_descriptor.compute(object_description); GOOD also provides a set of functionalities that are useful for manipulation tasks. They are including: @@ -188,23 +206,27 @@ To get more information about how to use the GOOD descriptor for manipulation pu .. code-block:: cpp :linenos: - /// Get objec point cloud in local reference frame - PointCloudInPtr transformed_object = test_GOOD_descriptor.getTransformedObject (); - - /// Get three orthographic projects and transformation matrix - std::vector vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); - Eigen::Matrix4f transformation = test_GOOD_descriptor.getTransformationMatrix (); - std::cout << "\n transofrmation matrix = \n" << transformation << std::endl; - - /// Get object bounding box information - pcl::PointXYZ center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); - Eigen::Vector3f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); - std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box << std::endl; - std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; - - /// Get the order of the three projected planes - std::string order_of_projected_planes = test_GOOD_descriptor.getOrderOfProjectedPlanes (); - std::cout << "\n order of projected planes = " << order_of_projected_planes << std::endl; + /// Get objec point cloud in local reference frame + PointCloudInPtr transformed_object = test_GOOD_descriptor.getTransformedObject (); + + /// Get three orthographic projects and transformation matrix + std::vector vector_of_projected_views = test_GOOD_descriptor.getOrthographicProjections (); + Eigen::Matrix4f transformation = test_GOOD_descriptor.getTransformationMatrix (); + std::cout << "\n transofrmation matrix = \n" << transformation << std::endl; + + /// Get object bounding box information + pcl::PointXYZ center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); + Eigen::Vector3f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); + std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box << std::endl; + std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; + + /// Get the order of the three projection views as a string + std::string order_of_projected_planes = test_GOOD_descriptor.getOrderOfProjectedPlanes (); + std::cout << "\n order of projected planes = " << order_of_projected_planes << std::endl; + + /// Get the order of projection views programatically + const char *plane_names [3][3] = {{"XoY", "YoZ", "XoZ"}}; + std::cout << "\n order of projected planes - the first plane is " << *plane_names[test_GOOD_descriptor.order_of_projected_plane_[0]] << std::endl; Output and Visualization --------------------------------- @@ -212,7 +234,6 @@ We are almost at the end of this tutorial. The syntax for running the sample code is : .. code-block:: bash - ./pcl/build/bin/pcl_example_good_descriptor ../test/milk.pcd @@ -227,34 +248,32 @@ The GOOD descriptor has been presented in the following papers. Please adequatel .. code-block:: bash - @article{GOODPRL, - title = "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation", - journal = "Pattern Recognition Letters", - volume = "83", - pages = "312 - 320", - year = "2016", - note = "Efficient Shape Representation, Matching, Ranking, and its Applications", - issn = "0167-8655", - doi = "http://dx.doi.org/10.1016/j.patrec.2016.07.006", - url = "http://www.sciencedirect.com/science/article/pii/S0167865516301684", - author = "S. Hamidreza Kasaei and Ana Maria Tomé and Luís Seabra Lopes and Miguel Oliveira",} - - - @INPROCEEDINGS{GOODIROS, - author={S. H. Kasaei and L. Seabra Lopes and A. M. Tomé and M. Oliveira}, - booktitle={2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, - title={An orthographic descriptor for 3D object learning and recognition}, - year={2016}, - pages={4158-4163}, - doi={10.1109/IROS.2016.7759612}, - url="http://ieeexplore.ieee.org/document/7759612/" - month={Oct},} - - - @inproceedings{GOODObjectManipulation, - title={Object learning and grasping capabilities for robotic home assistants}, - author={Kasaei, S Hamidreza and Shafii, Nima and Lopes, Lu{\'\i}s Seabra and Tom{\'e}, Ana Maria}, - booktitle={Robot World Cup}, - pages={279--293}, - year={2016}, - organization={Springer}} + @article{GOODPRL, + title = "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation", + journal = "Pattern Recognition Letters", + volume = "83", + pages = "312 - 320", + year = "2016", + note = "Efficient Shape Representation, Matching, Ranking, and its Applications", + issn = "0167-8655", + doi = "http://dx.doi.org/10.1016/j.patrec.2016.07.006", + url = "http://www.sciencedirect.com/science/article/pii/S0167865516301684", + author = "S. Hamidreza Kasaei and Ana Maria Tomé and Luís Seabra Lopes and Miguel Oliveira",} + + @INPROCEEDINGS{GOODIROS, + author={S. H. Kasaei and L. Seabra Lopes and A. M. Tomé and M. Oliveira}, + booktitle={2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, + title={An orthographic descriptor for 3D object learning and recognition}, + year={2016}, + pages={4158-4163}, + doi={10.1109/IROS.2016.7759612}, + url="http://ieeexplore.ieee.org/document/7759612/" + month={Oct},} + + @inproceedings{GOODObjectManipulation, + title={Object learning and grasping capabilities for robotic home assistants}, + author={Kasaei, S Hamidreza and Shafii, Nima and Lopes, Lu{\'\i}s Seabra and Tom{\'e}, Ana Maria}, + booktitle={Robot World Cup}, + pages={279--293}, + year={2016}, + organization={Springer}} diff --git a/examples/features/example_good_descriptor.cpp b/examples/features/example_good_descriptor.cpp index f8f572a87dd..438beb7148f 100644 --- a/examples/features/example_good_descriptor.cpp +++ b/examples/features/example_good_descriptor.cpp @@ -124,11 +124,15 @@ int main (int argc, char* argv[]) Eigen::Vector3f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box << std::endl; std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; - - /// Get the order of the three projected planes + + /// Get the order of the three projection views as a string std::string order_of_projected_planes = test_GOOD_descriptor.getOrderOfProjectedPlanes (); std::cout << "\n order of projected planes = " << order_of_projected_planes << std::endl; + /// Get the order of projection views programatically + const char *plane_names [3][3] = {{"XoY", "YoZ", "XoZ"}}; + std::cout << "\n order of projected planes - the first plane is " << *plane_names[test_GOOD_descriptor.order_of_projected_plane_[0]] << std::endl; + /*_________________________________________ | | | Visualizing orthographic projections | diff --git a/features/include/pcl/features/good.h b/features/include/pcl/features/good.h index 31b5b150e67..5dce94d628e 100644 --- a/features/include/pcl/features/good.h +++ b/features/include/pcl/features/good.h @@ -144,7 +144,7 @@ namespace pcl * \return the resultant of order of projections */ inline const std::string& - getOrderOfProjectedPlanes () const { return order_of_projected_plane_; } + getOrderOfProjectedPlanes () const { return order_of_projected_plane_str_; } /** \brief get the transformation matrix from camera reference frame to object local reference frame @@ -153,7 +153,15 @@ namespace pcl inline const Eigen::Matrix4f& getTransformationMatrix () const {return transformation_;} - + /** \brief get the order of projection views programatically */ + enum Projection + { + XoY, + XoZ, + YoZ + }; + Projection order_of_projected_plane_[3]; + protected: /** \brief Estimate the GOOD descriptor at a set of points given by setInputCloud() @@ -190,9 +198,9 @@ namespace pcl /** \brief vector of three point clouds containing orthographic projection views */ std::vector vector_of_projected_views_; - /** \brief get order of projection views e.g. XoY-XoZ-YoZ */ - std::string order_of_projected_plane_; - + /** \brief get order of projection views in string format e.g. XoY-XoZ-YoZ */ + std::string order_of_projected_plane_str_; + /** \brief project point cloud to a plane * \param[in] pc_in pointer to a point cloud. * \param[in] coefficients pcl::ModelCoefficients diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index 8d64f1302a8..29779fc0a8a 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -194,58 +194,74 @@ pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_in switch (maximum_entropy_index) { case 0 : - + name_of_sorted_projected_plane += "YoZ - "; + order_of_projected_plane_[0] = YoZ; + variance1 = varianceOfHistogram (normalized_projected_views.at(1)); variance2 = varianceOfHistogram (normalized_projected_views.at(2)); if (variance1 <= variance2) { name_of_sorted_projected_plane += "XoZ - XoY "; + order_of_projected_plane_[1] = XoZ; + order_of_projected_plane_[2] = XoY; sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); } else { name_of_sorted_projected_plane += "XoY - XoZ "; + order_of_projected_plane_[1] = XoY; + order_of_projected_plane_[2] = XoZ; sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); } break; case 1 : - name_of_sorted_projected_plane += "XoZ - "; + name_of_sorted_projected_plane += "XoZ - "; + order_of_projected_plane_[0] = XoZ; variance1 = varianceOfHistogram (normalized_projected_views.at(0)); variance2 = varianceOfHistogram (normalized_projected_views.at(2)); if (variance1 <= variance2) { name_of_sorted_projected_plane += "YoZ - XoY "; + order_of_projected_plane_[1] = YoZ; + order_of_projected_plane_[2] = XoY; sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); } else { name_of_sorted_projected_plane += "XoY - YoZ "; + order_of_projected_plane_[1] = XoY; + order_of_projected_plane_[2] = YoZ; sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); } break; case 2 : - name_of_sorted_projected_plane += "XoY - "; + name_of_sorted_projected_plane += "XoY - "; + order_of_projected_plane_[0] = XoY; variance1 = varianceOfHistogram (normalized_projected_views.at(0)); variance2 = varianceOfHistogram (normalized_projected_views.at(1)); if (variance1 <= variance2) { name_of_sorted_projected_plane += "YoZ - XoZ "; + order_of_projected_plane_[1] = YoZ; + order_of_projected_plane_[2] = XoZ; sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); } else { name_of_sorted_projected_plane += "XoZ - YoZ "; + order_of_projected_plane_[1] = XoZ; + order_of_projected_plane_[2] = YoZ; sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(), normalized_projected_views.at(1).end()); sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(), normalized_projected_views.at(0).end()); } @@ -427,7 +443,7 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) std::string name_of_sorted_projected_plane; objectViewHistogram (maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); - order_of_projected_plane_ = name_of_sorted_projected_plane; + order_of_projected_plane_str_ = name_of_sorted_projected_plane; for(size_t i =0; i < object_description.size(); i++) output.points[0].histogram[i] = object_description.at(i); From eb9bd5bfcc63d05b6aedb6e26e2ae00fa2fdcdaa Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Mon, 11 Dec 2017 21:31:00 +0000 Subject: [PATCH 15/24] updated version --- common/include/pcl/common/common.h | 12 +- common/include/pcl/common/impl/common.hpp | 9 +- doc/tutorials/content/good_estimation.rst | 18 +- examples/features/example_good_descriptor.cpp | 12 +- features/include/pcl/features/good.h | 91 ++++----- features/include/pcl/features/impl/good.hpp | 184 ++++++++---------- 6 files changed, 156 insertions(+), 170 deletions(-) diff --git a/common/include/pcl/common/common.h b/common/include/pcl/common/common.h index 63b3d8cd553..0cd19603a72 100644 --- a/common/include/pcl/common/common.h +++ b/common/include/pcl/common/common.h @@ -201,13 +201,17 @@ namespace pcl PCL_EXPORTS void getMeanStdDev (const std::vector &values, double &mean, double &stddev); - /** \brief Compute get axis aligned boundingbox - * \param cloud the point cloud + /** \brief Compute the axis aligned bounding box. + * \param[in] cloud the point cloud + * \param[out] center the resultant center of bounding box. + * \param[out] size the resultant size of bounding box. * \return the resultant axis aligned boundingbox * \ingroup common */ - template Eigen::Vector4f - getAxisAlignedBoundingBox (const pcl::PointCloud &cloud); + template void + getAxisAlignedBoundingBox (const pcl::PointCloud &cloud, + Eigen::Vector4f& center, + Eigen::Vector4f& size); } /*@}*/ diff --git a/common/include/pcl/common/impl/common.hpp b/common/include/pcl/common/impl/common.hpp index 213e44a16cb..68cc534e902 100644 --- a/common/include/pcl/common/impl/common.hpp +++ b/common/include/pcl/common/impl/common.hpp @@ -424,12 +424,15 @@ pcl::calculatePolygonArea (const pcl::PointCloud &polygon) } ////////////////////////////////////////////////////////////////////////////////////////////// -template Eigen::Vector4f -pcl::getAxisAlignedBoundingBox (const pcl::PointCloud &cloud) +template void +pcl::getAxisAlignedBoundingBox (const pcl::PointCloud &cloud, + Eigen::Vector4f& center, + Eigen::Vector4f& size) { Eigen::Vector4f min, max; getMinMax3D (cloud, min, max); - return (max - min); + size = max - min; + center = .5f * (max + min); } #endif //#ifndef PCL_COMMON_IMPL_H_ diff --git a/doc/tutorials/content/good_estimation.rst b/doc/tutorials/content/good_estimation.rst index 359edb71469..047c169e0e8 100644 --- a/doc/tutorials/content/good_estimation.rst +++ b/doc/tutorials/content/good_estimation.rst @@ -123,13 +123,9 @@ It should be noted that the corresponding code is provided as an example in the std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box << std::endl; std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; - /// Get the order of the three projection views as a string - std::string order_of_projected_planes = test_GOOD_descriptor.getOrderOfProjectedPlanes (); - std::cout << "\n order of projected planes = " << order_of_projected_planes << std::endl; - /// Get the order of projection views programatically - const char *plane_names [3][3] = {{"XoY", "YoZ", "XoZ"}}; - std::cout << "\n order of projected planes - the first plane is " << *plane_names[test_GOOD_descriptor.order_of_projected_plane_[0]] << std::endl; + const char *plane_name = test_GOOD_descriptor.getNameOfNthProjectedPlane (0); + std::cout << "\n the first plane is " << plane_name << std::endl; return 0; } @@ -220,14 +216,10 @@ To get more information about how to use the GOOD descriptor for manipulation pu std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box << std::endl; std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; - /// Get the order of the three projection views as a string - std::string order_of_projected_planes = test_GOOD_descriptor.getOrderOfProjectedPlanes (); - std::cout << "\n order of projected planes = " << order_of_projected_planes << std::endl; - /// Get the order of projection views programatically - const char *plane_names [3][3] = {{"XoY", "YoZ", "XoZ"}}; - std::cout << "\n order of projected planes - the first plane is " << *plane_names[test_GOOD_descriptor.order_of_projected_plane_[0]] << std::endl; - + const char *plane_name = test_GOOD_descriptor.getNameOfNthProjectedPlane (0); + std::cout << "\n the first plane is " << plane_name << std::endl; + Output and Visualization --------------------------------- We are almost at the end of this tutorial. diff --git a/examples/features/example_good_descriptor.cpp b/examples/features/example_good_descriptor.cpp index 438beb7148f..eaeae2963c2 100644 --- a/examples/features/example_good_descriptor.cpp +++ b/examples/features/example_good_descriptor.cpp @@ -102,7 +102,7 @@ int main (int argc, char* argv[]) ///Printing GOOD_descriptor for the given point cloud, ///NOTE: the descriptor is only the first point. - std::cout << "\n GOOD = " << object_description.points[0] << std::endl; + std::cout << "\n GOOD = " << object_description[0] << std::endl; /*__________________________________________________ | | @@ -121,17 +121,13 @@ int main (int argc, char* argv[]) /// Get object bounding box information pcl::PointXYZ center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); - Eigen::Vector3f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); + Eigen::Vector4f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); std::cout<<"\n center_of_bounding_box = " << center_of_bounding_box << std::endl; std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; - /// Get the order of the three projection views as a string - std::string order_of_projected_planes = test_GOOD_descriptor.getOrderOfProjectedPlanes (); - std::cout << "\n order of projected planes = " << order_of_projected_planes << std::endl; - /// Get the order of projection views programatically - const char *plane_names [3][3] = {{"XoY", "YoZ", "XoZ"}}; - std::cout << "\n order of projected planes - the first plane is " << *plane_names[test_GOOD_descriptor.order_of_projected_plane_[0]] << std::endl; + const char *plane_name = test_GOOD_descriptor.getNameOfNthProjectedPlane (0); + std::cout << "\n the first plane is " << plane_name << std::endl; /*_________________________________________ | | diff --git a/features/include/pcl/features/good.h b/features/include/pcl/features/good.h index 5dce94d628e..dde03d03104 100644 --- a/features/include/pcl/features/good.h +++ b/features/include/pcl/features/good.h @@ -79,12 +79,12 @@ namespace pcl class PCL_EXPORTS GOODEstimation : public Feature > { public: - typedef pcl::Histogram<3*BinN*BinN> Descriptor; - typedef typename pcl::PointCloud PointCloudIn; - typedef typename PointCloudIn::ConstPtr PointCloudInConstPtr; - typedef typename pcl::PointCloud::Ptr PointCloudInPtr; - typedef typename Feature::PointCloudOut PointCloudOut; + typedef pcl::Histogram<3*BinN*BinN> Descriptor; + typedef typename Feature::PointCloudOut PointCloudOut; + using typename Feature::PointCloudIn; + using typename Feature::PointCloudInPtr; + using typename Feature::PointCloudInConstPtr; using Feature::feature_name_; using Feature::k_; using PCLBase::input_; @@ -137,44 +137,47 @@ namespace pcl /** \brief get dimensions of bounding box of a set of points given by setInputCloud() * \return the resultant boundingbox dimensions */ - inline const Eigen::Vector3f& + inline const Eigen::Vector4f& getObjectBoundingBoxDimensions () const { return bbox_dimensions_; } - - /** \brief get the order of protection plans in constructing GOOD descriptor - * \return the resultant of order of projections - */ - inline const std::string& - getOrderOfProjectedPlanes () const { return order_of_projected_plane_str_; } - /** \brief get the transformation matrix from camera reference frame to object local reference frame * \return the resultant transformation matrix */ inline const Eigen::Matrix4f& getTransformationMatrix () const {return transformation_;} + /** \brief get the index of Nth protection plan in constructed GOOD descriptor; Index can be [0 - 2] which is related to {"YoZ", "XoZ", "XoY"} + * \return the resultant index [0 - 2] which is related to {"YoZ", "XoZ", "XoY"} + */ + inline const char* + getNameOfNthProjectedPlane (size_t n) const + { + const char *plane_name [3] = {"YoZ", "XoZ", "XoY"}; + return (plane_name [order_of_projected_plane_ [n]]); + } + + protected: + /** \brief get the order of projection views programatically */ enum Projection { - XoY, + YoZ, XoZ, - YoZ - }; - Projection order_of_projected_plane_[3]; - - protected: - - /** \brief Estimate the GOOD descriptor at a set of points given by setInputCloud() + XoY + }; + Projection order_of_projected_plane_[3]; + + /** \brief estimate the GOOD descriptor at a set of points given by setInputCloud() * \param[out] output the resultant GOOD descriptor representing the feature at the query point cloud */ virtual void computeFeature (PointCloudOut &output); - private: - + + /** \brief use the axis programatically */ enum Axis { X, Y, Z}; - + /** \brief threshold parameter is used in constructing local reference frame. * By default, the threshold_ is set to 0.0015. */ @@ -190,23 +193,20 @@ namespace pcl Eigen::Matrix4f transformation_; /** \brief dimensions of boundingboxbox of given point cloud */ - Eigen::Vector3f bbox_dimensions_; + Eigen::Vector4f bbox_dimensions_; /** \brief center of boundingboxbox of given point cloud */ pcl::PointXYZ center_of_bbox_; /** \brief vector of three point clouds containing orthographic projection views */ - std::vector vector_of_projected_views_; - - /** \brief get order of projection views in string format e.g. XoY-XoZ-YoZ */ - std::string order_of_projected_plane_str_; + std::vector vector_of_projected_views_; /** \brief project point cloud to a plane * \param[in] pc_in pointer to a point cloud. * \param[in] coefficients pcl::ModelCoefficients * \param[out] pc_out the resultant projected point cloud */ - void + static void projectPointCloudToPlane (const PointCloudInConstPtr &pc_in, const pcl::ModelCoefficients::Ptr &coefficients, PointCloudIn &pc_out); /** \brief convert 2D histogram to 1D histogram @@ -229,19 +229,20 @@ namespace pcl * \param[in] largest_side largest side of object bounding box. * \param[in] number_of_bins number of bins along one dimension. * \param[in] sign either 1 or -1. - * \param[out] histogram a 2D vector of unsigned int. + * \return histogram a 2D vector of unsigned int. */ - void - create2DHistogramFromProjection (const PointCloudInPtr &projected_view, const float largest_side, - const int8_t axis_a, const int8_t axis_b, - std::vector > &histogram) const; + std::vector > + create2DHistogramFromProjection (const PointCloudInPtr &projected_view, + const float largest_side, + const int8_t axis_a, + const int8_t axis_b) const; /** \brief normalizing a 1D histogram * \param[in] histogram 1D histogram (int). * \param[out] normalized_histogram the resultant normalized_histogram (float). */ static void - normalizeHistogram (const std::vector histogram, std::vector &normalized_histogram); + normalizeHistogram (const std::vector &histogram, std::vector &normalized_histogram); /** \brief compute viewpoint entropy used for concatenating projections * \param[in] normalized_histogram normalized_histogram (float). @@ -254,7 +255,7 @@ namespace pcl * \param[in] view_point_entropy a vector of float contains three view entropies. * \return the resultant projection index. */ - int + size_t findMaxViewPointEntropy (const std::vector &view_point_entropy); /** \brief compute variance of a given histogram @@ -269,15 +270,13 @@ namespace pcl * the histograms are consequently concatenated together using entropy and variance features, to form a single description for the given object. The ordering of the three * histograms is first by decreasing values of entropy. Afterwards the second and third vectors are sorted again by increasing values of variance. * \param[in] maximum_entropy_index index of orthographic projection that has maximum entropy. - * \param[in] normalized_projected_views a vector of vector of float contains three normalized histogram of projected views - * \param[out] sorted_normalized_projected_views a vector of float representing the GOOD description for a set of points given by setInputCloud() + * \param[in] normalized_projected_views a vector of vector of float contains three normalized histogram of projected views * \param[out] name_of_sorted_projected_plane an string represents the order of concatenating projections. + * \return the resultant GOOD description (i.e. sorted_normalized_projected_views a vector of float representing the GOOD description for a set of points given by setInputCloud()) */ - void - objectViewHistogram (int maximum_entropy_index, - const std::vector > &normalized_projected_views, - std::vector &sorted_normalized_projected_views, - std::string &name_of_sorted_projected_plane); + std::vector + objectViewHistogram (const size_t maximum_entropy_index, + const std::vector > &normalized_projected_views); /** \brief compute largest side of the computed boundingbox i.e. bbox_dimensions_ * \return the resultant largest side. @@ -286,6 +285,10 @@ namespace pcl */ inline float computeLargestSideOfBoundingBox () const { return (bbox_dimensions_.maxCoeff() + 0.02) ;} + + public: + EIGEN_MAKE_ALIGNED_OPERATOR_NEW + }; } diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index 29779fc0a8a..24a200c13e5 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -70,50 +70,52 @@ pcl::GOODEstimation::convert2DHistogramTo1DHistogram (const std: ////////////////////////////////////////////////////////////////////////////////////////////// template int8_t pcl::GOODEstimation::signDisambiguation ( const PointCloudIn &projected_view, const int8_t axis) const -{ - int8_t sign = 1; +{ unsigned int positive = 0; unsigned int negative = 0; const unsigned int threshold_overall = std::max (1u, (unsigned int) trunc (projected_view.size ()/10)); - for (size_t i = 0; i < projected_view.size(); ++i) + for (size_t i = 0; i < projected_view.size (); ++i) { if (projected_view.at(i).data[axis] > threshold_) ++positive; else if (projected_view.at(i).data[axis] < -threshold_) ++negative; } - sign = ((int) (negative - positive) >= (int) threshold_overall)? -1 : 1; + const int8_t sign = ((int) (negative - positive) >= (int) threshold_overall)? -1 : 1; return (sign); } ////////////////////////////////////////////////////////////////////////////////////////////// -template void -pcl::GOODEstimation::create2DHistogramFromProjection (const PointCloudInPtr &projected_view, const float largest_side, - const int8_t axis_a, const int8_t axis_b, std::vector > &histogram) const -{ +template std::vector > +pcl::GOODEstimation::create2DHistogramFromProjection (const PointCloudInPtr &projected_view, + const float largest_side, + const int8_t axis_a, + const int8_t axis_b) const +{ + std::vector > histogram (BinN, std::vector (BinN)); const float half = .5f * largest_side; const float interval = largest_side / (float) BinN; for (size_t i = 0; i < projected_view->size (); ++i) { const float a = sign_ * projected_view->at (i).data[axis_a] + half; - float b ; - (axis_b == Y)? b = sign_ * projected_view->at (i).data[axis_b] + half : b = projected_view->at (i).data[axis_b] + half ; - + const float b = ((axis_b == Y)? sign_ : 1) * projected_view->at (i).data[axis_b] + half; + const int idx_o = (int) trunc (a / interval); //outer index const int idx_i = (int) trunc (b / interval); //inner index if ((idx_o < BinN) - and (idx_i < BinN) - and (idx_o >= 0) - and (idx_i >= 0)) + && (idx_i < BinN) + && (idx_o >= 0) + && (idx_i >= 0)) ++histogram[idx_o][idx_i]; } + return (histogram); } ////////////////////////////////////////////////////////////////////////////////////////////// template void -pcl::GOODEstimation::normalizeHistogram (const std::vector histogram, std::vector &normalized_histogram) +pcl::GOODEstimation::normalizeHistogram (const std::vector &histogram, std::vector &normalized_histogram) { ///compute sumation of all histogram's bins. float sum_all_bins = std::accumulate (histogram.begin (), histogram.end (), 0); @@ -121,7 +123,7 @@ pcl::GOODEstimation::normalizeHistogram (const std::vector::const_iterator it = histogram.begin(); it != histogram.end(); ++it) + for(std::vector::const_iterator it = histogram.begin (); it != histogram.end (); ++it) { normalized_histogram.at (idx) = (*it / sum_all_bins); idx++; @@ -134,27 +136,23 @@ template float pcl::GOODEstimation::viewpointEntropy (const std::vector &normalized_histogram) { ///NOTE: http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform - float entropy =0; - for(std::vector::const_iterator it = normalized_histogram.begin(); it != normalized_histogram.end(); ++it) + float entropy = 0; + for(std::vector::const_iterator it = normalized_histogram.begin (); it != normalized_histogram.end (); ++it) { - if (*it != 0) + if (*it > 0) { - float entropy_tmp = *it * log2 (*it); - entropy += entropy_tmp; + entropy += *it * log2 (*it); } } return (-entropy); } ////////////////////////////////////////////////////////////////////////////////////////////// -template int +template size_t pcl::GOODEstimation::findMaxViewPointEntropy (const std::vector &view_point_entropy) { - int index = 0; - std::vector::const_iterator it; - it = std::max_element (view_point_entropy.begin(), view_point_entropy.end()); - index = it - view_point_entropy.begin (); - return (index); + const std::vector::const_iterator it = std::max_element (view_point_entropy.begin (), view_point_entropy.end ()); + return (it - view_point_entropy.begin ()); } ////////////////////////////////////////////////////////////////////////////////////////////// @@ -166,119 +164,111 @@ pcl::GOODEstimation::varianceOfHistogram (const std::vector void -pcl::GOODEstimation::objectViewHistogram (int maximum_entropy_index, - const std::vector > &normalized_projected_views, - std::vector &sorted_normalized_projected_views, - std::string &name_of_sorted_projected_plane) +template std::vector +pcl::GOODEstimation::objectViewHistogram (const size_t maximum_entropy_index, + const std::vector > &normalized_projected_views) { float variance1 = 0; float variance2 = 0; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(maximum_entropy_index).begin(), - normalized_projected_views.at(maximum_entropy_index).end()); - - switch (maximum_entropy_index) + std::vector sorted_normalized_projected_views (3 * BinN * BinN); + std::copy (normalized_projected_views.at (maximum_entropy_index).begin (), + normalized_projected_views.at (maximum_entropy_index).end (), + sorted_normalized_projected_views.begin ()); + + order_of_projected_plane_[0] = (Projection) maximum_entropy_index; + + switch (maximum_entropy_index) { - case 0 : - - name_of_sorted_projected_plane += "YoZ - "; - order_of_projected_plane_[0] = YoZ; - - variance1 = varianceOfHistogram (normalized_projected_views.at(1)); - variance2 = varianceOfHistogram (normalized_projected_views.at(2)); + case 0 : + variance1 = varianceOfHistogram (normalized_projected_views.at (1)); + variance2 = varianceOfHistogram (normalized_projected_views.at (2)); if (variance1 <= variance2) { - name_of_sorted_projected_plane += "XoZ - XoY "; order_of_projected_plane_[1] = XoZ; order_of_projected_plane_[2] = XoY; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + std::copy (normalized_projected_views.at(1).begin (), normalized_projected_views.at(1).end (), &sorted_normalized_projected_views.at (BinN * BinN)); + std::copy (normalized_projected_views.at(2).begin (), normalized_projected_views.at(2).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); } else { - name_of_sorted_projected_plane += "XoY - XoZ "; order_of_projected_plane_[1] = XoY; order_of_projected_plane_[2] = XoZ; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + std::copy (normalized_projected_views.at (2).begin (), normalized_projected_views.at (2).end (), &sorted_normalized_projected_views.at (BinN * BinN)); + std::copy (normalized_projected_views.at (1).begin (), normalized_projected_views.at (1).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); } break; case 1 : - name_of_sorted_projected_plane += "XoZ - "; - order_of_projected_plane_[0] = XoZ; - variance1 = varianceOfHistogram (normalized_projected_views.at(0)); - variance2 = varianceOfHistogram (normalized_projected_views.at(2)); + variance1 = varianceOfHistogram (normalized_projected_views.at (0)); + variance2 = varianceOfHistogram (normalized_projected_views.at (2)); if (variance1 <= variance2) { - name_of_sorted_projected_plane += "YoZ - XoY "; order_of_projected_plane_[1] = YoZ; order_of_projected_plane_[2] = XoY; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); + std::copy (normalized_projected_views.at (0).begin (), normalized_projected_views.at (0).end (), &sorted_normalized_projected_views.at (BinN * BinN)); + std::copy (normalized_projected_views.at (2).begin (), normalized_projected_views.at (2).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); } else { - name_of_sorted_projected_plane += "XoY - YoZ "; order_of_projected_plane_[1] = XoY; order_of_projected_plane_[2] = YoZ; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(2).begin(),normalized_projected_views.at(2).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); + std::copy (normalized_projected_views.at (2).begin (), normalized_projected_views.at (2).end (), &sorted_normalized_projected_views.at (BinN * BinN)); + std::copy (normalized_projected_views.at (0).begin (), normalized_projected_views.at (0).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); } break; case 2 : - name_of_sorted_projected_plane += "XoY - "; - order_of_projected_plane_[0] = XoY; - variance1 = varianceOfHistogram (normalized_projected_views.at(0)); - variance2 = varianceOfHistogram (normalized_projected_views.at(1)); + variance1 = varianceOfHistogram (normalized_projected_views.at (0)); + variance2 = varianceOfHistogram (normalized_projected_views.at (1)); if (variance1 <= variance2) { - name_of_sorted_projected_plane += "YoZ - XoZ "; order_of_projected_plane_[1] = YoZ; order_of_projected_plane_[2] = XoZ; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(0).begin(),normalized_projected_views.at(0).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(),normalized_projected_views.at(1).begin(),normalized_projected_views.at(1).end()); + std::copy (normalized_projected_views.at (0).begin (), normalized_projected_views.at (0).end (), &sorted_normalized_projected_views.at (BinN * BinN)); + std::copy (normalized_projected_views.at (1).begin (), normalized_projected_views.at (1).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); } else { - name_of_sorted_projected_plane += "XoZ - YoZ "; order_of_projected_plane_[1] = XoZ; order_of_projected_plane_[2] = YoZ; - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(1).begin(), normalized_projected_views.at(1).end()); - sorted_normalized_projected_views.insert (sorted_normalized_projected_views.end(), normalized_projected_views.at(0).begin(), normalized_projected_views.at(0).end()); + std::copy (normalized_projected_views.at (1).begin (), normalized_projected_views.at (1).end (), &sorted_normalized_projected_views.at (BinN * BinN)); + std::copy (normalized_projected_views.at (0).begin (), normalized_projected_views.at (0).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); } break; default: break; } + return (sorted_normalized_projected_views); } ////////////////////////////////////////////////////////////////////////////////////////////// template void pcl::GOODEstimation::computeFeature (PointCloudOut &output ) { - std::vector object_description; float largest_side = 0; - std::vector view_point_entropy (3); + std::vector view_point_entropy (3); PointCloudInPtr initial_cloud_projection_along_x_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud PointCloudInPtr initial_cloud_projection_along_y_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud PointCloudInPtr initial_cloud_projection_along_z_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud @@ -335,7 +325,7 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) coefficients_x->values.resize (4); coefficients_x->values[0] = 1.0; coefficients_x->values[1] = 0; coefficients_x->values[2] = 0; coefficients_x->values[3] = 0; projectPointCloudToPlane (transformed_point_cloud_, coefficients_x, *initial_cloud_projection_along_x_axis); - for (size_t i = 0; i < initial_cloud_projection_along_x_axis->points.size(); i++) + for (size_t i = 0; i < initial_cloud_projection_along_x_axis->points.size (); i++) { initial_cloud_projection_along_x_axis->points.at(i).x = OFFSET_TO_THE_ORIGIN; } @@ -347,7 +337,7 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) coefficients_y->values[0] = 0.0; coefficients_y->values[1] = 1.0; coefficients_y->values[2] = 0; coefficients_y->values[3] = 0; projectPointCloudToPlane (transformed_point_cloud_, coefficients_y, *initial_cloud_projection_along_y_axis); - for (size_t i = 0; i < initial_cloud_projection_along_y_axis->points.size(); i++) + for (size_t i = 0; i < initial_cloud_projection_along_y_axis->points.size (); i++) { initial_cloud_projection_along_y_axis->points.at(i).y = OFFSET_TO_THE_ORIGIN; } @@ -358,15 +348,17 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) coefficients_z->values.resize (4); coefficients_z->values[0] = 0; coefficients_z->values[1] = 0; coefficients_z->values[2] = 1.0; coefficients_z->values[3] = 0; projectPointCloudToPlane (transformed_point_cloud_, coefficients_z, *initial_cloud_projection_along_z_axis); - for (size_t i = 0; i < initial_cloud_projection_along_z_axis->points.size(); i++) + for (size_t i = 0; i < initial_cloud_projection_along_z_axis->points.size (); i++) { initial_cloud_projection_along_z_axis->points.at(i).z = OFFSET_TO_THE_ORIGIN; } vector_of_projected_views_.push_back (initial_cloud_projection_along_z_axis); /// compute BoundingBox Dimensions - Eigen::Vector4f bbox_dimensions = getAxisAlignedBoundingBox(*transformed_point_cloud_); - bbox_dimensions_ = bbox_dimensions.head<3>(); + Eigen::Vector4f center; + Eigen::Vector4f bbox_dimensions; + getAxisAlignedBoundingBox(*transformed_point_cloud_, center, bbox_dimensions); + bbox_dimensions_ = bbox_dimensions; largest_side = computeLargestSideOfBoundingBox (); /* _________________________ @@ -390,45 +382,42 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) std::vector > XOY_histogram (BinN, std::vector (BinN)); std::vector > XOZ_histogram (BinN, std::vector (BinN)); std::vector > YOZ_histogram (BinN, std::vector (BinN)); - std::vector > normalized_projected_views (3, std::vector (BinN * BinN)); + std::vector > normalized_projected_views (3, std::vector (BinN * BinN)); ///YOZ Projection std::vector histogramYOZ1D (BinN * BinN); - std::vector normalized_histogramYoZ (BinN * BinN); - float YoZ_entropy = 0; - create2DHistogramFromProjection (initial_cloud_projection_along_x_axis, largest_side, Y, Z, YOZ_histogram); + std::vector normalized_histogramYoZ (BinN * BinN); + YOZ_histogram = create2DHistogramFromProjection (initial_cloud_projection_along_x_axis, largest_side, Y, Z); histogramYOZ1D = convert2DHistogramTo1DHistogram (YOZ_histogram); complete_object_histogram.insert (complete_object_histogram.end(), histogramYOZ1D.begin(), histogramYOZ1D.end()); normalizeHistogram (histogramYOZ1D, normalized_histogramYoZ); normalized_projected_views.at (0) = normalized_histogramYoZ; complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramYoZ.begin(), normalized_histogramYoZ.end()); - YoZ_entropy = viewpointEntropy (normalized_histogramYoZ); + float YoZ_entropy = viewpointEntropy (normalized_histogramYoZ); view_point_entropy.at (0) = YoZ_entropy; ///XOZ Projection std::vector histogramXOZ1D (BinN * BinN); - std::vector normalized_histogramXoZ (BinN * BinN); - float XoZ_entropy = 0; - create2DHistogramFromProjection (initial_cloud_projection_along_y_axis, largest_side, X, Z, XOZ_histogram); + std::vector normalized_histogramXoZ (BinN * BinN); + XOZ_histogram = create2DHistogramFromProjection (initial_cloud_projection_along_y_axis, largest_side, X, Z); histogramXOZ1D = convert2DHistogramTo1DHistogram (XOZ_histogram); complete_object_histogram.insert (complete_object_histogram.end(), histogramXOZ1D.begin(), histogramXOZ1D.end()); normalizeHistogram (histogramXOZ1D, normalized_histogramXoZ); normalized_projected_views.at (1) = normalized_histogramXoZ; complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoZ.begin(), normalized_histogramXoZ.end()); - XoZ_entropy = viewpointEntropy (normalized_histogramXoZ); + float XoZ_entropy = viewpointEntropy (normalized_histogramXoZ); view_point_entropy.at (1) = XoZ_entropy; ///XOY Projection std::vector histogramXOY1D (BinN * BinN); - std::vector normalized_histogramXoY (BinN * BinN); - float XoY_entropy = 0; - create2DHistogramFromProjection (initial_cloud_projection_along_z_axis, largest_side, X, Y, XOY_histogram); + std::vector normalized_histogramXoY (BinN * BinN); + XOY_histogram = create2DHistogramFromProjection (initial_cloud_projection_along_z_axis, largest_side, X, Y); histogramXOY1D = convert2DHistogramTo1DHistogram (XOY_histogram); complete_object_histogram.insert (complete_object_histogram.end(), histogramXOY1D.begin(), histogramXOY1D.end()); normalizeHistogram (histogramXOY1D, normalized_histogramXoY); normalized_projected_views.at (2) = normalized_histogramXoY; complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoY.begin(), normalized_histogramXoY.end()); - XoY_entropy = viewpointEntropy (normalized_histogramXoY); + float XoY_entropy = viewpointEntropy (normalized_histogramXoY); view_point_entropy.at (2) = XoY_entropy; /* ____________________________________ @@ -438,13 +427,12 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) ///NOTE: The ordering of the three distribution vectors is first by decreasing values of entropy. ///Afterwards the second and third vectors are sorted again by increasing values of variance. - - int maximum_entropy_index = findMaxViewPointEntropy (view_point_entropy); - std::string name_of_sorted_projected_plane; - objectViewHistogram (maximum_entropy_index, normalized_projected_views, object_description, name_of_sorted_projected_plane); - order_of_projected_plane_str_ = name_of_sorted_projected_plane; - for(size_t i =0; i < object_description.size(); i++) + std::vector object_description (3 * BinN * BinN); + size_t maximum_entropy_index = findMaxViewPointEntropy (view_point_entropy); + object_description = objectViewHistogram (maximum_entropy_index, normalized_projected_views); + + for(size_t i =0; i < object_description.size (); i++) output.points[0].histogram[i] = object_description.at(i); } From d12ce7a5aa452dc0b23814dcccc326704e36d0f5 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Wed, 13 Dec 2017 10:30:45 +0000 Subject: [PATCH 16/24] use Eigen::array instead of std::vector --- doc/tutorials/content/good_estimation.rst | 4 +- doc/tutorials/content/images/output_good.jpg | Bin 0 -> 794502 bytes examples/features/example_good_descriptor.cpp | 4 +- features/include/pcl/features/good.h | 39 +--- features/include/pcl/features/impl/good.hpp | 210 ++++++------------ 5 files changed, 84 insertions(+), 173 deletions(-) create mode 100644 doc/tutorials/content/images/output_good.jpg diff --git a/doc/tutorials/content/good_estimation.rst b/doc/tutorials/content/good_estimation.rst index 047c169e0e8..cb2aa50e0cc 100644 --- a/doc/tutorials/content/good_estimation.rst +++ b/doc/tutorials/content/good_estimation.rst @@ -124,8 +124,8 @@ It should be noted that the corresponding code is provided as an example in the std::cout<<"\n bounding_box_dimensions = " << bounding_box_dimensions << std::endl; /// Get the order of projection views programatically - const char *plane_name = test_GOOD_descriptor.getNameOfNthProjectedPlane (0); - std::cout << "\n the first plane is " << plane_name << std::endl; + const char *plane_name = test_GOOD_descriptor.getNameOfNthProjectedPlane (0); // input param can be {0, 1, 2} + std::cout << "\n the first projection view is " << plane_name << std::endl; return 0; } diff --git a/doc/tutorials/content/images/output_good.jpg b/doc/tutorials/content/images/output_good.jpg new file mode 100644 index 0000000000000000000000000000000000000000..195dc26e59704f5716aa2692969e7018672c1305 GIT binary patch literal 794502 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%0DDI%|7waDRUpn5t^kOEa5d1$O=B_>AspNzH<7 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

0d$y2zeKx>J!Y(VAQW&Mfht6X+R^-ebG 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 z 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 *w|D5F|SQ%Qd4~h_c_x$Um}jnc`ln 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%0D?pVGNX--_#S$ zh4(EY+wa@po0OAOw`4~wF)Y~VYyIIZHqtXChC~CcS|6t@6tI{O$*!#fjHj{U-5!@jE>F;9Zh3V^{ zUEf;nHy}Rk;a26myhvXCutsdw75I)A{jnI}F0T&>oO0s0kO#Bb0rkZiY1-wv5%~wL zp8EvG(tZ9{NLOG?{C%T z6Z7%4UTCE{K2E|Ti7;+}l!43&^2_cU2PIk;E;LjcyIg zb6#Lm`DKUZSo=H&pG_Fq3*h+uZ&6vsYDv38b@Xhr0|3FXtNIIMKrTK#lcPThdXMU6 z^Y0U|RZCsfpAX|!0u4^h2BL6X8*J6`mKu^112-@LD6eLg1jEjrrre9Snq~QHVs4}m zdSxwm-5I|*Jj5_?tQ(xJ@VX1nK>3?$`!UEq5H?o%busniZ(OCO+Z_jD*MYy|%L!M@x^N%uqSM}8Ms{q&OV+Rl2tTOKTDX@JFo)6!8C+AcU~2-0 zaHI3okm`ie5X^5Ue-ie z15`PQWKI80BQU=3nqwGRxq>})nXSAnM!?O{3fs-fyOimu^K-5g$20*z<>>~itM$E8 ztV;XEvC?da-!Tac7V1wDU110Pu^RFQ29L zb}pPBEcHA~bsZzW^v>;OGH0P5Ss*>%609)cqhi;!7&IbhFZ@zD8+%wdnTY4Vx;nj6 z$?kqNzWHJL5WuV|={GbaBblS2cptiHUh;u4KVz~2Yi$Yp;oq(yIYvdlku9!+n^8^t zs{T=Zs1|T@SeQM_>e`AHe!f*B@9#_{Z+b#FUgX^-8g3U_b(5W1>35m+7AzhB$R1sH z>$~oiPgxi60WyvXxe^F?E63v5P*F}qT7kzsA#HpG3mY8+THUp2(e{%AtQDSNqG zZ^qjOT=gvQTLZniHd-iY;yjqHTee@Gc67?%OV>81bI54yCJ6r6i#MEmMo?@QuO>_> z)M1j+GFbvp(!R{y6bXFUur_uF1ICS@(kZnAj|<{KlKUx}wfcHN&2AkTWS&e&WEE=50t zOoa^Cp3Mkt?g2@CN_vrGHg6~SCeeo`3Gk}EAE;t!*+pBVNEI5rY@QtC6)SUbp+~iYEscdBlj0-cjLwC@s6tv+5 z1tLA{)fMIR{H88^K z{z4$zx*c#j%>LrNH^K<(q+etC-{x9h=8Nu}U(qQ9tD-=Xy$-ph3Kk?~OYG}3Gi*_* zq$ByVQcSK7-`<5am=Zl^A{SNZo8p;G3fBCI^AUI0Q9Gcx6VoB3o zPUjP&lBO?bMv&qhzcN~SIG<)P|FhF1 z=1&!O=qB`S#4u?I*ZtJerg6MwbRmuh6gHtg<#jSUf@jrmjpX@0$T6*EMq|9PI0ki! zPi4tx$YS#2OMR7l4L-H;+yBy7*vP*S|F2XX?EfcKN6%W)!9Dr>)q_CEztOXX;3Dzs#V1qYPKWTjW$;vMZ694ADnNoyskXrJtV^}AR{iT6SVTj| zFIQAfH3{i&3n+GyMg=V3<70d4mcOi!{dkUBkUK!3F;Pu zx0wK!F3iU(%VSU@`M)~{z8s?**xl3mJwr86M?WXq zzbtj!-KX+-uaJw{|M5lT61M!NZYwE{`JJwgCLyuZJSl-9j=p)YPTLf+&b*%(E2Mnh z)nR(e!Dxi%`O&8A6*iFzDZpobJpRkCo9d4(6C=16OKwr=L8!f{B^Na}i#L>n%8+!x zR|$E-GE-ndK+C`yjBg){sf3(1UWwFa9`hFFebKsIm_VXcl3Kf-ZIHU_s6Od=?cXya zK{*Y|?=+|hO3o+~G*AMy`r>21-}B2f$9V`^8gMj?R=tbUS&w%YACmyHC-|GiXpCLGF4@B(i3E?$MD_Ef(@iN#tc%-bwI2YiM|g*#+?K<=!;iSqjnSYaS6q%W z4szc!=Ju>s^5T7smb{tM{qx27lIniFbag#7IZP|18z_dF5Cc`OY8$_X-wm3G2SDNC z;o2J_BJAI!y>%$`v^Bw1HCUn6aO9-GHRza6-Nxs`9!{A`uLO`c`4Q0d%Rh+J$OKq@ zfNlT~*i`BcaYPKm4TA5j+T2WRYOF>31xZ4@cuZNQ;Vu`MSpSD@bSc-5G{q)g_08sv zFTp~ry{>NcA4KLdzIDCj7U-{awkSrlok*Dqm5o+O*{5-%K!0=7`gAf8^N(y6U+5m= zD6_|p-z+L7wIaFus;z>5*z~4W0=Spn=N8flol3zI+q(gYiN!rd`yK$PIAXVUzLAA= z2<3NcXs4e@m0$4dkF7g$Sk|5ok#B&c+1dPJvPQ&kO4m7;VJg(T9y-lic0d}xFV^B7 ztV-foR=_EDo;0w*2SR7+xSGy#DY;%u_Rt5(tg5V6K|USJGDkt+`26x}MoFWUH>*0c zUha7Fbu6>zkU;HzJSw{9FD#HN@|#$Rqk7-S3OSCz++%yu`r^@WGuh6&``zDC_MfFd z*wYHS4RNtd4&jM7!`RU|cz182%g=F*EMLa=gXQKK=GKQpHQ2OVgX1y5IoVZ;wE`;z z(UkoGG*NWcMA?!38M^Cba!u43*qTAiUYI8=vb83Jd1Kx&4nmIw+DF*KA~uV8-VvJn zt{|5}uERe{i7{AN8(YI{5H@n|uAIMZ8k+d6^AxM4DKCk-yr&DqU!@ky`KXyJWZ@{) zU#To_(Uxrx$@R#U*+9OSi zm*TT}mnXhQlOh3dx_RKB!u8IRhP^Y-hL%2v|DLKY(r(eS9$Hu1z;uwq7rPRgiNKN{ z(VWbGB}~0}BM)!mwj*vK^^ZQelj^4fn?_cO`sIk;B~YldNa1qyX;5q>6J})n?jT@k zuoN1IZCP6VGo704;&&|Vj~N#_GM0>`Dz{#ZheK*otiWhrE7Ltll|qIEE3LZVun~0& zREI-q&1i_A8O)Z36}?atCxr~A-Lyqw^slk3exzA!`%NJ!9omndtgWHoA{>en17sqHSmlZKdZe)YhM41>H2yU61F9<#sK@~!Sq+@3ZU z>q;8@T*^sG@{rm_Dwd%GmXliu>D0gkEG@r0mO~^r^cHT>=t3hQ^MEI^_6}2)Y!q~JYzoSolK3W`|66x5TAtDc^+ahXy@QGNT8$jHo6~?`^p7>>k)@G{ zes&dI%0b7>xS;Fy)|OL-%hYsP=i5V%XM|rB^espmU9F6!9ulwfnHqWx*hQ_fJG*Uv z5SmIrGlB91W7*p5Cqo+e^z7g&BXn$ zVwjASTI&CKv*?D_O+@>ANvDlBTv&l|{~?G`n@S->g0<0Dw4tyeVdJagk@>wgp_P;i zCTTI35+i5%w5%)K!O3YRJ8jV2?Hq3pbx4L;>G^ zHKpS9Jw$qGW70#;go|Zo&XeMmV`$=#P0I2LY$y)RM()+?u3gAFgqxez^Ih_j3{ZEE z8GCnAf`bA_01JCDZf`#;dG49tF6mi}8K}p5dFf26-XyPWf}C zhD-{)hBOe-dGW3!?_M?ih-9Bc7{dWs=cPxl@mNhe?a|L-?ajCcP`Ta&Y&~rJw6|?( z_ac6DHb67rZPd2MkVtL+VA0`GjvR=>Tu;es-s7MCdy-7Wr&!mkeM?+&*4`{z`0)L) z)W50oPodus@t{)PNS!crvIo}c%I4M7?Aj@C*8#ymRZ@LEbIui5l5=VO#ll+Cg7K8; zcllX>7wAq~W8OglzHaqs*5R>?$a${95rxgUSRJh=e3J<`K*InBWDEBV zP%^}hof`Gw&R;=}OoZkH%_>S&L>_1Vmh(_I7eX5S~((qNc&%3h$pH+N4(D;_= zQ_u7pgxnSde%`+ETW~Bm|3KCty$fn??`{~sV^#g;168BU%_q08G9@c1ze=QpA}l$+ z+lSESb0F2tM!>)4Xe(=Qxi8oDb2A6X+^94Q@|ZHMMshfevSVeed%dc$*QzWrS)Q39 zd;nmzxt~S>h@9KIz9Jf){mevu+r+DVo@jdDRx1%nROI>O7c59w|I&;>3uarK-~2LN zwynD1xm*rPZNS9ggTsk{sjIiD3`~A`6Ju4TA!lhG(NwB(ep(}rdXx3GpM9=I-441o zy-7dQ4x#ETx}pX4?a^pFEa#`(PAR|lO*K1-8L?Q8uG<{i3o_3}81LfSYDe%@q{&*LJw2r80 zfJvf-u*CKZ4afudjA<)2gpqw>{ZFl>6Rfoq{-@UB{Qqh#x5;yj+f=G?Cq(1vv-xgRV1+B36VO3yeV z6fPV06C;9HBP47w_6-?j?^b@cc9=YNF#%6wV(#!w1G@O{ud;o6J`pX_UaarbyeP`K=>j*@KW zlLmeRqR7;SticLe_*Jh;`BB&~^gWCN2Dh)v$y8-Y<-V3QrR(2?%tYW(jb^6a!y3OE zK5|>kt+5G7GH~fZ*Rd_j|5?PScXwkt4jsTjp0uKz>nZpY)pX6y2s>03AKnUSi#3`% zME0V=FT?GA{Xc5oe0FxV;Mnp_b!40MLyBZ>Zk`ty1g~bC`A|L*hQ35kjBlWHby_Fi z80Rn2@p*-k4GXS5H4<5OYjGbwZZ>N>dClq+zjzEDjSzI8 z48IVoHcc5!&KFUlc;uI^yWt#P> zSZo!N-nd0gP_i)1A$*<()Qf9B1fcncM4ZECWmPb>Y*OJY9Xr^7u)lC@j)B|;+0e3gc@uqv-)J>*)x4b!kjd$(nD#Q=ax zZPY%LHLfMu4Pr+;FwDRHWo%tumEVuDMFNdP`L%e&a3JqWGVV_%{HGX zQR;T9iOXH9TE){+4ch#^H*~o`n{}j#(z{9PF}y;I)HUyFv$pVovmD@ag5#EvHJ(7x z2U@|IJHFEIra-nou_p20yVHx8+QOilp^;T85bVm37f91f8H1N>GzH8^F4nzu>F<&_Bcq>?j&q!PEN$+m#LV; zWJ{0pi)5<`jlScM7cJwXZE1~@j>5glZdc6q38@5SBL^H%%Cu-o?H`2Hw%5yj2zOce z5KCTZ6=eygD)!gn95eU2^H(g0%BhK9UAtrTF*0CL~tZZvXI)_#x`0E2^ zRpy=df6qVh&O5?Z8?1g-`VLnSXD!;eb(0;g$0`$4%y;T<=cm>&OK$;o~C0a#$i3 zk-IbbD^T@_e)$|v?NA3^_k&0|I;0-`c;YF0v^q7=9`tw5S-UeuPD7@}qzj(b8a&`g zVtdTAAMrujreVrm-&!ZI^o2zE!H0Wn4(;JPuha*Pd3g$PS~tI=*C~=18tH?w+*NOu zSi1JIyeq+-t6=Weq+_KT^v3JhG3GLwq(0#g_Ee4QQN3r} zAUyvJGR(R`4f)XgoA;N~t5i*_Kx%=TDi zjrDK94kZV2dg@(y<%POh*7FzU)BesAS|GB{aTugwPO32f7>o%N1fDNMZ+*mCc4lb! zLJ?oCUg(9}-4^z$DuEyKq?h&cQT)`pb5XE;1`zcX8IfwOo+Fo(W%(-+E~p zw7TGOThe5%wZIfV3pF9nKM2?1Y=zW|y!Uvvt{+1Hk_kvv&6*G;$W($8eAM#GM6)Fg zVic1qf}z_)8_agI?Ouh5W!SOVd&UahO?9SrGs`Vna{!Oy%nsHGiL3PtEAc1&xBJj5Rb9cSs`!gMls&wk+*UB$zPB6jh z|C#vf7OZD-`67~I@+t~W{C$N*mHUsx-{NmtHsJt2L5P)!`2(2@EIRGP0GSs!%5i3G zYAwF;&rC4!isYS9?ZFpu3JuVuC*RbN0@en{8$`9sUy|LBb_#`J2dJW$TJ+q)mN=q@nN*fi0tpzgr&N6+4g94bQhGP zOeiguPal3!M;%qBiOlD|b(nsz$@Fcxnfe&>MZLBkSU4AW9gsD)KTMRG_{L5!%lcdd zigKpy+;GO=DJRv1as*wyXEHR;X8b0!7!mV{9Y0f)KSF9`_5JDDd&v!BIu$+_p+df4(8 zb6P}~_+*@j++z2IR|u%62L0@te)}brW1r31SH?q zO66)l@@1R?g(GoV=&1V^PR3 z6O3vq^KZ6OR7J{O0NmRcJlDUX&!QPgIDbg|Y`!AoN&~?DYF?67^*A}Uqu?ept|QW0 zHTNTNEZku{JtH_4$Gg6XAIV|3`|?2?;-`14mm`yPYvDZ~0s`UP`#X9TZc9TwLII}0 zc9ZmYlAcyAL@Bpc_pPhG-z4n<%PHgSR|!-2{ots`uQP#qC3H2ukd9BX>vJu9xFQ#1 zl*Mw+R7+i&?JOqTDlo{8xr#=tH4d70j558wb&$$pDE%l(No0r=XxNDyURZ%I%0{va z$Ed_N8%5^0%mwHMh4L=i*3Wv#%bogIbi0r-KF2y9TaD3_^5%JKwRrgs3mh&-gB^s~ zPer+*Q(rNJ_fe~I^w2x!*m8-v;xMFaU-cnqZB;Fi4DHQ%?oVcF-qR1aKUn`k?2EmE z+3Ja|rGF6b+l2lh0`4d#ThVw{WnDMBh?wa57xtec{_)H57&APzE1{PkVHa2(x?D9G zR(Zx^Dg1~ySH|oOgiR~qUO||OefL3enOVaDv;jiFWaz_saIf{VHjembcITK1&{aH5 z_uqc{+Sl0Ba2w%mMb5PFPeQ}`$`qi z<}x&8Vh{#=ttuCo3Q>WNxR?CWGe6V?>vdq1;5?N&plTB^C9z_EU&0s>vzZ+LUtjht z%?TiPdKK>$rsO zx<>QN=gc@i_~teO6Np?Rp4IyOPs9QcM$K(W205W9c&aenl8x~!RHYrx>v+ubp|auQ zAH)i&Ubc=J1fR4PuE_@6=?IiCY3GX7(z_1*D6oG*dqU#xem%3V9xQ|MO+8D93}sg6 z8=9@(=g34*2lO+g5|B*ciS`U<6icP?ZxyqC5~+^6Uwu5XPw~?wr`HRrH+^AXw1l^| zluSy{ug1jb^MOlGApWPgr!J@~<2zge>>NPCU?cp@wPz_pTT6j9kN=$c@wCSGl)(BZ zcf8xB?UhM5;e)L7qOtnpXNQhehplx&EP0jnBO*&9DJ|@8+p6SCBj(1+evH&c=lOxS zlBs#3Q;NpPJAx)I!jc{Vo~)HR9{Hk6QcHk};J3X(k-g@a#}<<)rj^C?bBNWC(@GLC;{2I$Gm+esWzs0hdtxIu9xCv=@V+a8Y+gDx=|;c3zb=wA9=_!)?4jce__^?F z*=p5T<3uTTt9B>$dS@*tAD{SZDLv|Gw>0TMg4PH7=|$t-%=fE$R1cRVFzMQE$f)oI zr*ShNtK$9`zRyUFX2!$cgiy?FF=QPxyFMRloME!e-@Uk%R>_pMf!5+~70>y_9qmqe zBIp)t7Rz9L9VBYe2SjpW1(#!;FeDo;LfZvFcTb>DPKr5}WQV8j!Xtja_xB^D z`Ez>hQ=H?}Ghc*7o!S*aXVpp=C zT@bNZ=+wLEne~#XSm?LG#TXYmfGTnGx@FKBo5ROu~Y`NJSz2OR;z zoqXm!6gaiW7&Hbe{Df`!ZU1F<&V@xP3>1bXFLY@XwQ_W97R+{S& zzndK>s+vpB6iEEW8fyHyEIX?LZpePD4&VQ(V8GuMuu>X=+a14WUk)kVZ*A3l>O-un>HyanOlfv zcvvQRnBK~K{q<`8un?`;0b#)ZC?ponx@sxv@ejh9UrXuMLh4gs;LX#S>}-i5;1&ASq9LcDfdil7Vy}+^bzKY#LF|R`eA#}7XLxukX-hq%9|0GWYBvE zB+g+EX&s6R#x*=16+`D$#6}P8Q04k+*!i?dEk=7(Dm$b#ZsszW<skW14p#zWpg#<1issyN^k;W9GtWA6DpIXCB6K(RVyuH@`^WTA5u8tZ5> zl6gB!_PeoA3K!nd{=B?m*SK(G)ztl11#Jet@_e(hwC>)qXO6{&e?r<^{>%(}SF3_U z5M(&tB-CJ>nc@3e!9R%E2``4)9!|7Zc@w)atG1PoILI`qR&QQ5Pv&!Ol*Y`V)$~-S z)>s!D&H<2{hg07Qe^odSmrAm_4r|ymW$V<0`nD&3kUVqg3tqj>%Y%H_`C5$(bGHFc zJrC-Xc0@?g*;M#peV=C&hMZ#cIh2?2IZFGqP)3~|4`AhVk`RO$r z>`rwsA`C>g?;FUPt-JKw^KefN*bp-dOO0AN_!aQR5&|Zvx#i#`|f;J65qssqQ0Z?x$+nh(bg# zxnzf6RIU(}m*;=yxKb$_>+SMc3h;T_tFizmb*_X>)(;4L-VpMFLGYI6y@!ETtn%;QXa zo&m>UMxS3K=_7<_a)mW{aUjBA_lv?sOE_~pbk+oD!cX??F3J3Zj>G46({vbb| zdO2k=xXOVq^!I(${|wL=bsurL{V=f{j%IK3KjStMTXnt4n+s90d<=wkGGbx>2f zZ6?Xp7RiJE`Zq*It4Za6rsZCS^lvYSGkYYIZUnA_ z7xexr85Qapk~WFxDZQr7qQ*#e&PF3MzKse$j)^Uq4`;NR`E%vXzo;k6oA{*o$is3ag_&G+LeQhDRsfa5AF zWwNoRWd%>eG=HM0XhP=Zxz42P`21q^sW6ZzV@i@EOhI~Tl9aN)6GV$@dTI5yhyO}D z)}bPp@3!^?Dd0}N-TKdgHebXQC!I2AV8}g8$uei4P;w9IZdwe838%%}>8&U%WT0pu5oJ3)AtrxR&z?$2{vj@pd(Q zyX0c*($({&IM?4m zo+g>Bh5|FIge5efY_A`jrLdLNd0%?wti7sE8_-_qRq>CD^?IxiTo0&^+!+%fCIUs| zNAHK2M;>QCs=*(N9N@&z>%YZ5o4C~0=;(n!Ff#EFhf_FQsa zj1Dzxi)CS;f1}2iHu@;FF*QnPMYI!PhvgUZt;Qn=-&e5BUJ19)1=erw38sX=vxfn@ z(`|YR^Rk7y{PVo?AB03psRglHr#Qd@UF#YQB+=Jr>1-ZtNcTj;oBWD|-l2&dJeI?+ z5!FIA0-LHYGO;Zf3u=05zcm=~a>fXh(}y0psqtIlEY4ZlVMz)Zy7cVbLYc3VU^EAj z;B7u)2@*#qHoN)}JVkxf0?2zb2|vql@_^`MU*AW>7!{>?1h7&TfzwB8PA=x6K0MaO zbr+bl+AdJ?`h8izM&mROyRfL};PLBT>D|HW=0K0JUVgnv1$GR?Hzs zm@xu>+XW14&(b`kqB0DJR)$&QZl7xl<2U45UwcTvezx)uay&c~PsTIpiPL0@E}*V9 zu=(u!X~ZoisWRvqT895VUUj7>WRijd{E6I%FIblW=kFR&a$LY|oRb5e4t~AONMDvx zZ;$t59n_YQ&5@)CDrXQ+aheo|IHtYjRZa)K z?fgzOc(jB%6ak!rXa!~kaw01gvp{KHOP_xmstpRj3h3lZSMYr11}sl0oDJ+(^P7>y zSm4^n{7I9L8s|`dCceBITba;Gx}Kl!ALvO}Bqj6Q9%%#8bz zn?)W|c*TrnMB;dMD3oAl)G0bq4)*QH$rid}>T3OPUe+In|B^5sLl3k#b$G9P^f4Qs zaDiTr_ybvIVVO^)S|Yo1HOnM6zux3L9Wqedz7tYnon-NUKZHCey{A>#6T12Qa&x9j?rkwr5d! zeH`LB$hW9Y^~z2#>y{5FaQE;x#V@yqFrS>|32Lye!$7g;aR!dm)CzrVanDy+Ceu!O zdd+RB!{OiDw?h5XKLAhs=QLxNL_hD=>A-5~2R`@Hk3-lXWxNjV`wV9D3z96)we4A; zSuZr!y*I*-=1}FZ0}E0pi-jig3CO1E?5&KSM_6+yf)uXeJUw84-Tr%W;kR7Yfj7OX z9Fb%TwYF;&j4wa9wqSvl#L9C1R7sWMYFlsmiy8KQ7Ce(7c-`dp}nHp3w-{X}mg#-!700 ze9S*nKA(O37&CFOkHFRq=`17JRD*Q+AxgAs+!dWKWWC)CVwnt;$WL!LDh{-bp%5^! z$xN&6Bn}g}52L_1)|iw-FyRnj{ir?Pcn@dW2yU?N^p+-nB(b*OcO8VJt!Y@3-~v44 zH|6obC}uYd&vrc_FTMYR;Hj89ora$^sQ<13wy+$~EW@~BUi$xn2OQ#6y}y;{U#29^ z^Iomxx4i}k&!+C2vY-njp2o$s($G?dVi|Z6`Nm z^FhqC#c<~6A7?v(~&;;PAOiw+YFbD|3nXF%nG#s^V}_ob1d@D_+qT9@PZZSm~$tb_u~bSlTs(QOEB9kI1?Z5waziL+^yGy6-p)#MkD}DGF`a)0 zc34Z|6AVs~+SSYMaQ+?wMSWOPGyChe;H0|cJnm~vU~XjR-C)EyG^5kI216NKHsO0<{fEFvcUXXS5(2kf-A4JlTkHp08w76jU{QRdwJqYEs`*t?eB z2Pd@uT1mj^OKU+!js1`}c{yC^f)@Z_e=G!?)4N>c#KWl%P8wkQheJ42%X7F(*%;e? zupDNqpbMNPOY2|hfaAUvOGi~S|IEr#W%U1iB*X7{bXa1Jvo2MQ*buS?akbE^kT|@{ z=AU?|caV+M^!xCNm8>1bEV#H(`F)O2`lUw11P@Ol@7&}Ds2ia&AIc==WgNtJxF5Z@ z9>o6{nKU?KTL+)fG(Swh8Zwm^cp%DKyfS~t#7bWs+yPbhaH@_6q>J_AYSg;bSSj?Q z7P-Hn4IxFPag$_6e}Bb$By)s(!Gv?3!Rm$s*JMAYt z-k0%z5HnpBG`5O;u@-62i)uwI6mducq`FrS6UgW>zT-kTI`%P!@);c1iOhKzw6Ps~ z2h;)$j4Q_<`bTR=I6ErPJ_iQVc>f>{0j^7X!%aRY>yFwbHZAFN((5~i9Rw?<*HKN; zDB*zLH2G-uk_Qp_e9`G4rcMz$qE^{IMzcxIbl;=1-s+rydI+g1Ucp_}76N5+Z{%q= z6*dw~rN_o=kwW-(y;&Z0T(w0>9Z;xp$}d|4U3QRLWJ2S$+4%mUkTX_|dJEFW*-{Y4 zK_r$sQpUcjV0e=MzrB|KgTTm1)o>#J%mKc=1bCXu%@u0^#Uy#O4 zZL}`{C{ZP2?jXzGig%ovK3x!?+~Gfqok#ORqZ1h;8wm8IexSec7#|NeJ{cQcb(^@$~ew*CzbUt!0 z3IHWa7SzQnXUM6}6zQe9apq*Iix)YglbqcQ1$plXPbdXc+rll6bH2Yki#|*6(LcMj zyqtJ6yRqd`hn=%_=T{r}uFkRQNgtW?W`bi(%g zNWJ=I4dZep)(lp29!BQW1oj_2jH_o|t9gCuuRfh|V#Rhk&&?fyPq7r{DlDJ6ndn!RAjY&||LbTSZ+lWfh4 z-kG&Or9n*@Z}}2@X+MvJcY7|T@W3>+-#=vyNka`>)T$OCK5~6^m2aDY$S(f}fu`ET z6v|I_70vtOfq*0_uh_*vMca<|!oazPzp84!95LjQcjYH0F?7b88Co=vMjC#a!{p&l zN2{N0Buj?4WKy$~$h7X37}Tt7N9GBg{{J6Y31+q{EsvBeN!Q4~xhAEZBF*9XW(pLD z#ecoHH4fRpN3=KNt>Gigtyxh>vCeEWyjXhlN?amd(bv|!z>Ot8!7b2G0Q8eWH9M-{ zigx{Wv}f1Q!#qvT#YlxtIuJRT$+LN1{=X&5-dyMjW4k=eZMZJ4a{{Gwwnd z!WDet@`8_&1C~-vzg;kFwF^qUW=wf@9Fk1O{exII0&1KZveUd%hv->5#Mft%m;xnBQOtHvs+qrewaxSs*5BT(r=pP! zdoj@-tF6{YE!mKVsd;Q_rs9fFSMR-l2qd}K7Re{G+0Vu`s?wg-VQZT9oaX-Kyhp>Y z8hO+hjRxi4Ehb1nj9K@sBsL`~1h0`pEzTcQootEgccIS!pr&*i*EFU*1jH$o35%Py z+`-j<={9y8cCpGR#Y=Yj1*Pt$p@DzwQl0%`$kp96h3A{?wKbg<+uB9(p`X0+DpsrO zYQfis>BkOQ|LH0pGKe4YO5B|OlG4+MqNWAX>>y5Q0p;KY8)dfO*L*A2xX$MK1ve9w z^QdKOAw=1J7@fXEmapu1dHFj0*~F(Kh#g!PWrD5&57AsV&+xa|ZzvzmZk%hgzl#92 zdrC&XCZ(3vd*J-lOFWDMeVA5n=4-+OvZW!|eRFz7TEc73d@6GzOX|(r%B`t{UkqNJ zg_=DSAB0;@#NrCJpKLAmyNvXgUjLRQmsXL+fU~@StzYA}X4nE9N}aL}YW=-fRYhQaGqX8% zYhO|jPa0G{CE3?Yt5iP4v0c1(R4DF_$+>H97h>Wf0vc-A(PLhaDd12zm3ZhOky15H zx<4gE4wmKVXP$LR8d6bJCH3SP>>S1$xY_;8_RzWK7QaCo<3-RwZZK4WxGb#$#Rhq- z*}c%rqdO4^OAkaRP1u$8(H)(Cw-pE~Q4=q3V48sBX?zp;^!E>3r2+`9@3=mFTuoN| z59Z#oDbBF%)`So=5E9(o-QC@t#@*fB-QC^Y-6gm+jXNR18`lst(|f-&KVbIr)YMe< z_pZLHue#53U27dnOS0r>z`aYYgAbUhw&p{%jpvi>Bt}65nDSNKpv*4MnBl4WEMd@l zFmYEe_`a7%YM^r7`z0LF8#zPclDd9TR@Jc7omW;piLi}qRyY0i4AY4oos)MBCU5e= zPGQ%U?VF41*;{t{!XK{8_%Jg76w5huoT7hI!()E9rv|@vP(omVi`)DDBJj^h#e6a% z&V4CILq)nvbB0MTbGXHNnJ{$6nE_?ncelja)IY38*YegR%%a&WPaqsAu7MP;UrbjG zp7Lo1;eWj2!`kK>8_rR|fgE7q*H)GMB( z=+CU_P{xXNIrS0vL&V0N7gz?hojY$Hui(C1bfFV@ z>A6U7#t0c5rkRlPs)l~AbM304J`2@iprfTn>wA@KjJD%#WlWEvs>D!a7A`NzR(8l| zQx3wejXWC~2?a0*3D+I+oAvztXlXZ-%+nuoFJLLX;PV8Xj?lFG4u9fl&dCePLj{jB zqDlQ&V*l_LoYbg)hh!!1|2}t6yc)R9MufC4#N0e_G;;zme_J0PXQF29tvNcr2Lzme z__*Nti@ZdG74%tGP3k$E=O{({gWbE}5yCm7<(=KUxV_j9#h#xu2;)4PJU|f7u0%7H zZj|mb=158*fkA7LZau@j$Km)=CZmFD^ik16Hp^USsmx+?_;U|zmN13sSlmDq4~|Si z=B0oCw4P}svYkLPRcQlmj)1c#F4>7SoOW=%*|8eJ(zd(VC-)!Sb1~_ETg)ByP;ph? zQzD1B&z=|p0}gyQej7DttDnhh!#60h$*biJ5}V?Hma~h>j0cEfmqsOJ8Jj-`x|9Bn zZR96}l|y4U)JUgl#oZV$Nz$Gb>xh(*r3-E}MeR|T9e;kZU9k&L_fT2fvanKUYYiESZgYKwUWQ)-Mx7f0EXdT$>wa%(~IHKx4|mtL0)*FGE>D2rjzDs!Lx9J80xz%}4g z&$Jb&*QwV2mGpygD^9z))j(LfH`rHuA`deAZh zF!i}|wl1-LRJ~2WA);6R&K2I`i&2jCgB9Nm@wpdxhf>;3E)MzKkVQ2nGm5ypzK~g7 zKfcl?b6e#lG^S20eSz0o-nAjN2S-L~kzEw>Tvxw-W^fnz*v4ab5ABbL79S8~!ZgT6 zDeU;D1daWAl!7hFk%zny)295CN@(p1BFAhK{CXQ&&MK!p#nz@55Os<)Pb!t~K?j{@ zVK?VdR}$=91UGf101*_!7R>6D`&{87qyAT$zVIMbo2$IDpV@sc*)Uc-RyG>DG~H~n zv)uz80V>S2E2ELJo)yu3qyd>jEaSB%93ud!0kf{gsU_S*cUcyM>kTyqnv5W$K;J)2 z#(z-Cw*8Cj${@~Ry}059ZSA6(35%pByr*gAbbgqEIwGZ7!>io-e^4}HaemF*&<8Dr z@MIFsbHbTy^>=v}f#bkV^&7?scqzuq1Kv-)a6v}u?6E&gdnth_OkNe4zbX6fv)mD& zfU?-ow?}7UV(wT*?en?K)GH9Wy(=p!e0BMI05vG`*P$i!SGR=ws}#S519Qk;`Bmq1 z)~vSnY7?x$pKu5JB``*;bqa%Dp1zbB-%`qCw4COwd%Uzb&*r76-8mI0F`9lkM~MQJ zmfENa>c^^ZvB4MbANw~1z@LCfuP7Uc-M%Z@0!9V9qSXaOnvgaU%cJCeUrOv&a`13t zs^2>T4prcj=DDr$Q!_H$lHE5mo-NR)ruKJLW-$a#%0@%Y*OUF-Drh!ivv~x*cJ(E= zQuBHJ-t=1QH4;#d16@+Ve(|_IVJO)|3YY(Z!TRyQoK_k3-(4pzn`O}f=|=E;n8;#i z=F0tlGNvaAyL-L|ad}x0wvpTo*?3?E;-`4ym5f~denoMz4Zt-iQ8h+GYgl*3HqWb= z`a+7!ux!%x(qIfgSe75&OsuA`L?;dx+}RHhY7?G%NEPGR^I5!P-1At*(aGOspCtjS8REcK;;!obedhLfG8PLoj0LSgz= z6JP3KFr`hISZ2`nj9xemAEdo9PgiQ6Y74i5ZI3Rml8tAlj8kUL(I#m_lc-0^z<2e9 zBv>Z?W4J&-fh>&z{tvXj33?2n&}m(G<9H&++j>|Kly!IQlb%;SGv4&b=84D4%|KD} zt{JHMieO!V1Jpt`LkyST*@CZwx@9-&KO9$W{46r505lWM6gUY>`MLZ`+2}#BM1JUj zs&x8yC>{QqWBPSzcpMI&`0076led_Ed~T1&3|CW+50h2i0QpgYA64jT8DI3pdPi+> z*6|mI8@AB*cAi%cEAD;m@8MQXTuctH#S8HC>{;*61K{cY=yC2({N|2egn3buI`s53Pa~6l2OFPC z0f68Kdy_-3vd)B}-)7EaMK`acj>qSAp>=<-)Qyy%*;}l1yt`j@x+U z|ac6QH?)gueti2jIgWhf{;tDOB^GFt6R zPkHpg$n1*c2bIgiSJfC;(0u+ZcLX}wRsO@T&lK`@c5T-C>?Rf1_0yD;JjaH^N1ZliD96$bmsu?$ zZusPHRCky~!NeCGa%v~uluNhe%GOjq$Xs=5p2$z%@q z6g)UaQxw@z3D`|1N*5g}y)bI9ulhc>{Hegei}Q=9>-eAJlh^UGyvqpr0unUV6A2qV zd71+gx>0u{gxMykKp4A~UU^Hh6GBbO3$xjunF}I@VJs%sg)H$7eq;_kLNflRc%zjs zv&tk7_JOKzAC-K(ont*t(I!}2@L?*$0W4^}a;a7Soq!h3@LDeCKTajz*Mq33ANdRhb0k~t#Z3LkpM>pOm_A#%Sne~(w}V4i zA4fH{Xz0v2tw=u-bDefgAc-n$!y)6;yAoAR8cqwZPlLTnR%z~(j`!uI2sMO@8jfd+ zifZC2o0m$%+lX=_N{$&n1LxZ@q+(aGmA)DfU-=!o()UykBmu-Ga@=@F5;NWoL3SvZ zl@6~@6h%r(|7ROf_Rt#si)EC15H_%uA%b@1!%?%lWqo#;!4(i#(q% zk`H7plm3Gc4I?EEF-85KFGBtS|MC73_@K`Q1hF9puKKy7myG zwOUIzigO6>rLUFfb97OBx&wLKg3hChGOQmUhLZ}6~c zwep+ZUbj*^$B}W?e2f((b=ldxe_gOi&MzRhKx7_PMyEuX%p$$PDI zlw~iwvD%LnCwBf)I5@{;;KPZs^nO3us4ynFNbG21jm>PI>&4O<@nMt#z)-}27fofXf zMVqC88K{NS&Dux*pm++^ITnoLzFOm|lokF_o{IwYO81bubGp1D?mP+~HzbzK2Y0mC za(nIAx?rk)qp2t_HvaN6{*EEXZVAU0ufq{Y141s{*Z+Z!bL5Tql?4th=p5opKA#*^ zIUib_pFeM%Vt1IC%;@e1t|NW^JSNFDKWriX{Trj z6X|T?`=@@g>OGv{CCy#qFDaOKsj@7@=s_dVrZuPM*6s9^cUG$&YlWTC-=#N746uc) z59SzO4dMd-T(nz3`+miq$KccO&5X~$&nMaK*$WZA7GH6IIp9;3e)mCGD_%Fx@-MxfNOMSCoZq(Sfg=lAs=H&zczz!T-w7r2<}-; z^Ifg!yQ$Pz9*!(Y3rGsM#6Gm9Gz{)2Z`Ap1C->0W&_|Sjl(0;Qwr9--@)1l@-jZ9$ z$4)76viPZ|{g_MEY4WM2m_osQxbW2EAtyTZNhTrQCNg!EWZIiSsLe-7iX9m9wz7t` zgh#r6ILn|Y2qDp1thklTL}=AsJbJM{DCMk0hCQ$D*3)UXs*cxXhU3jB0v{i1;|g^d zwpesDeW)6->Z|b~j+6(*9Y2VON`|{@^`Hkb($!EFT}<@iJ--{m)#r1a(j%1Z5ReQ4 zrHui-5{y@`nD=(XEYk9pw8C1Hm8rPWzgNe6B9jmn;kWF1tFU$J?ah7cAPf@0CFK2C zs@ZbEB~?-0XkAB+m=GY0^2s>7C5L50ky>m83TY~=@MgA@K_L7(iO;hKk2iop$$iXm!j}1)Ba_zg1@2644XZ(+N7(Fcb#lfKHYHrA5_eX*r+e(CjH7} zi&N4q*IM_ZLOQp+&o|-Pa?R#}?u|pJwY9S6`6^J6P|v;c!GFhl6E@V~fnWhz77A{( zX-9^05ORS|GB6DN;&>@iR4>;-dHE=4W6TlIGqyzeJ0cQ8^7kU^u+)I?{=vj@EfJr` z@Y73g(SbxjAv^6{;J4#11)xKBDHnjx_hj<=Ax|(g^_dyx{&jK^A0%(7oY`WOkIFZf z{_t>{cFT|a`{(*q=(P(^9J6*_6B>Y{LywP-1``x2vP-wzDA+?1p zTQV!Guzia3_(T{XaB_01{;ON5;4bGiSK_XsQF)^Ffl)Z*<}Hmi4c1U$ z!LgAaQH8(M+mqhn74zp$hC?SxvzL&`xORCTUw6}Bvu>>I=>!h-bDi1XBaR*?uuwt! zOU({@M+wDedknQKdcH?imd}(NNK2in%R_QYWOTz24^6Sy-zE!%jDJu=gDzqcRmlwI zDP(OGbGt-?XNl{6x>sAoNsSHA4MJ_r!-0jW0`ErhXWpy19aV0ze%0tdufGOz%_LyU zz4h8tPGTc?tXcNw<)Zn4{(`l^3G|K$Kcm2~p?%(WsHbp{+_%ciW%9$i82}xwb_no# zj`)TP017-5A)(-RI=_u~Yt1{PNou4@lgi3}=AkR5nqFN?sAs*0R($vel{8Vlz%TZq z8w;zn7REL5!8X!ITsK2&f%tKRwQ@X9|Bj}Yu2Uh=R5isHq9oEWr8eV6iyIN%625Bn zpzp)`f)kRdj~&D^Z7Iniv38z?&8EkYTD?32k=FRDUSOLV{y{PO@m1J>;RBO;>}GIv zXT#>XIbFXC)gI4uX0>OsSak4CjG|EXVd0~(If{rY>29$_CUDS)1r9uGn}?4q=}D@t zQ>{BqFfa5@aN4MnBi7}3C+%sgrb67^!rE0h4psdz?7FCu(*zb)q=_L5CWt6_-su%n zTV98~wRAdcchSlQM(K^H$aa)o_-i=6c&EMZqDLs>$aq;ytJpuynQenv=+F z4|ppL^?BGmYgT0S*xzFfX-+s01II`&Cax9vK0P1q=2#hnDHlFwc%Ps2g7N^LDpco- zvcMMsg!G9r23o5#`j<*{eZX7t2fm>_(?kXBm<5JXSkMn#|2FS7NH7g0^y`>D2E2|P zs@#nrtN(^C%7^y`p`O0yjl&n+c06hy7-J0M9!;QHM4--#eYmu)(Qi&^MhrB89zm%~y0|_ynY` zr)I|Y!a{IBZB#VZ+M_b_d)=J?&1ARq#RmZ=e9Wxv zEp>?SA<$RAn*3yaQHIF!9Txm`;GLw0%B^j8q1XGntyKZj?9Y&jmAraO1~0hA3gX2; z?Z>GoB&&intlvr;17I?9dzi8%%%n34f`fP<-~H32&JH(NFnR8o5#Zv7)pjy5S6(73m@EY| z83ryusB}UXH+Ztu4r|(K<+y;+|M_9y?V~CAGV$c#WnwV_%fa=1$$ccQ8N4lAhETeA z4u!BkV(IW^` zY6}?!>GbqHK0X!koo*0Z1?<8>vpP>|Mm8^wvSh&BK`-qPkbPSuWc&f#+1&x9d^y=w z@nqZ@SQk)y`HnW6V@qgvsD&iu?czBTVB6dVTu;N6)9zrMA#adv!Z4&rb>GW)XoMCdxI8#zY+)(~NSCe*>b;gq2JK6G9(+ z>E%%{DLRM0KQBZ@(sf_BW75a~ebiKPr>xAdA_dJDk=AfYDQZ9UL<=3UGh>7QBirh` z`F~+b&wieG`jo}&HhIiwn$!ylD>C~gq|&=K?|iO{m*4 zpX?D2P|^Je__2xS-g-nV^_(rc=j2`#BpuzX7qCnC;ea<0Ojv~^)U(kayeqcI{ID|JQl3d_D3|Y< zXDOPHm|5%VN%i}4>wO{W-`jR=l-&GCj9ZFpLoTU608wr3$pT#PZTMbR4K#YtWCvUDVpa95NH@bcI;Lmp(3NrIDNG((5<5r_X5Xm zCYYoS;FH!=gU`=Q>vZi{2-w5Etan%n3SW>~onG~r^==Xd@$={9UNVKW=f7}RM5c)V z3J};DdKvK&j+^(>$^u zf&7pxW%9i3zU;MfTD2@tRAp-E4L4KPZWf*eNn}==$&a;JN1L%5^lHjc0_G#qIV3Clr&0{4rj`?A6 zTB)3`*_?bPD7TkI7s1<=acj{VLk}0h$Eyj@{hQA+mmC6SsNad zb;&pDlk-p4eZ4Jz1FX2J7f>Ko7P{C@s43fe9X>@jSIo7vt3F+U%k|4Zs|MGRyGBGt z&X=!g;QEvM318*BZSZZpM^7ljGLvJUyYy$y!4j(2+d2RLP9XAx`CD$Uyu7P%nv1cJ zf*S+)$E=)&uuu82$N6eK%hvv!9AJ{wtYuYRZNo}T^ub8{1i-o#-gI}*M`+an#1sfI zVdne?b%jY}a%#tEJHf%b`uvy^I7ULTR#X;1(jMB5OT&r$%%E zn=UF2KqnmWahQz&dKT`fC7>!!{-|pPu_{amY5+)*aUTfp!e)hch(G=V;L% z*uw&vi zs1l=ybS{Q@iv)Z6~ld7hWNeyD|g>jafm#2t5i}0kX)s@(!i_pYTG}kR=ZJ4 z?cYWJpuCa_E&f4mzYH$stbpCZ{lf~MK!Mu+En9{T)~;6cY5YRgg|VpY1E+EpQ_@3qv+TQz*(jO&&Vla@Xeq~OTUA&q zXY6+%YhaapkaC{bP5YSb;e+k5W}P5xN_llkc^YR;cms-QI*>9UoP#ElZhgqE4?=sU zzdpalT!_J{_i}TW7a=0A#4q;C6_LQ>Zz_`C1D!p8-M9)Au6Mv$v|MN2rBUJ<8GP|9odPKC@)Qk}|SPb%anY5|(YX(78dnTJCox9BtK z8X}Wm{P9HCA;>etYE;9vI3a$@w#T>#yeJ3o;4qY-Q#TvgkGRiV;^#0|dC<(W48}7q zVS8PiiUM`h;&xbPc!B&llhpUJRca$4;=#N|&-W+GZwt@lHUFWu=!CUnyE6{S&t`SB zI(m9f3uaJEht)p*kGLo~tk>?bc#TP|XAXw5>6GixD=0B$)RFw(;-dBcBQ6H<7{n)M z={yc8uWJtV4jmi{g?6Vcu`Uj6>T=dJY%q|nKY%l?`~=hLWV&74&r_~^Ui*+)H?Mqx zxNrZo?U1fuB%2{VZwAxf5ef?*GAHFMqzC(tyTTS2d9kD)%%q<=`roRm!nE;fCIlU> zv71-0|E|CBnzJJsxk79pdu$4l0*xcqppR0t;DWH(-+W@rg8p-qLY_}ZTunWz?qOJo zA9DL=7ync1o}BVg-BDy}2$XQ#?(UxL2jR2j%vXylK!IOPU*5b}e>==_ML^CWY~ewM zT5=5nqcPW^1ui4ld__^Yu(wm@A0Y+Hm)L3b8)FolA)=L z1RR&_ER^N9W@5O4cu3gM=CsdGfC5!lT2F40CvQKIf@+05nvHh2jTXiXq(u{}oJPyW z;-G5W>JObqI%IaJ>Ku0g)tsyUeJ)r@uTB5wTN^zx;1= z{!AfZIChCw5v-+bN(5&XuJ5|VHCyNe>j7>pOeJx5`+Fz5gn4Fw*qU%ksPnsm{X-3c#0CDh@jOaY}DE0!yWo zEl6HOzNSO&WQ7^@Qq;;975O5yc3##%pJ||!m6MzMBhRdS?J>j7NC!y!B&L~O$;WPu z+gE{$uCJXez5jzC@<)%!C+Q(umL&Q{35HtR;-fvX)uX0*UxVD9KH)0(pbH>H{Ar77 zk+@FZhoCMXEVDbV)>fWS43h=uk)}Vqa`{

G>7lyKDWe70ef4d_=0s$)>$nDY`8! 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⁢;7(*B95wfF2oC>JQCwR3-H^64rD|%E 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%0DjgT`MgbaRu<;(uL$& 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¥xOOy}k?hywOM`%qy- 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 z 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 - convert2DHistogramTo1DHistogram (const std::vector > &histogram_2D); /** \brief sign disambiguation * \param[in] projected_view pointer to a point cloud. @@ -229,27 +222,20 @@ namespace pcl * \param[in] largest_side largest side of object bounding box. * \param[in] number_of_bins number of bins along one dimension. * \param[in] sign either 1 or -1. - * \return histogram a 2D vector of unsigned int. + * \return histogram i.e. eigen array (float). */ - std::vector > - create2DHistogramFromProjection (const PointCloudInPtr &projected_view, - const float largest_side, - const int8_t axis_a, - const int8_t axis_b) const; + Eigen::Array + createNormalizedHistogramFromProjection (const PointCloudInPtr &projected_view, + const float largest_side, + const int8_t axis_a, + const int8_t axis_b) const; - /** \brief normalizing a 1D histogram - * \param[in] histogram 1D histogram (int). - * \param[out] normalized_histogram the resultant normalized_histogram (float). - */ - static void - normalizeHistogram (const std::vector &histogram, std::vector &normalized_histogram); - /** \brief compute viewpoint entropy used for concatenating projections * \param[in] normalized_histogram normalized_histogram (float). * \return the resultant view entropy. */ float - viewpointEntropy (const std::vector &normalized_histogram); + viewpointEntropy (const Eigen::Array &normalized_histogram); /** \brief find max view point entropy used for concatenating projections * \param[in] view_point_entropy a vector of float contains three view entropies. @@ -263,20 +249,19 @@ namespace pcl * \return variance the resultant variance. */ float - varianceOfHistogram (const std::vector &histogram); + varianceOfHistogram (const Eigen::Array &histogram); /** \brief concatinating three orthographic projections * three histograms are obtained for the projections; afterwards, two statistic features including entropy and variance have been calculated for each distribution vector; * the histograms are consequently concatenated together using entropy and variance features, to form a single description for the given object. The ordering of the three * histograms is first by decreasing values of entropy. Afterwards the second and third vectors are sorted again by increasing values of variance. * \param[in] maximum_entropy_index index of orthographic projection that has maximum entropy. - * \param[in] normalized_projected_views a vector of vector of float contains three normalized histogram of projected views - * \param[out] name_of_sorted_projected_plane an string represents the order of concatenating projections. - * \return the resultant GOOD description (i.e. sorted_normalized_projected_views a vector of float representing the GOOD description for a set of points given by setInputCloud()) + * \param[in] normalized_projected_views a vector of eigen array of float contains three normalized histogram of projected views. + * \return the resultant GOOD description (i.e. eigen array of float). */ - std::vector + Eigen::Array objectViewHistogram (const size_t maximum_entropy_index, - const std::vector > &normalized_projected_views); + const std::vector > &normalized_projected_views); /** \brief compute largest side of the computed boundingbox i.e. bbox_dimensions_ * \return the resultant largest side. diff --git a/features/include/pcl/features/impl/good.hpp b/features/include/pcl/features/impl/good.hpp index 24a200c13e5..c7ab51b48c4 100644 --- a/features/include/pcl/features/impl/good.hpp +++ b/features/include/pcl/features/impl/good.hpp @@ -56,17 +56,6 @@ pcl::GOODEstimation::projectPointCloudToPlane (const PointCloudI projection.filter (pc_out); } -////////////////////////////////////////////////////////////////////////////////////////////// -template std::vector -pcl::GOODEstimation::convert2DHistogramTo1DHistogram (const std::vector > &histogram_2D) -{ - std::vector histogram (BinN * BinN); - for (size_t i = 0, j = 0; i < BinN; ++i, j += BinN) - std::copy (histogram_2D[i].begin (), histogram_2D[i].end (), &histogram[j]); - - return histogram; -} - ////////////////////////////////////////////////////////////////////////////////////////////// template int8_t pcl::GOODEstimation::signDisambiguation ( const PointCloudIn &projected_view, const int8_t axis) const @@ -77,9 +66,9 @@ pcl::GOODEstimation::signDisambiguation ( const PointCloudIn &pr for (size_t i = 0; i < projected_view.size (); ++i) { - if (projected_view.at(i).data[axis] > threshold_) + if (projected_view.at (i).data[axis] > threshold_) ++positive; - else if (projected_view.at(i).data[axis] < -threshold_) + else if (projected_view.at (i).data[axis] < -threshold_) ++negative; } const int8_t sign = ((int) (negative - positive) >= (int) threshold_overall)? -1 : 1; @@ -87,63 +76,48 @@ pcl::GOODEstimation::signDisambiguation ( const PointCloudIn &pr } ////////////////////////////////////////////////////////////////////////////////////////////// -template std::vector > -pcl::GOODEstimation::create2DHistogramFromProjection (const PointCloudInPtr &projected_view, - const float largest_side, - const int8_t axis_a, - const int8_t axis_b) const +template Eigen::Array +pcl::GOODEstimation::createNormalizedHistogramFromProjection (const PointCloudInPtr &projected_view, + const float largest_side, + const int8_t axis_a, + const int8_t axis_b) const { - std::vector > histogram (BinN, std::vector (BinN)); + Eigen::Array histogram = Eigen::Array::Zero(); const float half = .5f * largest_side; const float interval = largest_side / (float) BinN; for (size_t i = 0; i < projected_view->size (); ++i) { - const float a = sign_ * projected_view->at (i).data[axis_a] + half; - const float b = ((axis_b == Y)? sign_ : 1) * projected_view->at (i).data[axis_b] + half; + const float a = ((axis_a == Y)? sign_ : 1) * projected_view->at (i).data[axis_a] + half; + const float b = sign_ * projected_view->at (i).data[axis_b] + half; - const int idx_o = (int) trunc (a / interval); //outer index - const int idx_i = (int) trunc (b / interval); //inner index + const int idx_i = (int) trunc (a / interval); //inner index + const int idx_o = (int) trunc (b / interval); //outer index if ((idx_o < BinN) && (idx_i < BinN) && (idx_o >= 0) && (idx_i >= 0)) - ++histogram[idx_o][idx_i]; - } - return (histogram); -} - -////////////////////////////////////////////////////////////////////////////////////////////// -template void -pcl::GOODEstimation::normalizeHistogram (const std::vector &histogram, std::vector &normalized_histogram) -{ - ///compute sumation of all histogram's bins. - float sum_all_bins = std::accumulate (histogram.begin (), histogram.end (), 0); - - if (sum_all_bins != 0) - { - size_t idx = 0; - for(std::vector::const_iterator it = histogram.begin (); it != histogram.end (); ++it) - { - normalized_histogram.at (idx) = (*it / sum_all_bins); - idx++; - } + histogram(idx_o , idx_i) += 1; } + + histogram /= histogram.sum(); // normalizing histogram + Eigen::Map normalized_1D_histogram (histogram.data (), histogram.size ()); // convert 2D Histogram to 1D Histogram + return (normalized_1D_histogram); } ////////////////////////////////////////////////////////////////////////////////////////////// template float -pcl::GOODEstimation::viewpointEntropy (const std::vector &normalized_histogram) +pcl::GOODEstimation::viewpointEntropy (const Eigen::Array &normalized_histogram) { ///NOTE: http://stats.stackexchange.com/questions/66108/why-is-entropy-maximised-when-the-probability-distribution-is-uniform float entropy = 0; - for(std::vector::const_iterator it = normalized_histogram.begin (); it != normalized_histogram.end (); ++it) + for (size_t i = 0; i < normalized_histogram.rows (); ++i) { - if (*it > 0) + if (normalized_histogram [i] > 0) { - entropy += *it * log2 (*it); + entropy += normalized_histogram [i] * log2 (normalized_histogram [i]); } - } + } return (-entropy); } @@ -157,42 +131,28 @@ pcl::GOODEstimation::findMaxViewPointEntropy (const std::vector< ////////////////////////////////////////////////////////////////////////////////////////////// template float -pcl::GOODEstimation::varianceOfHistogram (const std::vector &histogram) +pcl::GOODEstimation::varianceOfHistogram (const Eigen::Array &histogram) { ///NOTE: https://people.richland.edu/james/lecture/m170/ch06-prb.html - ///NOTE: http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm - - float mean = 0; + ///NOTE: http://www.stat.yale.edu/Courses/1997-98/101/rvmnvar.htm + float mean = histogram.mean (); float variance = 0; - for (size_t i = 0; i < histogram.size (); i++) - { - mean += (i+1) * histogram.at(i); - } - - for (size_t i = 0; i < histogram.size (); i++) + for (size_t i = 0; i < histogram.rows (); i++) { const float tmp = (i+1) - mean; - variance += tmp * tmp * histogram.at (i); + variance += tmp * tmp * histogram [i]; } - return (variance); } - - ////////////////////////////////////////////////////////////////////////////////////////////// -template std::vector +template Eigen::Array pcl::GOODEstimation::objectViewHistogram (const size_t maximum_entropy_index, - const std::vector > &normalized_projected_views) + const std::vector > /*std::vector >*/ &normalized_projected_views) { float variance1 = 0; float variance2 = 0; - - std::vector sorted_normalized_projected_views (3 * BinN * BinN); - std::copy (normalized_projected_views.at (maximum_entropy_index).begin (), - normalized_projected_views.at (maximum_entropy_index).end (), - sorted_normalized_projected_views.begin ()); - + Eigen::Array sorted_normalized_projected_views = Eigen::Array::Zero(); order_of_projected_plane_[0] = (Projection) maximum_entropy_index; switch (maximum_entropy_index) @@ -205,15 +165,13 @@ pcl::GOODEstimation::objectViewHistogram (const size_t maximum_e { order_of_projected_plane_[1] = XoZ; order_of_projected_plane_[2] = XoY; - std::copy (normalized_projected_views.at(1).begin (), normalized_projected_views.at(1).end (), &sorted_normalized_projected_views.at (BinN * BinN)); - std::copy (normalized_projected_views.at(2).begin (), normalized_projected_views.at(2).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); + sorted_normalized_projected_views << normalized_projected_views.at (maximum_entropy_index), normalized_projected_views.at (1), normalized_projected_views.at (2); } else { order_of_projected_plane_[1] = XoY; order_of_projected_plane_[2] = XoZ; - std::copy (normalized_projected_views.at (2).begin (), normalized_projected_views.at (2).end (), &sorted_normalized_projected_views.at (BinN * BinN)); - std::copy (normalized_projected_views.at (1).begin (), normalized_projected_views.at (1).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); + sorted_normalized_projected_views << normalized_projected_views.at (maximum_entropy_index), normalized_projected_views.at (2), normalized_projected_views.at (1); } break; @@ -225,15 +183,13 @@ pcl::GOODEstimation::objectViewHistogram (const size_t maximum_e { order_of_projected_plane_[1] = YoZ; order_of_projected_plane_[2] = XoY; - std::copy (normalized_projected_views.at (0).begin (), normalized_projected_views.at (0).end (), &sorted_normalized_projected_views.at (BinN * BinN)); - std::copy (normalized_projected_views.at (2).begin (), normalized_projected_views.at (2).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); + sorted_normalized_projected_views << normalized_projected_views.at (maximum_entropy_index), normalized_projected_views.at (0), normalized_projected_views.at (2); } else { order_of_projected_plane_[1] = XoY; order_of_projected_plane_[2] = YoZ; - std::copy (normalized_projected_views.at (2).begin (), normalized_projected_views.at (2).end (), &sorted_normalized_projected_views.at (BinN * BinN)); - std::copy (normalized_projected_views.at (0).begin (), normalized_projected_views.at (0).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); + sorted_normalized_projected_views << normalized_projected_views.at (maximum_entropy_index), normalized_projected_views.at (2), normalized_projected_views.at (0); } break; @@ -245,30 +201,26 @@ pcl::GOODEstimation::objectViewHistogram (const size_t maximum_e { order_of_projected_plane_[1] = YoZ; order_of_projected_plane_[2] = XoZ; - std::copy (normalized_projected_views.at (0).begin (), normalized_projected_views.at (0).end (), &sorted_normalized_projected_views.at (BinN * BinN)); - std::copy (normalized_projected_views.at (1).begin (), normalized_projected_views.at (1).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); + sorted_normalized_projected_views << normalized_projected_views.at (maximum_entropy_index), normalized_projected_views.at (0), normalized_projected_views.at (1); } else { order_of_projected_plane_[1] = XoZ; order_of_projected_plane_[2] = YoZ; - std::copy (normalized_projected_views.at (1).begin (), normalized_projected_views.at (1).end (), &sorted_normalized_projected_views.at (BinN * BinN)); - std::copy (normalized_projected_views.at (0).begin (), normalized_projected_views.at (0).end (), &sorted_normalized_projected_views.at (2 * BinN * BinN)); + sorted_normalized_projected_views << normalized_projected_views.at (maximum_entropy_index), normalized_projected_views.at (1), normalized_projected_views.at (0); } break; default: break; - } + } return (sorted_normalized_projected_views); } ////////////////////////////////////////////////////////////////////////////////////////////// template void pcl::GOODEstimation::computeFeature (PointCloudOut &output ) -{ - float largest_side = 0; - std::vector view_point_entropy (3); +{ PointCloudInPtr initial_cloud_projection_along_x_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud PointCloudInPtr initial_cloud_projection_along_y_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud PointCloudInPtr initial_cloud_projection_along_z_axis (new pcl::PointCloud);//Declare a boost share ptr to the pointCloud @@ -288,7 +240,7 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) Eigen::Matrix3f eigen_vectors = eigen_solver.eigenvectors(); eigen_vectors.col(2) = eigen_vectors.col(0).cross(eigen_vectors.col(1)); - ///sorting eigen vectors based on eigen values + /// sorting eigen vectors based on eigen values eigen_vectors.col(0) = eigen_vectors.col(2); eigen_vectors.col(2) = eigen_vectors.col(0).cross (eigen_vectors.col(1)); @@ -359,7 +311,7 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) Eigen::Vector4f bbox_dimensions; getAxisAlignedBoundingBox(*transformed_point_cloud_, center, bbox_dimensions); bbox_dimensions_ = bbox_dimensions; - largest_side = computeLargestSideOfBoundingBox (); + float largest_side = computeLargestSideOfBoundingBox (); /* _________________________ | | @@ -376,65 +328,39 @@ pcl::GOODEstimation::computeFeature (PointCloudOut &output ) | compute histograms of projection of the given object | |_________________________________________________________| */ - ///initialize vectors - std::vector complete_object_histogram (3 * BinN * BinN); - std::vector complete_object_histogram_normalized (3 * BinN * BinN); ///each projection view is normalized sepreatly - std::vector > XOY_histogram (BinN, std::vector (BinN)); - std::vector > XOZ_histogram (BinN, std::vector (BinN)); - std::vector > YOZ_histogram (BinN, std::vector (BinN)); - std::vector > normalized_projected_views (3, std::vector (BinN * BinN)); - - ///YOZ Projection - std::vector histogramYOZ1D (BinN * BinN); - std::vector normalized_histogramYoZ (BinN * BinN); - YOZ_histogram = create2DHistogramFromProjection (initial_cloud_projection_along_x_axis, largest_side, Y, Z); - histogramYOZ1D = convert2DHistogramTo1DHistogram (YOZ_histogram); - complete_object_histogram.insert (complete_object_histogram.end(), histogramYOZ1D.begin(), histogramYOZ1D.end()); - normalizeHistogram (histogramYOZ1D, normalized_histogramYoZ); - normalized_projected_views.at (0) = normalized_histogramYoZ; - complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramYoZ.begin(), normalized_histogramYoZ.end()); - float YoZ_entropy = viewpointEntropy (normalized_histogramYoZ); - view_point_entropy.at (0) = YoZ_entropy; - - ///XOZ Projection - std::vector histogramXOZ1D (BinN * BinN); - std::vector normalized_histogramXoZ (BinN * BinN); - XOZ_histogram = create2DHistogramFromProjection (initial_cloud_projection_along_y_axis, largest_side, X, Z); - histogramXOZ1D = convert2DHistogramTo1DHistogram (XOZ_histogram); - complete_object_histogram.insert (complete_object_histogram.end(), histogramXOZ1D.begin(), histogramXOZ1D.end()); - normalizeHistogram (histogramXOZ1D, normalized_histogramXoZ); - normalized_projected_views.at (1) = normalized_histogramXoZ; - complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoZ.begin(), normalized_histogramXoZ.end()); - float XoZ_entropy = viewpointEntropy (normalized_histogramXoZ); - view_point_entropy.at (1) = XoZ_entropy; - - ///XOY Projection - std::vector histogramXOY1D (BinN * BinN); - std::vector normalized_histogramXoY (BinN * BinN); - XOY_histogram = create2DHistogramFromProjection (initial_cloud_projection_along_z_axis, largest_side, X, Y); - histogramXOY1D = convert2DHistogramTo1DHistogram (XOY_histogram); - complete_object_histogram.insert (complete_object_histogram.end(), histogramXOY1D.begin(), histogramXOY1D.end()); - normalizeHistogram (histogramXOY1D, normalized_histogramXoY); - normalized_projected_views.at (2) = normalized_histogramXoY; - complete_object_histogram_normalized.insert (complete_object_histogram_normalized.end(), normalized_histogramXoY.begin(), normalized_histogramXoY.end()); - float XoY_entropy = viewpointEntropy (normalized_histogramXoY); - view_point_entropy.at (2) = XoY_entropy; + std::vector > normalized_histograms_of_all_projected_views (3, Eigen::Array::Zero()); + Eigen::Array normalized_histogram_tmp = Eigen::Array::Zero(); + std::vector view_points_entropy (3); + + /// YOZ Projection + normalized_histogram_tmp = createNormalizedHistogramFromProjection (initial_cloud_projection_along_x_axis, largest_side, Y, Z); + normalized_histograms_of_all_projected_views.at (0) = normalized_histogram_tmp; + view_points_entropy.at (0) = viewpointEntropy (normalized_histogram_tmp); // YOZ_entropy + + /// XOZ Projection + normalized_histogram_tmp = createNormalizedHistogramFromProjection (initial_cloud_projection_along_y_axis, largest_side, X, Z); + normalized_histograms_of_all_projected_views.at (1) = normalized_histogram_tmp; + view_points_entropy.at (1) = viewpointEntropy (normalized_histogram_tmp); // XOZ_entropy - /* ____________________________________ - | | - | producing a GOOD shape description | - |______________________________________| */ + /// XOY Projection + normalized_histogram_tmp = createNormalizedHistogramFromProjection (initial_cloud_projection_along_z_axis, largest_side, X, Y); + normalized_histograms_of_all_projected_views.at (2) = normalized_histogram_tmp; + view_points_entropy.at (2) = viewpointEntropy (normalized_histogram_tmp); // XOY_entropy + + /* ____________________________ + | | + | producing GOOD description | + |______________________________| */ ///NOTE: The ordering of the three distribution vectors is first by decreasing values of entropy. ///Afterwards the second and third vectors are sorted again by increasing values of variance. - std::vector object_description (3 * BinN * BinN); - size_t maximum_entropy_index = findMaxViewPointEntropy (view_point_entropy); - object_description = objectViewHistogram (maximum_entropy_index, normalized_projected_views); - - for(size_t i =0; i < object_description.size (); i++) - output.points[0].histogram[i] = object_description.at(i); - + Eigen::Array object_description = Eigen::Array::Zero(); + size_t maximum_entropy_index = findMaxViewPointEntropy (view_points_entropy); + object_description = objectViewHistogram (maximum_entropy_index, normalized_histograms_of_all_projected_views); + + for(size_t i =0; i < object_description.rows (); i++) + output.points[0].histogram[i] = object_description[i]; } #define PCL_INSTANTIATE_GOODEstimation(T, x) template class PCL_EXPORTS pcl::GOODEstimation; From 5ab57082613f6e2e2b4720b0a940a65e2dd36672 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Wed, 13 Dec 2017 10:36:02 +0000 Subject: [PATCH 17/24] using typename Feature::PointCloudOut; --- features/include/pcl/features/good.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/features/include/pcl/features/good.h b/features/include/pcl/features/good.h index d7797211bdf..f0eef725e36 100644 --- a/features/include/pcl/features/good.h +++ b/features/include/pcl/features/good.h @@ -80,8 +80,7 @@ namespace pcl { public: typedef pcl::Histogram<3*BinN*BinN> Descriptor; - typedef typename Feature::PointCloudOut PointCloudOut; - + using typename Feature::PointCloudOut; using typename Feature::PointCloudIn; using typename Feature::PointCloudInPtr; using typename Feature::PointCloudInConstPtr; From 6837a05b4871a857adea3bf70c8de1126c4ad464 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Thu, 15 Feb 2018 11:41:57 +0000 Subject: [PATCH 18/24] Add GOOD descriptor test (#1907) --- test/features/CMakeLists.txt | 4 + test/features/test_good_estimation.cpp | 138 +++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 test/features/test_good_estimation.cpp diff --git a/test/features/CMakeLists.txt b/test/features/CMakeLists.txt index afa18a5f1f0..ecf3ed1fd13 100644 --- a/test/features/CMakeLists.txt +++ b/test/features/CMakeLists.txt @@ -20,6 +20,10 @@ if (build) LINK_WITH pcl_gtest pcl_features) if (BUILD_io) + PCL_ADD_TEST(feature_good_estimation test_good_estimation + FILES test_good_estimation.cpp + LINK_WITH pcl_gtest pcl_features pcl_io + ARGUMENTS "${PCL_SOURCE_DIR}/test/milk.pcd") PCL_ADD_TEST(feature_base test_base_feature FILES test_base_feature.cpp LINK_WITH pcl_gtest pcl_features pcl_io diff --git a/test/features/test_good_estimation.cpp b/test/features/test_good_estimation.cpp new file mode 100644 index 00000000000..637621ad3c0 --- /dev/null +++ b/test/features/test_good_estimation.cpp @@ -0,0 +1,138 @@ +/* + * Software License Agreement (BSD License) + * + * Point Cloud Library (PCL) - www.pointclouds.org + * Copyright (c) 2017-, Open Perception, Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the copyright holder(s) nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + + +PointCloud::Ptr cloud (new PointCloud ()); + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// +TEST (PCL, GOODEstimation) +{ + const int NUMBER_OF_BINS = 15; + typedef pcl::GOODEstimation::Descriptor Descriptor; + pcl::PointCloud object_description; + pcl::GOODEstimation test_GOOD_descriptor; + test_GOOD_descriptor.setThreshold (0.0015); + test_GOOD_descriptor.setInputCloud (cloud); // pass original point cloud + test_GOOD_descriptor.compute (object_description); // Actually compute the GOOD discriptor for the given object + + const float expected_values [225] = + { 0, 0, 0, 0, 0, 0, 0, 0.000875657, 0, 0.000218914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00627554, 0.00861062, 0.0105079, 0.0110187, 0.00634851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000364857, + 0.0140835, 0.0164915, 0.015324, 0.0158348, 0.0134267, 0.00218914, 0, 0, 0, 0, 0, 0, 0, 0.00131349, 0.00890251, 0.0104349, 0.0172942, 0.0170753, 0.0165645, 0.0156888, 0.010289, + 0.000218914, 0, 0, 0, 0, 0, 0, 0.00496206, 0.0106538, 0.0137186, 0.0138646, 0.0140105, 0.0137186, 0.0116754, 0.0124051, 0.00211617, 0, 0, 0, 0, 0, 0, 0.00488908, 0.00992411, + 0.0106538, 0.0116025, 0.0132078, 0.0121133, 0.0107998, 0.0111646, 0.000729714, 0, 0, 0, 0, 0, 0, 0.00372154, 0.00882954, 0.0106538, 0.0119673, 0.0119673, 0.0119673, 0.0108727, + 0.0110187, 0.00167834, 0, 0, 0, 0, 0, 0, 0.00182428, 0.00904845, 0.0100701, 0.0108727, 0.0114565, 0.0110917, 0.0100701, 0.00941331, 0.00248103, 0, 0, 0, 0, 0, 0, 0.00313777, + 0.00846468, 0.00934034, 0.0103619, 0.0106538, 0.0113106, 0.0104349, 0.010143, 0.00211617, 0, 0, 0, 0, 0, 0, 0.00445125, 0.0081728, 0.00890251, 0.010289, 0.0109457, 0.010143, + 0.00941331, 0.00846468, 0.00240806, 0, 0, 0, 0, 0, 0, 0.00328371, 0.00839171, 0.00875657, 0.00941331, 0.0105809, 0.00934034, 0.00977817, 0.00904845, 0.00109457, 0, 0, 0, 0, 0, 0, + 0.00291886, 0.00685931, 0.00846468, 0.00926737, 0.00955925, 0.00955925, 0.00926737, 0.00831874, 0.00226211, 0, 0, 0, 0, 0, 0, 0.00350263, 0.00744308, 0.00795388, 0.00882954, + 0.0091944, 0.00912142, 0.00890251, 0.00795388, 0.00160537, 0, 0, 0, 0, 0, 0, 0.00131349, 0.00685931, 0.00751605, 0.00861062, 0.00912142, 0.00861062, 0.00751605, 0.00853765, + 0.0020432, 0, 0, 0, 0, 0, 0, 0.00109457, 0.00226211, 0.00328371, 0.0056188, 0.00539988, 0.00437828, 0.00350263, 0.00321074, 0.000729714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000218914, 0.00649445, 0.0267075, 0.00299183, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0.00175131, 0.0290426, 0.0513719, 0.0140105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0139375, 0.0768389, 0.0391127, 0.000218914, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0.0110917, 0.0218914, 0.071293, 0.0488179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00277291, 0.0197023, 0.0111646, 0.086617, 0.0396235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.017951, + 0.00875657, 0.0480881, 0.0799766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000437828, 0.015324, 0.0262697, 0.0934034, 0.00248103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00328371, 0.0820198, + 0.0268535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00218914, 0.0168564, 0.000437828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00109457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000145943, 0.0186807, 0.015397, 0.00853765, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000291886, 0.0172942, 0.0289696, 0.0289696, 0.00218914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00350263, 0.0259048, 0.033275, 0.0311588, 0.00394046, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00248103, 0.0155429, 0.0278751, 0.0296264, 0.0215995, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00467017, 0.0115295, 0.0233508, 0.0261967, 0.0193374, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0.0061296, 0.00948628, 0.0244454, 0.0248103, 0.017805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00299183, 0.0154699, 0.0213076, 0.0231319, 0.0134267, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0.00554583, 0.0163456, 0.0206509, 0.0247373, 0.0086836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.29714e-05, 0.00788091, 0.0161997, 0.0188266, 0.0264886, 0.00372154, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0.000437828, 0.00656743, 0.0173672, 0.0184618, 0.0267075, 0.000145943, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000875657, 0.00576474, 0.017878, 0.0189726, 0.022986, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0.00335668, 0.00554583, 0.0168564, 0.020286, 0.0184618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00211617, 0.00569177, 0.0188266, 0.0183888, 0.0151051, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.000218914, 0.00138646, 0.00342966, 0.00722417, 0.00934034, 0.00788091, 0, 0, 0, 0, 0, 0 + }; + + EXPECT_EQ (object_description.points.size (), 1); + for (size_t i = 0; i < size_t (object_description.points[0].descriptorSize ()); ++i) + { + EXPECT_NEAR (object_description.points[0].histogram[i], expected_values[i], 1e-5); + } + + Eigen::Matrix4f transformation = test_GOOD_descriptor.getTransformationMatrix (); + Eigen::Matrix4f expected_transformation_values; + expected_transformation_values << + -0.0108418, 0.887046, 0.461555, -0.236646, + 0.998495, -0.0152106, 0.0526872, 0.0132545, + 0.0537565, 0.461432, -0.885546, 0.75173, + 0, 0, 0, 1; + + for (int i = 0; i < transformation.rows(); ++i) + { + for (int j = 0; j < transformation.cols (); ++j) + { + EXPECT_NEAR (transformation (i, j), expected_transformation_values (i, j), 1e-5); + } + } + + pcl::PointXYZ center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); + EXPECT_EQ (-0.0624728, center_of_bounding_box.x); + EXPECT_EQ (-0.140744, center_of_bounding_box.y); + EXPECT_EQ (0.790559, center_of_bounding_box.z); + + Eigen::Vector4f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); + EXPECT_EQ (0.257679, bounding_box_dimensions(0)); + EXPECT_EQ (0.151612, bounding_box_dimensions(1)); + EXPECT_EQ (0.111211, bounding_box_dimensions(2)); + EXPECT_EQ (0, bounding_box_dimensions(3)); + +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/* ---[ */ +int +main (int argc, char** argv) +{ + if (argc < 2) + { + std::cerr << "No test file given. Please download `milk.pcd` and pass its path to the test." << std::endl; + return (-1); + } + + if (pcl::io::loadPCDFile (argv[1], *cloud) < 0) + { + std::cerr << "Failed to read test file. Please download `milk.pcd` and pass its path to the test." << std::endl; + return (-1); + } + + testing::InitGoogleTest (&argc, argv); + return (RUN_ALL_TESTS ()); +} +/* ]--- */ From e7a5826d2798bb7303e8c2fc9bed29c0a34f4097 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Thu, 15 Feb 2018 13:05:48 +0000 Subject: [PATCH 19/24] Add GOOD descriptor test (#1907) --- test/features/test_good_estimation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/features/test_good_estimation.cpp b/test/features/test_good_estimation.cpp index 637621ad3c0..1d72d927803 100644 --- a/test/features/test_good_estimation.cpp +++ b/test/features/test_good_estimation.cpp @@ -53,7 +53,7 @@ TEST (PCL, GOODEstimation) test_GOOD_descriptor.setInputCloud (cloud); // pass original point cloud test_GOOD_descriptor.compute (object_description); // Actually compute the GOOD discriptor for the given object - const float expected_values [225] = + const float expected_values [675] = { 0, 0, 0, 0, 0, 0, 0, 0.000875657, 0, 0.000218914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00627554, 0.00861062, 0.0105079, 0.0110187, 0.00634851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000364857, 0.0140835, 0.0164915, 0.015324, 0.0158348, 0.0134267, 0.00218914, 0, 0, 0, 0, 0, 0, 0, 0.00131349, 0.00890251, 0.0104349, 0.0172942, 0.0170753, 0.0165645, 0.0156888, 0.010289, 0.000218914, 0, 0, 0, 0, 0, 0, 0.00496206, 0.0106538, 0.0137186, 0.0138646, 0.0140105, 0.0137186, 0.0116754, 0.0124051, 0.00211617, 0, 0, 0, 0, 0, 0, 0.00488908, 0.00992411, From 0368f7e7685dacf56302092ca4f8b7faa6a50d44 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Thu, 15 Feb 2018 15:31:43 +0000 Subject: [PATCH 20/24] Add GOOD descriptor test (#1907) --- test/features/test_good_estimation.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/features/test_good_estimation.cpp b/test/features/test_good_estimation.cpp index 1d72d927803..66a8f2ef0ce 100644 --- a/test/features/test_good_estimation.cpp +++ b/test/features/test_good_estimation.cpp @@ -40,7 +40,7 @@ #include -PointCloud::Ptr cloud (new PointCloud ()); +pcl::PointCloud::Ptr cloud (new pcl::PointCloud); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// TEST (PCL, GOODEstimation) @@ -124,9 +124,9 @@ main (int argc, char** argv) { std::cerr << "No test file given. Please download `milk.pcd` and pass its path to the test." << std::endl; return (-1); - } - - if (pcl::io::loadPCDFile (argv[1], *cloud) < 0) + } + + if (pcl::io::loadPCDFile (argv[1], *cloud) == -1) { std::cerr << "Failed to read test file. Please download `milk.pcd` and pass its path to the test." << std::endl; return (-1); From a2e75b6db0b2c8f9e8ecae27b315856172465757 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Thu, 15 Feb 2018 15:33:39 +0000 Subject: [PATCH 21/24] Add GOOD descriptor test (#1907) --- test/features/test_good_estimation.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/features/test_good_estimation.cpp b/test/features/test_good_estimation.cpp index 66a8f2ef0ce..f97d4c089c4 100644 --- a/test/features/test_good_estimation.cpp +++ b/test/features/test_good_estimation.cpp @@ -40,15 +40,15 @@ #include -pcl::PointCloud::Ptr cloud (new pcl::PointCloud); +pcl::PointCloud::Ptr cloud (new pcl::PointCloud); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// TEST (PCL, GOODEstimation) { const int NUMBER_OF_BINS = 15; - typedef pcl::GOODEstimation::Descriptor Descriptor; + typedef pcl::GOODEstimation::Descriptor Descriptor; pcl::PointCloud object_description; - pcl::GOODEstimation test_GOOD_descriptor; + pcl::GOODEstimation test_GOOD_descriptor; test_GOOD_descriptor.setThreshold (0.0015); test_GOOD_descriptor.setInputCloud (cloud); // pass original point cloud test_GOOD_descriptor.compute (object_description); // Actually compute the GOOD discriptor for the given object @@ -126,7 +126,7 @@ main (int argc, char** argv) return (-1); } - if (pcl::io::loadPCDFile (argv[1], *cloud) == -1) + if (pcl::io::loadPCDFile (argv[1], *cloud) == -1) { std::cerr << "Failed to read test file. Please download `milk.pcd` and pass its path to the test." << std::endl; return (-1); From 1a688551f380e222431580638ca87ae7d389ff0e Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Thu, 15 Feb 2018 18:45:32 +0000 Subject: [PATCH 22/24] Add GOOD descriptor test (#1907) --- test/features/test_good_estimation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/features/test_good_estimation.cpp b/test/features/test_good_estimation.cpp index f97d4c089c4..b9c41e25774 100644 --- a/test/features/test_good_estimation.cpp +++ b/test/features/test_good_estimation.cpp @@ -79,7 +79,7 @@ TEST (PCL, GOODEstimation) 0.000218914, 0.00138646, 0.00342966, 0.00722417, 0.00934034, 0.00788091, 0, 0, 0, 0, 0, 0 }; - EXPECT_EQ (object_description.points.size (), 1); + EXPECT_EQ (object_description.points[0].descriptorSize (), 675); for (size_t i = 0; i < size_t (object_description.points[0].descriptorSize ()); ++i) { EXPECT_NEAR (object_description.points[0].histogram[i], expected_values[i], 1e-5); From ab0e4dc8262e24409980f91b7df76786cff5a3d0 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Thu, 15 Feb 2018 22:36:58 +0000 Subject: [PATCH 23/24] Add GOOD descriptor test (#1907) --- test/features/test_good_estimation.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/features/test_good_estimation.cpp b/test/features/test_good_estimation.cpp index b9c41e25774..46618fb34ed 100644 --- a/test/features/test_good_estimation.cpp +++ b/test/features/test_good_estimation.cpp @@ -102,15 +102,15 @@ TEST (PCL, GOODEstimation) } pcl::PointXYZ center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); - EXPECT_EQ (-0.0624728, center_of_bounding_box.x); - EXPECT_EQ (-0.140744, center_of_bounding_box.y); - EXPECT_EQ (0.790559, center_of_bounding_box.z); + EXPECT_NEAR (-0.0624728, center_of_bounding_box.x, 1e-5); + EXPECT_NEAR (-0.140744, center_of_bounding_box.y, 1e-5); + EXPECT_NEAR (0.790559, center_of_bounding_box.z, 1e-5); Eigen::Vector4f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); - EXPECT_EQ (0.257679, bounding_box_dimensions(0)); - EXPECT_EQ (0.151612, bounding_box_dimensions(1)); - EXPECT_EQ (0.111211, bounding_box_dimensions(2)); - EXPECT_EQ (0, bounding_box_dimensions(3)); + EXPECT_NEAR (0.257679, bounding_box_dimensions (0), 1e-5); + EXPECT_NEAR (0.151612, bounding_box_dimensions (1), 1e-5); + EXPECT_NEAR (0.111211, bounding_box_dimensions (2), 1e-5); + EXPECT_NEAR (0, bounding_box_dimensions (3), 1e-5); } From fc66de7a36cf5407d3d9e748591f51e97d01169f Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Fri, 16 Feb 2018 00:37:54 +0000 Subject: [PATCH 24/24] Add GOOD descriptor test (#1907) --- test/features/test_good_estimation.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/features/test_good_estimation.cpp b/test/features/test_good_estimation.cpp index 46618fb34ed..0f50aeec264 100644 --- a/test/features/test_good_estimation.cpp +++ b/test/features/test_good_estimation.cpp @@ -102,15 +102,15 @@ TEST (PCL, GOODEstimation) } pcl::PointXYZ center_of_bounding_box = test_GOOD_descriptor.getCenterOfObjectBoundingBox (); - EXPECT_NEAR (-0.0624728, center_of_bounding_box.x, 1e-5); - EXPECT_NEAR (-0.140744, center_of_bounding_box.y, 1e-5); - EXPECT_NEAR (0.790559, center_of_bounding_box.z, 1e-5); + EXPECT_NEAR (center_of_bounding_box.x, -0.0624728, 0.01); + EXPECT_NEAR (center_of_bounding_box.y, -0.140744, 0.01); + EXPECT_NEAR (center_of_bounding_box.z, 0.790559, 0.01); Eigen::Vector4f bounding_box_dimensions = test_GOOD_descriptor.getObjectBoundingBoxDimensions (); - EXPECT_NEAR (0.257679, bounding_box_dimensions (0), 1e-5); - EXPECT_NEAR (0.151612, bounding_box_dimensions (1), 1e-5); - EXPECT_NEAR (0.111211, bounding_box_dimensions (2), 1e-5); - EXPECT_NEAR (0, bounding_box_dimensions (3), 1e-5); + EXPECT_NEAR (bounding_box_dimensions (0), 0.257679, 0.01); + EXPECT_NEAR (bounding_box_dimensions (1), 0.151612, 0.01); + EXPECT_NEAR (bounding_box_dimensions (2), 0.111211, 0.01); + EXPECT_NEAR (bounding_box_dimensions (3), 0, 0.01); }