Point Cloud Library (PCL)
1.7.0
|
00001 /* 00002 * Software License Agreement (BSD License) 00003 * 00004 * Point Cloud Library (PCL) - www.pointclouds.org 00005 * Copyright (c) 2010-2012, Willow Garage, Inc. 00006 * Copyright (c) 2012-, Open Perception, Inc. 00007 * 00008 * All rights reserved. 00009 * 00010 * Redistribution and use in source and binary forms, with or without 00011 * modification, are permitted provided that the following conditions 00012 * are met: 00013 * 00014 * * Redistributions of source code must retain the above copyright 00015 * notice, this list of conditions and the following disclaimer. 00016 * * Redistributions in binary form must reproduce the above 00017 * copyright notice, this list of conditions and the following 00018 * disclaimer in the documentation and/or other materials provided 00019 * with the distribution. 00020 * * Neither the name of the copyright holder(s) nor the names of its 00021 * contributors may be used to endorse or promote products derived 00022 * from this software without specific prior written permission. 00023 * 00024 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00025 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00026 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00027 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 00028 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00029 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00030 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00031 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00032 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00033 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 00034 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00035 * POSSIBILITY OF SUCH DAMAGE. 00036 * 00037 * $Id$ 00038 */ 00039 00040 #ifndef PCL_FEATURES_SHOT_LRF_OMP_H_ 00041 #define PCL_FEATURES_SHOT_LRF_OMP_H_ 00042 00043 #include <pcl/point_types.h> 00044 #include <pcl/features/feature.h> 00045 #include <pcl/features/shot_lrf.h> 00046 00047 namespace pcl 00048 { 00049 /** \brief SHOTLocalReferenceFrameEstimation estimates the Local Reference Frame used in the calculation 00050 * of the (SHOT) descriptor. 00051 * 00052 * \note If you use this code in any academic work, please cite: 00053 * 00054 * - F. Tombari, S. Salti, L. Di Stefano 00055 * Unique Signatures of Histograms for Local Surface Description. 00056 * In Proceedings of the 11th European Conference on Computer Vision (ECCV), 00057 * Heraklion, Greece, September 5-11 2010. 00058 * - F. Tombari, S. Salti, L. Di Stefano 00059 * A Combined Texture-Shape Descriptor For Enhanced 3D Feature Matching. 00060 * In Proceedings of the 18th International Conference on Image Processing (ICIP), 00061 * Brussels, Belgium, September 11-14 2011. 00062 * 00063 * \author Samuele Salti, Federico Tombari 00064 * \ingroup features 00065 */ 00066 template<typename PointInT, typename PointOutT = ReferenceFrame> 00067 class SHOTLocalReferenceFrameEstimationOMP : public SHOTLocalReferenceFrameEstimation<PointInT, PointOutT> 00068 { 00069 public: 00070 typedef boost::shared_ptr<SHOTLocalReferenceFrameEstimationOMP<PointInT, PointOutT> > Ptr; 00071 typedef boost::shared_ptr<const SHOTLocalReferenceFrameEstimationOMP<PointInT, PointOutT> > ConstPtr; 00072 /** \brief Constructor */ 00073 SHOTLocalReferenceFrameEstimationOMP () : threads_ (0) 00074 { 00075 feature_name_ = "SHOTLocalReferenceFrameEstimationOMP"; 00076 } 00077 00078 /** \brief Empty destructor */ 00079 virtual ~SHOTLocalReferenceFrameEstimationOMP () {} 00080 00081 /** \brief Initialize the scheduler and set the number of threads to use. 00082 * \param nr_threads the number of hardware threads to use (0 sets the value back to automatic) 00083 */ 00084 inline void 00085 setNumberOfThreads (unsigned int nr_threads = 0) { threads_ = nr_threads; } 00086 00087 protected: 00088 using Feature<PointInT, PointOutT>::feature_name_; 00089 using Feature<PointInT, PointOutT>::getClassName; 00090 //using Feature<PointInT, PointOutT>::searchForNeighbors; 00091 using Feature<PointInT, PointOutT>::input_; 00092 using Feature<PointInT, PointOutT>::indices_; 00093 using Feature<PointInT, PointOutT>::surface_; 00094 using Feature<PointInT, PointOutT>::tree_; 00095 using Feature<PointInT, PointOutT>::search_parameter_; 00096 using SHOTLocalReferenceFrameEstimation<PointInT, PointOutT>::getLocalRF; 00097 typedef typename Feature<PointInT, PointOutT>::PointCloudIn PointCloudIn; 00098 typedef typename Feature<PointInT, PointOutT>::PointCloudOut PointCloudOut; 00099 00100 /** \brief Feature estimation method. 00101 * \param[out] output the resultant features 00102 */ 00103 virtual void 00104 computeFeature (PointCloudOut &output); 00105 00106 /** \brief The number of threads the scheduler should use. */ 00107 unsigned int threads_; 00108 00109 }; 00110 } 00111 00112 #ifdef PCL_NO_PRECOMPILE 00113 #include <pcl/features/impl/shot_lrf_omp.hpp> 00114 #endif 00115 00116 #endif // PCL_FEATURES_SHOT_LRF_H_ 00117