40#include <pcl/pcl_base.h>
41#include <pcl/point_cloud.h>
44#include <pcl/recognition/dot_modality.h>
45#include <pcl/recognition/point_types.h>
46#include <pcl/recognition/quantized_map.h>
51 template <
typename Po
intInT>
81 gradient_magnitude_threshold_ = threshold;
93 return (dominant_quantized_color_gradients_);
125 std::size_t bin_size_;
127 float gradient_magnitude_threshold_;
138template <
typename Po
intInT>
141 : bin_size_ (
bin_size), gradient_magnitude_threshold_ (80.0f), color_gradients_ (), dominant_quantized_color_gradients_ ()
146template <
typename Po
intInT>
153template <
typename Po
intInT>
159 computeMaxColorGradients ();
162 computeDominantQuantizedGradients ();
169template <
typename Po
intInT>
174 const int width = input_->width;
175 const int height = input_->height;
177 color_gradients_.resize (width*height);
178 color_gradients_.width = width;
179 color_gradients_.height = height;
181 constexpr float pi = std::tan(1.0f)*4;
190 const unsigned char r0 = (*input_)[
index0].r;
191 const unsigned char g0 = (*input_)[
index0].g;
192 const unsigned char b0 = (*input_)[
index0].b;
194 const unsigned char r_c = (*input_)[
index_c].r;
195 const unsigned char g_c = (*input_)[
index_c].g;
196 const unsigned char b_c = (*input_)[
index_c].b;
198 const unsigned char r_r = (*input_)[
index_r].r;
199 const unsigned char g_r = (*input_)[
index_r].g;
200 const unsigned char b_r = (*input_)[
index_r].b;
202 const float r_dx =
static_cast<float> (
r_c) -
static_cast<float> (
r0);
203 const float g_dx =
static_cast<float> (
g_c) -
static_cast<float> (g0);
204 const float b_dx =
static_cast<float> (
b_c) -
static_cast<float> (
b0);
206 const float r_dy =
static_cast<float> (
r_r) -
static_cast<float> (
r0);
207 const float g_dy =
static_cast<float> (
g_r) -
static_cast<float> (g0);
208 const float b_dy =
static_cast<float> (
b_r) -
static_cast<float> (
b0);
244template <
typename Po
intInT>
261 unsigned char *
peak_pointer = dominant_quantized_color_gradients_.getData ();
294 const std::size_t bin_index =
static_cast<std::size_t
> ((angle >= 180 ? angle-180 : angle)/
divisor);
310template <
typename Po
intInT>
346 std::vector<float> values;
430 const std::size_t bin_index =
static_cast<std::size_t
> ((angle >= 180 ? angle-180 : angle)/
divisor);
ColorGradientDOTModality(std::size_t bin_size)
void computeMaxColorGradients()
void setGradientMagnitudeThreshold(const float threshold)
QuantizedMap computeInvariantQuantizedMap(const MaskMap &mask, const RegionXY ®ion)
QuantizedMap & getDominantQuantizedMap()
void computeDominantQuantizedGradients()
virtual void setInputCloud(const typename PointCloudIn::ConstPtr &cloud)
Provide a pointer to the input dataset (overwrites the PCLBase::setInputCloud method)
virtual void processInputData()
virtual ~ColorGradientDOTModality()
Iterator class for point clouds with or without given indices.
PointCloudConstPtr input_
The input point cloud dataset.
shared_ptr< const PointCloud< PointInT > > ConstPtr
unsigned char * getData()
void resize(std::size_t width, std::size_t height)
Defines all the PCL implemented PointT point type structures.
bool operator<(const Candidate &rhs)
A point structure representing Euclidean xyz coordinates, and the intensity value.
Defines a region in XY-space.
int x
x-position of the region.
int width
width of the region.
int y
y-position of the region.
int height
height of the region.