40 #include <pcl/recognition/linemod.h>
41 #include <pcl/recognition/color_gradient_modality.h>
42 #include <pcl/recognition/surface_normal_modality.h>
43 #include <pcl/io/tar.h>
71 template <
typename Po
intXYZT,
typename Po
intRGBT=Po
intXYZT>
83 std::size_t template_id{0};
85 std::size_t object_id{0};
87 std::size_t detection_id{0};
98 : color_gradient_mod_ ()
99 , surface_normal_mod_ ()
121 loadTemplates (
const std::string &file_name, std::size_t object_id = 0);
132 linemod_.setDetectionThreshold (threshold);
142 color_gradient_mod_.setGradientMagnitudeThreshold (threshold);
155 intersection_volume_threshold_ = threshold;
166 surface_normal_mod_.setInputCloud (cloud);
167 surface_normal_mod_.processInputData ();
178 color_gradient_mod_.setInputCloud (cloud);
179 color_gradient_mod_.processInputData ();
190 createAndAddTemplate (
192 const std::size_t object_id,
209 float min_scale = 0.6944444f,
210 float max_scale = 1.44f,
211 float scale_multiplier = 1.2f);
220 computeTransformedTemplatePoints (
const std::size_t detection_id,
227 inline std::vector<std::size_t>
230 if (detection_id >= detections_.size ())
231 PCL_ERROR (
"ERROR pcl::LineRGBD::computeTransformedTemplatePoints - detection_id is out of bounds\n");
235 std::vector<std::size_t> vec;
246 inline std::vector<std::size_t>
249 if (detection_id >= detections_.size ())
250 PCL_ERROR (
"ERROR pcl::LineRGBD::computeTransformedTemplatePoints - detection_id is out of bounds\n");
254 std::vector<std::size_t> vec;
260 refineDetectionsAlongDepth ();
264 applyProjectiveDepthICPOnDetections ();
268 removeOverlappingDetections ();
283 float intersection_volume_threshold_{1.0f};
305 std::vector<typename pcl::LineRGBD<PointXYZT, PointRGBT>::Detection>
detections_;
310 #include <pcl/recognition/impl/linemod/line_rgbd.hpp>
float z
Z-coordinate of the upper left front point.
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.
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.
std::vector< std::size_t > alignTemplatePoints(const std::size_t detection_id)
Aligns the template points with the points found at the detection position of the specified detection...
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.
std::vector< std::size_t > object_ids_
Object IDs corresponding to the templates.
std::vector< PointCloud< PointT >, Eigen::aligned_allocator< PointCloud< PointT > > > CloudVectorType
RegionXY region
The 2D template region of the detection.
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.
std::vector< std::size_t > findObjectPointIndices(const std::size_t detection_id)
Finds the indices of the points in the input cloud which correspond to the specified detection...
std::vector< typename pcl::LineRGBD< PointXYZT, PointRGBT >::Detection > detections_
Detections from last call of method detect (...).
shared_ptr< const PointCloud< PointT > > ConstPtr
pcl::SurfaceNormalModality< PointXYZT > surface_normal_mod_
Surface normal modality.
High-level class for template matching using the LINEMOD approach based on RGB and Depth data...
pcl::PointCloud< PointXYZT >::ConstPtr cloud_xyz_
XYZ point cloud.
float height
Height of the bounding box.
BoundingBoxXYZ()=default
Constructor.
BoundingBoxXYZ bounding_box
The 3D bounding box of the detection.