38 #ifndef PCL_RECOGNITION_LINEMOD_LINE_RGBD 39 #define PCL_RECOGNITION_LINEMOD_LINE_RGBD 41 #include <pcl/recognition/linemod.h> 42 #include <pcl/recognition/color_gradient_modality.h> 43 #include <pcl/recognition/surface_normal_modality.h> 44 #include <pcl/io/tar.h> 72 template <
typename Po
intXYZT,
typename Po
intRGBT=Po
intXYZT>
81 Detection () : template_id (0), object_id (0), detection_id (0), response (0.0f), bounding_box () {}
99 : intersection_volume_threshold_ (1.0f)
101 , color_gradient_mod_ ()
102 , surface_normal_mod_ ()
105 , template_point_clouds_ ()
129 loadTemplates (
const std::string &file_name,
size_t object_id = 0);
140 linemod_.setDetectionThreshold (threshold);
150 color_gradient_mod_.setGradientMagnitudeThreshold (threshold);
163 intersection_volume_threshold_ = threshold;
174 surface_normal_mod_.setInputCloud (cloud);
175 surface_normal_mod_.processInputData ();
186 color_gradient_mod_.setInputCloud (cloud);
187 color_gradient_mod_.processInputData ();
198 createAndAddTemplate (
200 const size_t object_id,
217 float min_scale = 0.6944444f,
218 float max_scale = 1.44f,
219 float scale_multiplier = 1.2f);
228 computeTransformedTemplatePoints (
const size_t detection_id,
235 inline std::vector<size_t>
238 if (detection_id >= detections_.size ())
239 PCL_ERROR (
"ERROR pcl::LineRGBD::computeTransformedTemplatePoints - detection_id is out of bounds\n");
243 std::vector<size_t> vec;
254 inline std::vector<size_t>
257 if (detection_id >= detections_.size ())
258 PCL_ERROR (
"ERROR pcl::LineRGBD::computeTransformedTemplatePoints - detection_id is out of bounds\n");
262 std::vector<size_t> vec;
268 refineDetectionsAlongDepth ();
272 applyProjectiveDepthICPOnDetections ();
276 removeOverlappingDetections ();
291 float intersection_volume_threshold_;
313 std::vector<typename pcl::LineRGBD<PointXYZT, PointRGBT>::Detection>
detections_;
318 #include <pcl/recognition/impl/linemod/line_rgbd.hpp>
float z
Z-coordinate of the upper left front point.
std::vector< PointCloud< PointT >, Eigen::aligned_allocator< PointCloud< PointT > > > CloudVectorType
std::vector< pcl::BoundingBoxXYZ > bounding_boxes_
Bounding boxes corresponding to the templates.
pcl::ColorGradientModality< PointRGBT > color_gradient_mod_
Color gradient modality.
Template matching using the LINEMOD approach.
This file defines compatibility wrappers for low level I/O functions.
pcl::PointCloud< pcl::PointXYZRGBA >::CloudVectorType template_point_clouds_
Point clouds corresponding to the templates.
void setGradientMagnitudeThreshold(const float threshold)
Sets the threshold on the magnitude of color gradients.
void setDetectionThreshold(float threshold)
Sets the threshold for the detection responses.
Defines a region in XY-space.
float y
Y-coordinate of the upper left front point.
A multi-modality template constructed from a set of quantized multi-modality features.
float x
X-coordinate of the upper left front point.
void setIntersectionVolumeThreshold(const float threshold=1.0f)
Sets the threshold for the decision whether two detections of the same template are merged or not...
pcl::LINEMOD linemod_
LINEMOD instance.
void setInputColors(const typename pcl::PointCloud< PointRGBT >::ConstPtr &cloud)
Sets the input cloud with rgb values.
float width
Width of the bounding box.
size_t detection_id
The ID of this detection.
BoundingBoxXYZ()
Constructor.
RegionXY region
The 2D template region of the detection.
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
float depth
Depth of the bounding box.
void setInputCloud(const typename pcl::PointCloud< PointXYZT >::ConstPtr &cloud)
Sets the input cloud with xyz point coordinates.
pcl::PointCloud< PointRGBT >::ConstPtr cloud_rgb_
RGB point cloud.
virtual ~LineRGBD()
Destructor.
size_t object_id
The ID of the object corresponding to the template.
std::vector< typename pcl::LineRGBD< PointXYZT, PointRGBT >::Detection > detections_
Detections from last call of method detect (...).
pcl::SurfaceNormalModality< PointXYZT > surface_normal_mod_
Surface normal modality.
std::vector< size_t > findObjectPointIndices(const size_t detection_id)
Finds the indices of the points in the input cloud which correspond to the specified detection...
High-level class for template matching using the LINEMOD approach based on RGB and Depth data...
std::vector< size_t > alignTemplatePoints(const size_t detection_id)
Aligns the template points with the points found at the detection position of the specified detection...
size_t template_id
The ID of the template.
std::vector< size_t > object_ids_
Object IDs corresponding to the templates.
pcl::PointCloud< PointXYZT >::ConstPtr cloud_xyz_
XYZ point cloud.
float response
The response of this detection.
float height
Height of the bounding box.
BoundingBoxXYZ bounding_box
The 3D bounding box of the detection.