39 #ifndef PCL_INTEGRAL_IMAGE2D_H_
40 #define PCL_INTEGRAL_IMAGE2D_H_
46 template <
typename DataType>
77 typedef unsigned short Type;
84 typedef unsigned char Type;
105 template <
class DataType,
unsigned Dimension>
110 typedef Eigen::Matrix<typename IntegralImageTypeTraits<DataType>::IntegralType, Dimension, 1>
ElementType;
117 first_order_integral_image_ (),
118 second_order_integral_image_ (),
119 finite_values_integral_image_ (),
122 compute_second_order_integral_images_ (compute_second_order_integral_images)
145 unsigned width,
unsigned height,
unsigned element_stride,
unsigned row_stride);
154 getFirstOrderSum (
unsigned start_x,
unsigned start_y,
unsigned width,
unsigned height)
const;
163 getFirstOrderSumSE (
unsigned start_x,
unsigned start_y,
unsigned end_x,
unsigned end_y)
const;
172 getSecondOrderSum (
unsigned start_x,
unsigned start_y,
unsigned width,
unsigned height)
const;
181 getSecondOrderSumSE (
unsigned start_x,
unsigned start_y,
unsigned end_x,
unsigned end_y)
const;
202 typedef Eigen::Matrix<typename IntegralImageTypeTraits<DataType>::Type, Dimension, 1> InputType;
210 computeIntegralImages (
const DataType * data,
unsigned row_stride,
unsigned element_stride);
212 std::vector<ElementType, Eigen::aligned_allocator<ElementType> > first_order_integral_image_;
213 std::vector<SecondOrderType, Eigen::aligned_allocator<SecondOrderType> > second_order_integral_image_;
214 std::vector<unsigned> finite_values_integral_image_;
222 bool compute_second_order_integral_images_;
228 template <
class DataType>
240 first_order_integral_image_ (),
241 second_order_integral_image_ (),
242 finite_values_integral_image_ (),
243 width_ (1), height_ (1),
244 compute_second_order_integral_images_ (compute_second_order_integral_images)
261 unsigned width,
unsigned height,
unsigned element_stride,
unsigned row_stride);
270 getFirstOrderSum (
unsigned start_x,
unsigned start_y,
unsigned width,
unsigned height)
const;
279 getFirstOrderSumSE (
unsigned start_x,
unsigned start_y,
unsigned end_x,
unsigned end_y)
const;
288 getSecondOrderSum (
unsigned start_x,
unsigned start_y,
unsigned width,
unsigned height)
const;
297 getSecondOrderSumSE (
unsigned start_x,
unsigned start_y,
unsigned end_x,
unsigned end_y)
const;
326 computeIntegralImages (
const DataType * data,
unsigned row_stride,
unsigned element_stride);
328 std::vector<ElementType, Eigen::aligned_allocator<ElementType> > first_order_integral_image_;
329 std::vector<SecondOrderType, Eigen::aligned_allocator<SecondOrderType> > second_order_integral_image_;
330 std::vector<unsigned> finite_values_integral_image_;
338 bool compute_second_order_integral_images_;
344 #endif // PCL_INTEGRAL_IMAGE2D_H_