00001 /* 00002 * Software License Agreement (BSD License) 00003 * 00004 * Point Cloud Library (PCL) - www.pointclouds.org 00005 * Copyright (c) 2010, 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 00038 #ifndef PCL_NARF_DESCRIPTOR_H_ 00039 #define PCL_NARF_DESCRIPTOR_H_ 00040 00041 #include <pcl/point_types.h> 00042 #include <pcl/features/feature.h> 00043 00044 #if defined BUILD_Maintainer && defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ > 3 00045 #pragma GCC diagnostic ignored "-Weffc++" 00046 #endif 00047 namespace pcl 00048 { 00049 // Forward declarations 00050 class RangeImage; 00051 00059 class PCL_EXPORTS NarfDescriptor : public Feature<PointWithRange,Narf36> 00060 { 00061 public: 00062 typedef boost::shared_ptr<NarfDescriptor> Ptr; 00063 typedef boost::shared_ptr<const NarfDescriptor> ConstPtr; 00064 // =====TYPEDEFS===== 00065 typedef Feature<PointWithRange,Narf36> BaseClass; 00066 00067 // =====STRUCTS/CLASSES===== 00068 struct Parameters 00069 { 00070 Parameters() : support_size(-1.0f), rotation_invariant(true) {} 00071 float support_size; 00072 bool rotation_invariant; 00073 }; 00074 00075 // =====CONSTRUCTOR & DESTRUCTOR===== 00077 NarfDescriptor (const RangeImage* range_image=NULL, const std::vector<int>* indices=NULL); 00079 virtual ~NarfDescriptor(); 00080 00081 // =====METHODS===== 00083 void 00084 setRangeImage (const RangeImage* range_image, const std::vector<int>* indices=NULL); 00085 00087 void 00088 compute (PointCloudOut& output); 00089 00090 // =====GETTER===== 00092 Parameters& 00093 getParameters () { return parameters_;} 00094 00095 protected: 00096 // =====PROTECTED MEMBER VARIABLES===== 00097 const RangeImage* range_image_; 00098 Parameters parameters_; 00099 00100 // =====PROTECTED METHODS===== 00102 virtual void 00103 computeFeature (PointCloudOut& output); 00104 }; 00105 00106 } // namespace end 00107 #if defined BUILD_Maintainer && defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ > 3 00108 #pragma GCC diagnostic warning "-Weffc++" 00109 #endif 00110 00111 #endif //#ifndef PCL_NARF_DESCRIPTOR_H_