38 #ifndef PCL_RANGE_IMAGE_BORDER_EXTRACTOR_H_
39 #define PCL_RANGE_IMAGE_BORDER_EXTRACTOR_H_
41 #include <pcl/point_types.h>
42 #include <pcl/features/feature.h>
44 #if defined BUILD_Maintainer && defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ > 3
45 #pragma GCC diagnostic ignored "-Weffc++"
51 template <
typename Po
intType>
62 typedef boost::shared_ptr<RangeImageBorderExtractor>
Ptr;
63 typedef boost::shared_ptr<const RangeImageBorderExtractor>
ConstPtr;
72 normal (), neighborhood_mean (), eigen_values (), normal_no_jumps (),
73 neighborhood_mean_no_jumps (), eigen_values_no_jumps (), max_neighbor_distance_squared () {}
88 int left, right,
top, bottom;
94 Parameters () : max_no_of_threads(1), pixel_radius_borders (3), pixel_radius_plane_extraction (2), pixel_radius_border_direction (2),
95 minimum_border_probability (0.8f), pixel_radius_principal_curvature (2) {}
109 getObstacleBorderAngle (
const BorderTraits& border_traits);
122 setRangeImage (
const RangeImage* range_image);
132 getAnglesImageForBorderDirections ();
138 getAnglesImageForSurfaceChangeDirections ();
142 compute (PointCloudOut& output);
172 ShadowBorderIndices**
211 getNeighborDistanceChangeScore (
const LocalSurface& local_surface,
int x,
int y,
212 int offset_x,
int offset_y,
int pixel_radius=1)
const;
223 getNormalBasedBorderScore (
const LocalSurface& local_surface,
int x,
int y,
224 int offset_x,
int offset_y)
const;
237 changeScoreAccordingToShadowBorderValue (
int x,
int y,
int offset_x,
int offset_y,
float* border_scores,
238 float* border_scores_other_direction,
int& shadow_border_idx)
const;
247 updatedScoreAccordingToNeighborValues (
int x,
int y,
const float* border_scores)
const;
254 updatedScoresAccordingToNeighborValues (
const float* border_scores)
const;
258 updateScoresAccordingToNeighborValues ();
271 checkPotentialBorder (
int x,
int y,
int offset_x,
int offset_y,
float* border_scores_left,
272 float* border_scores_right,
int& shadow_border_idx)
const;
284 checkIfMaximum (
int x,
int y,
int offset_x,
int offset_y,
float* border_scores,
int shadow_border_idx)
const;
288 findAndEvaluateShadowBorders ();
292 extractLocalSurfaceStructure ();
298 extractBorderScoreImages ();
312 calculateBorderDirection (
int x,
int y);
318 calculateBorderDirections ();
328 get3dDirection (
const BorderDescription& border_description, Eigen::Vector3f& direction,
340 calculateMainPrincipalCurvature (
int x,
int y,
int radius,
float& magnitude,
341 Eigen::Vector3f& main_direction)
const;
346 calculateSurfaceChanges ();
350 blurSurfaceChanges ();
354 computeFeature (PointCloudOut &output);
357 #if defined BUILD_Maintainer && defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ > 3
358 #pragma GCC diagnostic warning "-Weffc++"
361 #include <pcl/features/impl/range_image_border_extractor.hpp>
363 #endif //#ifndef PCL_RANGE_IMAGE_BORDER_EXTRACTOR_H_
RangeImage is derived from pcl/PointCloud and provides functionalities with focus on situations where...
This file defines compatibility wrappers for low level I/O functions.
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.
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...