40 #include <pcl/point_types.h>
41 #include <pcl/features/feature.h>
47 template <
typename Po
intType>
58 using Ptr = shared_ptr<RangeImageBorderExtractor>;
59 using ConstPtr = shared_ptr<const RangeImageBorderExtractor>;
68 max_neighbor_distance_squared () {}
83 int left, right,
top, bottom;
89 Parameters () : max_no_of_threads(1), pixel_radius_borders (3), pixel_radius_plane_extraction (2), pixel_radius_border_direction (2),
90 minimum_border_probability (0.8f), pixel_radius_principal_curvature (2) {}
104 getObstacleBorderAngle (
const BorderTraits& border_traits);
117 setRangeImage (
const RangeImage* range_image);
127 getAnglesImageForBorderDirections ();
133 getAnglesImageForSurfaceChangeDirections ();
137 compute (PointCloudOut& output);
167 ShadowBorderIndices**
207 getNeighborDistanceChangeScore (
const LocalSurface& local_surface,
int x,
int y,
208 int offset_x,
int offset_y,
int pixel_radius=1)
const;
219 getNormalBasedBorderScore (
const LocalSurface& local_surface,
int x,
int y,
220 int offset_x,
int offset_y)
const;
233 changeScoreAccordingToShadowBorderValue (
int x,
int y,
int offset_x,
int offset_y,
float* border_scores,
234 float* border_scores_other_direction,
int& shadow_border_idx)
const;
243 updatedScoreAccordingToNeighborValues (
int x,
int y,
const float* border_scores)
const;
250 updatedScoresAccordingToNeighborValues (
const float* border_scores)
const;
254 updateScoresAccordingToNeighborValues ();
267 checkPotentialBorder (
int x,
int y,
int offset_x,
int offset_y,
float* border_scores_left,
268 float* border_scores_right,
int& shadow_border_idx)
const;
280 checkIfMaximum (
int x,
int y,
int offset_x,
int offset_y,
float* border_scores,
int shadow_border_idx)
const;
284 findAndEvaluateShadowBorders ();
288 extractLocalSurfaceStructure ();
294 extractBorderScoreImages ();
308 calculateBorderDirection (
int x,
int y);
314 calculateBorderDirections ();
324 get3dDirection (
const BorderDescription& border_description, Eigen::Vector3f& direction,
336 calculateMainPrincipalCurvature (
int x,
int y,
int radius,
float& magnitude,
337 Eigen::Vector3f& main_direction)
const;
342 calculateSurfaceChanges ();
346 blurSurfaceChanges ();
350 computeFeature (PointCloudOut &output)
override;
354 updatedScoresAccordingToNeighborValues (
const std::vector<float>& border_scores)
const;
358 #include <pcl/features/impl/range_image_border_extractor.hpp>
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
RangeImage is derived from pcl/PointCloud and provides functionalities with focus on situations where...
A structure to store if a point in a range image lies on a border between an obstacle and the backgro...
PointCloud represents the base class in PCL for storing collections of 3D points. ...
Stores the indices of the shadow border corresponding to obstacle borders.
Feature represents the base feature class.