libfovis
intensity_descriptor.hpp
1 #ifndef __fovis_gray_descriptor_hpp__
2 #define __fovis_gray_descriptor_hpp__
3 
4 #include <inttypes.h>
5 #include <stdlib.h>
6 
7 namespace fovis
8 {
9 
10 class KeypointData;
11 
18  public:
24  IntensityDescriptorExtractor(int raw_gray_stride, int feature_window_size)
25  : _raw_gray_stride(raw_gray_stride),
26  _feature_window_size(feature_window_size) {
27  initialize();
28  }
29 
30  virtual ~IntensityDescriptorExtractor () {
31  delete[] _descriptor_index_offsets;
32  free(_descriptor_brightness_offset);
33  }
34 
42  void populateDescriptorInterp(uint8_t *image,
43  float x, float y,
44  uint8_t* descriptor) const;
45 
50  void populateDescriptorAligned(uint8_t *image,
51  int x, int y,
52  uint8_t* descriptor) const;
53 
63  void populateDescriptorsInterp(uint8_t* image,
64  const KeypointData* keypoints,
65  int num_keypoints,
66  uint8_t* descriptors) const;
67 
77  void populateDescriptorsAligned(uint8_t* image,
78  const KeypointData* keypoints,
79  int num_keypoints,
80  uint8_t* descriptors) const;
81 
87  int getDescriptorStride() const {
88  return _descriptor_stride;
89  }
90 
95  const int* getDescriptorIndexOffsets() const {
96  return _descriptor_index_offsets;
97  }
98 
102  int getDescriptorLength() const {
103  return _descriptor_len;
104  }
105 
106  private:
109 
110  void initialize();
111  void normalizeDescriptor(uint8_t* desc) const;
112 
113  int _raw_gray_stride;
114 
115  int _num_descriptor_pad_bytes;
116  uint8_t* _descriptor_brightness_offset;
117  int _brightess_offset_num_sse_ops;
118 
119  int _descriptor_len;
120  int _feature_window_size;
121  int _descriptor_stride;
122  int* _descriptor_index_offsets;
123 
124 };
125 
126 } /* */
127 #endif
IntensityDescriptorExtractor(int raw_gray_stride, int feature_window_size)
Definition: intensity_descriptor.hpp:24
Extracts mean-normalized intensity patch around a pixel.
Definition: intensity_descriptor.hpp:17
const int * getDescriptorIndexOffsets() const
Definition: intensity_descriptor.hpp:95
int getDescriptorStride() const
Definition: intensity_descriptor.hpp:87
quick and dirty profiling tool.inspired by the matlab tic/toc command
Definition: camera_intrinsics.hpp:6
void populateDescriptorInterp(uint8_t *image, float x, float y, uint8_t *descriptor) const
void populateDescriptorAligned(uint8_t *image, int x, int y, uint8_t *descriptor) const
int getDescriptorLength() const
Definition: intensity_descriptor.hpp:102
void populateDescriptorsInterp(uint8_t *image, const KeypointData *keypoints, int num_keypoints, uint8_t *descriptors) const
void populateDescriptorsAligned(uint8_t *image, const KeypointData *keypoints, int num_keypoints, uint8_t *descriptors) const