Loading...
Searching...
No Matches
organized_edge_detection.h
/*
* Software License Agreement (BSD License)
*
* Point Cloud Library (PCL) - www.pointclouds.org
* Copyright (c) 2012-, Open Perception, Inc.
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the copyright holder(s) nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#pragma once
#include <pcl/pcl_base.h>
#include <pcl/PointIndices.h>
namespace pcl
{
/** \brief OrganizedEdgeBase, OrganizedEdgeFromRGB, OrganizedEdgeFromNormals,
* and OrganizedEdgeFromRGBNormals find 3D edges from an organized point
* cloud data. Given an organized point cloud, they will output a PointCloud
* of edge labels and a vector of PointIndices.
* OrganizedEdgeBase accepts PCL_XYZ_POINT_TYPES and returns EDGELABEL_NAN_BOUNDARY, EDGELABEL_OCCLUDING, and EDGELABEL_OCCLUDED.
* OrganizedEdgeFromRGB accepts PCL_RGB_POINT_TYPES and returns EDGELABEL_NAN_BOUNDARY, EDGELABEL_OCCLUDING, EDGELABEL_OCCLUDED, and EDGELABEL_RGB_CANNY.
* OrganizedEdgeFromNormals accepts PCL_XYZ_POINT_TYPES with PCL_NORMAL_POINT_TYPES and returns EDGELABEL_NAN_BOUNDARY, EDGELABEL_OCCLUDING, EDGELABEL_OCCLUDED, and EDGELABEL_HIGH_CURVATURE.
* OrganizedEdgeFromRGBNormals accepts PCL_RGB_POINT_TYPES with PCL_NORMAL_POINT_TYPES and returns EDGELABEL_NAN_BOUNDARY, EDGELABEL_OCCLUDING, EDGELABEL_OCCLUDED, EDGELABEL_HIGH_CURVATURE, and EDGELABEL_RGB_CANNY.
*
* \author Changhyun Choi
*/
template <typename PointT, typename PointLT>
class OrganizedEdgeBase : public PCLBase<PointT>
{
using PointCloud = pcl::PointCloud<PointT>;
using PointCloudPtr = typename PointCloud::Ptr;
using PointCloudConstPtr = typename PointCloud::ConstPtr;
using PointCloudL = pcl::PointCloud<PointLT>;
using PointCloudLPtr = typename PointCloudL::Ptr;
using PointCloudLConstPtr = typename PointCloudL::ConstPtr;
public:
using Ptr = shared_ptr<OrganizedEdgeBase<PointT, PointLT> >;
using ConstPtr = shared_ptr<const OrganizedEdgeBase<PointT, PointLT> >;
using PCLBase<PointT>::input_;
using PCLBase<PointT>::indices_;
using PCLBase<PointT>::initCompute;
using PCLBase<PointT>::deinitCompute;
/** \brief Constructor for OrganizedEdgeBase */
OrganizedEdgeBase ()
:
detecting_edge_types_ (EDGELABEL_NAN_BOUNDARY | EDGELABEL_OCCLUDING | EDGELABEL_OCCLUDED)
{
}
/** \brief Destructor for OrganizedEdgeBase */
~OrganizedEdgeBase () override = default;
/** \brief Perform the 3D edge detection (edges from depth discontinuities)
* \param[out] labels a PointCloud of edge labels
* \param[out] label_indices a vector of PointIndices corresponding to each edge label
*/
void
compute (pcl::PointCloud<PointLT>& labels, std::vector<pcl::PointIndices>& label_indices) const;
/** \brief Set the tolerance in meters for the relative difference in depth values between neighboring points.
* e.g. If a point has a depth (z) value of 2.0 meters, a neighboring point is discontinuous if its depth differs by > 2.0 * th. */
inline void
setDepthDisconThreshold (const float th)
{
th_depth_discon_ = th;
}
/** \brief Get the tolerance in meters for the relative difference in depth values between neighboring points.
* e.g. If a point has a depth (z) value of 2.0 meters, a neighboring point is discontinuous if its depth differs by > 2.0 * th. */
inline float
getDepthDisconThreshold () const
{
return (th_depth_discon_);
}
/** \brief Set the max search distance for deciding occluding and occluded edges. */
inline void
setMaxSearchNeighbors (const int max_dist)
{
max_search_neighbors_ = max_dist;
}
/** \brief Get the max search distance for deciding occluding and occluded edges. */
inline int
getMaxSearchNeighbors () const
{
return (max_search_neighbors_);
}
/** \brief Set the detecting edge types. */
inline void
setEdgeType (int edge_types)
{
detecting_edge_types_ = edge_types;
}
/** \brief Get the detecting edge types. */
inline int
getEdgeType () const
{
return detecting_edge_types_;
}
enum {EDGELABEL_NAN_BOUNDARY=1, EDGELABEL_OCCLUDING=2, EDGELABEL_OCCLUDED=4, EDGELABEL_HIGH_CURVATURE=8, EDGELABEL_RGB_CANNY=16};
static const int num_of_edgetype_ = 5;
protected:
/** \brief Perform the 3D edge detection (edges from depth discontinuities) and assign point indices for each edge label
* \param[out] labels a PointCloud of edge labels
*/
void
extractEdges (pcl::PointCloud<PointLT>& labels) const;
/** \brief Assign point indices for each edge label
* \param[out] labels a PointCloud of edge labels
* \param[out] label_indices a vector of PointIndices corresponding to each edge label
*/
void
assignLabelIndices (pcl::PointCloud<PointLT>& labels, std::vector<pcl::PointIndices>& label_indices) const;
struct Neighbor
{
Neighbor (int dx, int dy, int didx)
: d_x (dx)
, d_y (dy)
, d_index (didx)
{}
int d_x;
int d_y;
int d_index; // = dy * width + dx: pre-calculated
};
/** \brief The tolerance in meters for the relative difference in depth values between neighboring points
* (The default value is set for .02 meters and is adapted with respect to depth value linearly.
* e.g. If a point has a depth (z) value of 2.0 meters, a neighboring point is discontinuous if its depth differs by > 2.0 * th. */
float th_depth_discon_{0.02f};
/** \brief The max search distance for deciding occluding and occluded edges */
int max_search_neighbors_{50};
/** \brief The bit encoded value that represents edge types to detect */
int detecting_edge_types_;
};
template <typename PointT, typename PointLT>
class OrganizedEdgeFromRGB : virtual public OrganizedEdgeBase<PointT, PointLT>
{
using PointCloud = pcl::PointCloud<PointT>;
using PointCloudPtr = typename PointCloud::Ptr;
using PointCloudConstPtr = typename PointCloud::ConstPtr;
using PointCloudL = pcl::PointCloud<PointLT>;
using PointCloudLPtr = typename PointCloudL::Ptr;
using PointCloudLConstPtr = typename PointCloudL::ConstPtr;
public:
using OrganizedEdgeBase<PointT, PointLT>::input_;
using OrganizedEdgeBase<PointT, PointLT>::indices_;
using OrganizedEdgeBase<PointT, PointLT>::initCompute;
using OrganizedEdgeBase<PointT, PointLT>::deinitCompute;
using OrganizedEdgeBase<PointT, PointLT>::detecting_edge_types_;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_NAN_BOUNDARY;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_OCCLUDING;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_OCCLUDED;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_RGB_CANNY;
/** \brief Constructor for OrganizedEdgeFromRGB */
OrganizedEdgeFromRGB ()
: OrganizedEdgeBase<PointT, PointLT> ()
{
this->setEdgeType (EDGELABEL_NAN_BOUNDARY | EDGELABEL_OCCLUDING | EDGELABEL_OCCLUDED | EDGELABEL_RGB_CANNY);
}
/** \brief Destructor for OrganizedEdgeFromRGB */
~OrganizedEdgeFromRGB () override = default;
/** \brief Perform the 3D edge detection (edges from depth discontinuities and RGB Canny edge) and assign point indices for each edge label
* \param[out] labels a PointCloud of edge labels
* \param[out] label_indices a vector of PointIndices corresponding to each edge label
*/
void
compute (pcl::PointCloud<PointLT>& labels, std::vector<pcl::PointIndices>& label_indices) const;
/** \brief Set the low threshold value for RGB Canny edge detection */
inline void
setRGBCannyLowThreshold (const float th)
{
th_rgb_canny_low_ = th;
}
/** \brief Get the low threshold value for RGB Canny edge detection */
inline float
getRGBCannyLowThreshold () const
{
return (th_rgb_canny_low_);
}
/** \brief Set the high threshold value for RGB Canny edge detection */
inline void
setRGBCannyHighThreshold (const float th)
{
th_rgb_canny_high_ = th;
}
/** \brief Get the high threshold value for RGB Canny edge detection */
inline float
getRGBCannyHighThreshold () const
{
return (th_rgb_canny_high_);
}
protected:
/** \brief Perform the 3D edge detection (edges from depth discontinuities and RGB Canny edge)
* \param[out] labels a PointCloud of edge labels
*/
void
extractEdges (pcl::PointCloud<PointLT>& labels) const;
/** \brief The low threshold value for RGB Canny edge detection (default: 40.0) */
float th_rgb_canny_low_{40.0};
/** \brief The high threshold value for RGB Canny edge detection (default: 100.0) */
float th_rgb_canny_high_{100.0};
};
template <typename PointT, typename PointNT, typename PointLT>
class OrganizedEdgeFromNormals : virtual public OrganizedEdgeBase<PointT, PointLT>
{
using PointCloud = pcl::PointCloud<PointT>;
using PointCloudPtr = typename PointCloud::Ptr;
using PointCloudConstPtr = typename PointCloud::ConstPtr;
using PointCloudN = pcl::PointCloud<PointNT>;
using PointCloudNPtr = typename PointCloudN::Ptr;
using PointCloudNConstPtr = typename PointCloudN::ConstPtr;
using PointCloudL = pcl::PointCloud<PointLT>;
using PointCloudLPtr = typename PointCloudL::Ptr;
using PointCloudLConstPtr = typename PointCloudL::ConstPtr;
public:
using OrganizedEdgeBase<PointT, PointLT>::input_;
using OrganizedEdgeBase<PointT, PointLT>::indices_;
using OrganizedEdgeBase<PointT, PointLT>::initCompute;
using OrganizedEdgeBase<PointT, PointLT>::deinitCompute;
using OrganizedEdgeBase<PointT, PointLT>::detecting_edge_types_;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_NAN_BOUNDARY;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_OCCLUDING;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_OCCLUDED;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_HIGH_CURVATURE;
/** \brief Constructor for OrganizedEdgeFromNormals */
OrganizedEdgeFromNormals ()
: OrganizedEdgeBase<PointT, PointLT> ()
, normals_ ()
{
this->setEdgeType (EDGELABEL_NAN_BOUNDARY | EDGELABEL_OCCLUDING | EDGELABEL_OCCLUDED | EDGELABEL_HIGH_CURVATURE);
}
/** \brief Destructor for OrganizedEdgeFromNormals */
~OrganizedEdgeFromNormals () override = default;
/** \brief Perform the 3D edge detection (edges from depth discontinuities and high curvature regions) and assign point indices for each edge label
* \param[out] labels a PointCloud of edge labels
* \param[out] label_indices a vector of PointIndices corresponding to each edge label
*/
void
compute (pcl::PointCloud<PointLT>& labels, std::vector<pcl::PointIndices>& label_indices) const;
/** \brief Provide a pointer to the input normals.
* \param[in] normals the input normal cloud
*/
inline void
setInputNormals (const PointCloudNConstPtr &normals)
{
normals_ = normals;
}
/** \brief Get the input normals. */
inline PointCloudNConstPtr
getInputNormals () const
{
return (normals_);
}
/** \brief Set the low threshold value for high curvature Canny edge detection */
inline void
setHCCannyLowThreshold (const float th)
{
th_hc_canny_low_ = th;
}
/** \brief Get the low threshold value for high curvature Canny edge detection */
inline float
getHCCannyLowThreshold () const
{
return (th_hc_canny_low_);
}
/** \brief Set the high threshold value for high curvature Canny edge detection */
inline void
setHCCannyHighThreshold (const float th)
{
th_hc_canny_high_ = th;
}
/** \brief Get the high threshold value for high curvature Canny edge detection */
inline float
getHCCannyHighThreshold () const
{
return (th_hc_canny_high_);
}
protected:
/** \brief Perform the 3D edge detection (edges from depth discontinuities and high curvature regions)
* \param[out] labels a PointCloud of edge labels
*/
void
extractEdges (pcl::PointCloud<PointLT>& labels) const;
/** \brief A pointer to the input normals */
PointCloudNConstPtr normals_;
/** \brief The low threshold value for high curvature Canny edge detection (default: 0.4) */
float th_hc_canny_low_{0.4f};
/** \brief The high threshold value for high curvature Canny edge detection (default: 1.1) */
float th_hc_canny_high_{1.1f};
};
template <typename PointT, typename PointNT, typename PointLT>
class OrganizedEdgeFromRGBNormals : public OrganizedEdgeFromRGB<PointT, PointLT>, public OrganizedEdgeFromNormals<PointT, PointNT, PointLT>
{
using PointCloud = pcl::PointCloud<PointT>;
using PointCloudPtr = typename PointCloud::Ptr;
using PointCloudConstPtr = typename PointCloud::ConstPtr;
using PointCloudN = pcl::PointCloud<PointNT>;
using PointCloudNPtr = typename PointCloudN::Ptr;
using PointCloudNConstPtr = typename PointCloudN::ConstPtr;
using PointCloudL = pcl::PointCloud<PointLT>;
using PointCloudLPtr = typename PointCloudL::Ptr;
using PointCloudLConstPtr = typename PointCloudL::ConstPtr;
public:
using OrganizedEdgeFromNormals<PointT, PointNT, PointLT>::input_;
using OrganizedEdgeFromNormals<PointT, PointNT, PointLT>::indices_;
using OrganizedEdgeFromNormals<PointT, PointNT, PointLT>::initCompute;
using OrganizedEdgeFromNormals<PointT, PointNT, PointLT>::deinitCompute;
using OrganizedEdgeFromNormals<PointT, PointNT, PointLT>::detecting_edge_types_;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_NAN_BOUNDARY;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_OCCLUDING;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_OCCLUDED;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_HIGH_CURVATURE;
using OrganizedEdgeBase<PointT, PointLT>::EDGELABEL_RGB_CANNY;
/** \brief Constructor for OrganizedEdgeFromRGBNormals */
OrganizedEdgeFromRGBNormals ()
: OrganizedEdgeFromRGB<PointT, PointLT> ()
, OrganizedEdgeFromNormals<PointT, PointNT, PointLT> ()
{
this->setEdgeType (EDGELABEL_NAN_BOUNDARY | EDGELABEL_OCCLUDING | EDGELABEL_OCCLUDED | EDGELABEL_RGB_CANNY | EDGELABEL_HIGH_CURVATURE);
}
/** \brief Destructor for OrganizedEdgeFromRGBNormals */
~OrganizedEdgeFromRGBNormals () override = default;
/** \brief Perform the 3D edge detection (edges from depth discontinuities, RGB Canny edge, and high curvature regions) and assign point indices for each edge label
* \param[out] labels a PointCloud of edge labels
* \param[out] label_indices a vector of PointIndices corresponding to each edge label
*/
void
compute (pcl::PointCloud<PointLT>& labels, std::vector<pcl::PointIndices>& label_indices) const;
};
}
#ifdef PCL_NO_PRECOMPILE
#include <pcl/features/impl/organized_edge_detection.hpp>
#endif
pcl::OrganizedEdgeBase
OrganizedEdgeBase, OrganizedEdgeFromRGB, OrganizedEdgeFromNormals, and OrganizedEdgeFromRGBNormals fi...
Definition organized_edge_detection.h:58
pcl::OrganizedEdgeBase::getEdgeType
int getEdgeType() const
Get the detecting edge types.
Definition organized_edge_detection.h:132
pcl::OrganizedEdgeBase::num_of_edgetype_
static const int num_of_edgetype_
Definition organized_edge_detection.h:138
pcl::OrganizedEdgeBase::th_depth_discon_
float th_depth_discon_
The tolerance in meters for the relative difference in depth values between neighboring points (The d...
Definition organized_edge_detection.h:170
pcl::OrganizedEdgeBase::getMaxSearchNeighbors
int getMaxSearchNeighbors() const
Get the max search distance for deciding occluding and occluded edges.
Definition organized_edge_detection.h:118
pcl::OrganizedEdgeBase::detecting_edge_types_
int detecting_edge_types_
The bit encoded value that represents edge types to detect.
Definition organized_edge_detection.h:176
pcl::OrganizedEdgeBase::OrganizedEdgeBase
OrganizedEdgeBase()
Constructor for OrganizedEdgeBase.
Definition organized_edge_detection.h:76
pcl::OrganizedEdgeBase::assignLabelIndices
void assignLabelIndices(pcl::PointCloud< PointLT > &labels, std::vector< pcl::PointIndices > &label_indices) const
Assign point indices for each edge label.
Definition organized_edge_detection.hpp:67
pcl::OrganizedEdgeBase::getDepthDisconThreshold
float getDepthDisconThreshold() const
Get the tolerance in meters for the relative difference in depth values between neighboring points.
Definition organized_edge_detection.h:104
pcl::OrganizedEdgeBase::~OrganizedEdgeBase
~OrganizedEdgeBase() override=default
Destructor for OrganizedEdgeBase.
pcl::OrganizedEdgeBase::extractEdges
void extractEdges(pcl::PointCloud< PointLT > &labels) const
Perform the 3D edge detection (edges from depth discontinuities) and assign point indices for each ed...
Definition organized_edge_detection.hpp:86
pcl::OrganizedEdgeBase::setEdgeType
void setEdgeType(int edge_types)
Set the detecting edge types.
Definition organized_edge_detection.h:125
pcl::OrganizedEdgeBase::setMaxSearchNeighbors
void setMaxSearchNeighbors(const int max_dist)
Set the max search distance for deciding occluding and occluded edges.
Definition organized_edge_detection.h:111
pcl::OrganizedEdgeBase::compute
void compute(pcl::PointCloud< PointLT > &labels, std::vector< pcl::PointIndices > &label_indices) const
Perform the 3D edge detection (edges from depth discontinuities)
Definition organized_edge_detection.hpp:52
pcl::OrganizedEdgeBase::setDepthDisconThreshold
void setDepthDisconThreshold(const float th)
Set the tolerance in meters for the relative difference in depth values between neighboring points.
Definition organized_edge_detection.h:96
pcl::OrganizedEdgeBase::ConstPtr
shared_ptr< const OrganizedEdgeBase< PointT, PointLT > > ConstPtr
Definition organized_edge_detection.h:69
pcl::OrganizedEdgeBase::Ptr
shared_ptr< OrganizedEdgeBase< PointT, PointLT > > Ptr
Definition organized_edge_detection.h:68
pcl::OrganizedEdgeBase::max_search_neighbors_
int max_search_neighbors_
The max search distance for deciding occluding and occluded edges.
Definition organized_edge_detection.h:173
pcl::OrganizedEdgeBase::EDGELABEL_RGB_CANNY
@ EDGELABEL_RGB_CANNY
Definition organized_edge_detection.h:137
pcl::OrganizedEdgeBase::EDGELABEL_OCCLUDED
@ EDGELABEL_OCCLUDED
Definition organized_edge_detection.h:137
pcl::OrganizedEdgeBase::EDGELABEL_HIGH_CURVATURE
@ EDGELABEL_HIGH_CURVATURE
Definition organized_edge_detection.h:137
pcl::OrganizedEdgeBase::EDGELABEL_NAN_BOUNDARY
@ EDGELABEL_NAN_BOUNDARY
Definition organized_edge_detection.h:137
pcl::OrganizedEdgeBase::EDGELABEL_OCCLUDING
@ EDGELABEL_OCCLUDING
Definition organized_edge_detection.h:137
pcl::OrganizedEdgeFromNormals
Definition organized_edge_detection.h:263
pcl::OrganizedEdgeFromNormals::getInputNormals
PointCloudNConstPtr getInputNormals() const
Get the input normals.
Definition organized_edge_detection.h:317
pcl::OrganizedEdgeFromNormals::compute
void compute(pcl::PointCloud< PointLT > &labels, std::vector< pcl::PointIndices > &label_indices) const
Perform the 3D edge detection (edges from depth discontinuities and high curvature regions) and assig...
Definition organized_edge_detection.hpp:274
pcl::OrganizedEdgeFromNormals::normals_
PointCloudNConstPtr normals_
A pointer to the input normals.
Definition organized_edge_detection.h:358
pcl::OrganizedEdgeFromNormals::setHCCannyLowThreshold
void setHCCannyLowThreshold(const float th)
Set the low threshold value for high curvature Canny edge detection.
Definition organized_edge_detection.h:324
pcl::OrganizedEdgeFromNormals::th_hc_canny_high_
float th_hc_canny_high_
The high threshold value for high curvature Canny edge detection (default: 1.1)
Definition organized_edge_detection.h:364
pcl::OrganizedEdgeFromNormals::setHCCannyHighThreshold
void setHCCannyHighThreshold(const float th)
Set the high threshold value for high curvature Canny edge detection.
Definition organized_edge_detection.h:338
pcl::OrganizedEdgeFromNormals::OrganizedEdgeFromNormals
OrganizedEdgeFromNormals()
Constructor for OrganizedEdgeFromNormals.
Definition organized_edge_detection.h:288
pcl::OrganizedEdgeFromNormals::getHCCannyHighThreshold
float getHCCannyHighThreshold() const
Get the high threshold value for high curvature Canny edge detection.
Definition organized_edge_detection.h:345
pcl::OrganizedEdgeFromNormals::~OrganizedEdgeFromNormals
~OrganizedEdgeFromNormals() override=default
Destructor for OrganizedEdgeFromNormals.
pcl::OrganizedEdgeFromNormals::extractEdges
void extractEdges(pcl::PointCloud< PointLT > &labels) const
Perform the 3D edge detection (edges from depth discontinuities and high curvature regions)
Definition organized_edge_detection.hpp:290
pcl::OrganizedEdgeFromNormals::setInputNormals
void setInputNormals(const PointCloudNConstPtr &normals)
Provide a pointer to the input normals.
Definition organized_edge_detection.h:310
pcl::OrganizedEdgeFromNormals::th_hc_canny_low_
float th_hc_canny_low_
The low threshold value for high curvature Canny edge detection (default: 0.4)
Definition organized_edge_detection.h:361
pcl::OrganizedEdgeFromNormals::getHCCannyLowThreshold
float getHCCannyLowThreshold() const
Get the low threshold value for high curvature Canny edge detection.
Definition organized_edge_detection.h:331
pcl::OrganizedEdgeFromRGB
Definition organized_edge_detection.h:181
pcl::OrganizedEdgeFromRGB::getRGBCannyLowThreshold
float getRGBCannyLowThreshold() const
Get the low threshold value for RGB Canny edge detection.
Definition organized_edge_detection.h:228
pcl::OrganizedEdgeFromRGB::extractEdges
void extractEdges(pcl::PointCloud< PointLT > &labels) const
Perform the 3D edge detection (edges from depth discontinuities and RGB Canny edge)
Definition organized_edge_detection.hpp:242
pcl::OrganizedEdgeFromRGB::getRGBCannyHighThreshold
float getRGBCannyHighThreshold() const
Get the high threshold value for RGB Canny edge detection.
Definition organized_edge_detection.h:242
pcl::OrganizedEdgeFromRGB::OrganizedEdgeFromRGB
OrganizedEdgeFromRGB()
Constructor for OrganizedEdgeFromRGB.
Definition organized_edge_detection.h:202
pcl::OrganizedEdgeFromRGB::th_rgb_canny_high_
float th_rgb_canny_high_
The high threshold value for RGB Canny edge detection (default: 100.0)
Definition organized_edge_detection.h:258
pcl::OrganizedEdgeFromRGB::~OrganizedEdgeFromRGB
~OrganizedEdgeFromRGB() override=default
Destructor for OrganizedEdgeFromRGB.
pcl::OrganizedEdgeFromRGB::setRGBCannyLowThreshold
void setRGBCannyLowThreshold(const float th)
Set the low threshold value for RGB Canny edge detection.
Definition organized_edge_detection.h:221
pcl::OrganizedEdgeFromRGB::setRGBCannyHighThreshold
void setRGBCannyHighThreshold(const float th)
Set the high threshold value for RGB Canny edge detection.
Definition organized_edge_detection.h:235
pcl::OrganizedEdgeFromRGB::th_rgb_canny_low_
float th_rgb_canny_low_
The low threshold value for RGB Canny edge detection (default: 40.0)
Definition organized_edge_detection.h:255
pcl::OrganizedEdgeFromRGB::compute
void compute(pcl::PointCloud< PointLT > &labels, std::vector< pcl::PointIndices > &label_indices) const
Perform the 3D edge detection (edges from depth discontinuities and RGB Canny edge) and assign point ...
Definition organized_edge_detection.hpp:226
pcl::OrganizedEdgeFromRGBNormals
Definition organized_edge_detection.h:369
pcl::OrganizedEdgeFromRGBNormals::compute
void compute(pcl::PointCloud< PointLT > &labels, std::vector< pcl::PointIndices > &label_indices) const
Perform the 3D edge detection (edges from depth discontinuities, RGB Canny edge, and high curvature r...
Definition organized_edge_detection.hpp:332
pcl::OrganizedEdgeFromRGBNormals::~OrganizedEdgeFromRGBNormals
~OrganizedEdgeFromRGBNormals() override=default
Destructor for OrganizedEdgeFromRGBNormals.
pcl::OrganizedEdgeFromRGBNormals::OrganizedEdgeFromRGBNormals
OrganizedEdgeFromRGBNormals()
Constructor for OrganizedEdgeFromRGBNormals.
Definition organized_edge_detection.h:395
pcl::PCLBase
PCL base class.
Definition pcl_base.h:70
pcl::PCLBase::input_
PointCloudConstPtr input_
The input point cloud dataset.
Definition pcl_base.h:147
pcl::PCLBase::indices_
IndicesPtr indices_
A pointer to the vector of point indices to use.
Definition pcl_base.h:150
pcl::PCLBase::initCompute
bool initCompute()
This method should get called before starting the actual computation.
Definition pcl_base.hpp:138
pcl::PCLBase::deinitCompute
bool deinitCompute()
This method should get called after finishing the actual computation.
Definition pcl_base.hpp:175
pcl::PointCloud
PointCloud represents the base class in PCL for storing collections of 3D points.
Definition point_cloud.h:173
pcl::PointCloud::Ptr
shared_ptr< PointCloud< PointT > > Ptr
Definition point_cloud.h:413
pcl::PointCloud::ConstPtr
shared_ptr< const PointCloud< PointT > > ConstPtr
Definition point_cloud.h:414
pcl
Definition convolution.h:46
pcl::OrganizedEdgeBase::Neighbor
Definition organized_edge_detection.h:155
pcl::OrganizedEdgeBase::Neighbor::d_x
int d_x
Definition organized_edge_detection.h:162
pcl::OrganizedEdgeBase::Neighbor::Neighbor
Neighbor(int dx, int dy, int didx)
Definition organized_edge_detection.h:156
pcl::OrganizedEdgeBase::Neighbor::d_index
int d_index
Definition organized_edge_detection.h:164
pcl::OrganizedEdgeBase::Neighbor::d_y
int d_y
Definition organized_edge_detection.h:163
pcl::PointXYZRGB
A point structure representing Euclidean xyz coordinates, and the RGB color.
Definition point_types.hpp:594