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 ();
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 ();
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_
Parameters used in this class.
const RangeImage & getRangeImage() const
float minimum_border_probability
PointCloudOut & getBorderDescriptions()
Stores the indices of the shadow border corresponding to obstacle borders.
float max_neighbor_distance_squared
int pixel_radius_plane_extraction
Eigen::Vector3f neighborhood_mean
float * border_scores_top_
float * getBorderScoresTop()
float * getSurfaceChangeScores()
Eigen::Vector3f * surface_change_directions_
int pixel_radius_border_direction
RangeImage is derived from pcl/PointCloud and provides functionalities with focus on situations where...
Stores some information extracted from the neighborhood of a point.
int range_image_size_during_extraction_
Eigen::Vector3f normal_no_jumps
Eigen::Vector3f * getSurfaceChangeDirections()
LocalSurface ** surface_structure_
Eigen::Vector3f ** border_directions_
boost::shared_ptr< RangeImageBorderExtractor > Ptr
Extract obstacle borders from range images, meaning positions where there is a transition from foregr...
float * getBorderScoresBottom()
const RangeImage * range_image_
bool hasRangeImage() const
float * getBorderScoresRight()
float * getBorderScoresLeft()
Feature represents the base feature class.
Eigen::Vector3f neighborhood_mean_no_jumps
Feature< PointWithRange, BorderDescription > BaseClass
Eigen::Vector3f eigen_values_no_jumps
ShadowBorderIndices ** getShadowBorderInformations()
ShadowBorderIndices ** shadow_border_informations_
Eigen::Vector3f ** getBorderDirections()
LocalSurface ** getSurfaceStructure()
Parameters & getParameters()
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
PointCloud represents the base class in PCL for storing collections of 3D points. ...
Eigen::Vector3f eigen_values
boost::shared_ptr< const RangeImageBorderExtractor > ConstPtr
int pixel_radius_principal_curvature
A structure to store if a point in a range image lies on a border between an obstacle and the backgro...
float * surface_change_scores_
PointCloudOut * border_descriptions_