40 #ifndef PCL_INTEGRAL_IMAGE2D_H_ 41 #define PCL_INTEGRAL_IMAGE2D_H_ 47 template <
typename DataType>
78 typedef unsigned short Type;
85 typedef unsigned char Type;
106 template <
class DataType,
unsigned Dimension>
111 typedef Eigen::Matrix<typename IntegralImageTypeTraits<DataType>::IntegralType, Dimension, 1>
ElementType;
118 first_order_integral_image_ (),
119 second_order_integral_image_ (),
120 finite_values_integral_image_ (),
123 compute_second_order_integral_images_ (compute_second_order_integral_images)
146 unsigned width,
unsigned height,
unsigned element_stride,
unsigned row_stride);
155 getFirstOrderSum (
unsigned start_x,
unsigned start_y,
unsigned width,
unsigned height)
const;
164 getFirstOrderSumSE (
unsigned start_x,
unsigned start_y,
unsigned end_x,
unsigned end_y)
const;
173 getSecondOrderSum (
unsigned start_x,
unsigned start_y,
unsigned width,
unsigned height)
const;
182 getSecondOrderSumSE (
unsigned start_x,
unsigned start_y,
unsigned end_x,
unsigned end_y)
const;
203 typedef Eigen::Matrix<typename IntegralImageTypeTraits<DataType>::Type, Dimension, 1> InputType;
211 computeIntegralImages (
const DataType * data,
unsigned row_stride,
unsigned element_stride);
213 std::vector<ElementType, Eigen::aligned_allocator<ElementType> > first_order_integral_image_;
214 std::vector<SecondOrderType, Eigen::aligned_allocator<SecondOrderType> > second_order_integral_image_;
215 std::vector<unsigned> finite_values_integral_image_;
223 bool compute_second_order_integral_images_;
229 template <
class DataType>
241 first_order_integral_image_ (),
242 second_order_integral_image_ (),
243 finite_values_integral_image_ (),
244 width_ (1), height_ (1),
245 compute_second_order_integral_images_ (compute_second_order_integral_images)
262 unsigned width,
unsigned height,
unsigned element_stride,
unsigned row_stride);
271 getFirstOrderSum (
unsigned start_x,
unsigned start_y,
unsigned width,
unsigned height)
const;
280 getFirstOrderSumSE (
unsigned start_x,
unsigned start_y,
unsigned end_x,
unsigned end_y)
const;
289 getSecondOrderSum (
unsigned start_x,
unsigned start_y,
unsigned width,
unsigned height)
const;
298 getSecondOrderSumSE (
unsigned start_x,
unsigned start_y,
unsigned end_x,
unsigned end_y)
const;
327 computeIntegralImages (
const DataType * data,
unsigned row_stride,
unsigned element_stride);
329 std::vector<ElementType, Eigen::aligned_allocator<ElementType> > first_order_integral_image_;
330 std::vector<SecondOrderType, Eigen::aligned_allocator<SecondOrderType> > second_order_integral_image_;
331 std::vector<unsigned> finite_values_integral_image_;
339 bool compute_second_order_integral_images_;
343 #include <pcl/features/impl/integral_image2D.hpp> 345 #endif // PCL_INTEGRAL_IMAGE2D_H_
unsigned int IntegralType
virtual ~IntegralImage2D()
Destructor.
unsigned long IntegralType
void setSecondOrderComputation(bool compute_second_order_integral_images)
sets the computation for second order integral images on or off.
SecondOrderType getSecondOrderSum(unsigned start_x, unsigned start_y, unsigned width, unsigned height) const
Compute the second order sum within a given rectangle.
void setInput(const DataType *data, unsigned width, unsigned height, unsigned element_stride, unsigned row_stride)
Set the input data to compute the integral image for.
virtual ~IntegralImage2D()
Destructor.
static const unsigned second_order_size
IntegralImageTypeTraits< DataType >::IntegralType SecondOrderType
IntegralImage2D(bool compute_second_order_integral_images)
Constructor for an Integral Image.
IntegralImage2D(bool compute_second_order_integral_images)
Constructor for an Integral Image.
Eigen::Matrix< typename IntegralImageTypeTraits< DataType >::IntegralType, second_order_size, 1 > SecondOrderType
unsigned getFiniteElementsCount(unsigned start_x, unsigned start_y, unsigned width, unsigned height) const
Compute the number of finite elements within a given rectangle.
ElementType getFirstOrderSum(unsigned start_x, unsigned start_y, unsigned width, unsigned height) const
Compute the first order sum within a given rectangle.
ElementType getFirstOrderSumSE(unsigned start_x, unsigned start_y, unsigned end_x, unsigned end_y) const
Compute the first order sum within a given rectangle.
unsigned getFiniteElementsCountSE(unsigned start_x, unsigned start_y, unsigned end_x, unsigned end_y) const
Compute the number of finite elements within a given rectangle.
Eigen::Matrix< typename IntegralImageTypeTraits< DataType >::IntegralType, Dimension, 1 > ElementType
Determines an integral image representation for a given organized data array.
unsigned long IntegralType
IntegralImageTypeTraits< DataType >::IntegralType ElementType
SecondOrderType getSecondOrderSumSE(unsigned start_x, unsigned start_y, unsigned end_x, unsigned end_y) const
Compute the second order sum within a given rectangle.