44 using namespace mrpt::utils;
45 using namespace mrpt::math;
49 class CMatchedFeatureList;
97 uint16_t nTimesNotSeen;
98 uint16_t nTimesLastSeen;
103 deque<
double> multiScales;
104 deque<vector<
double> > multiOrientations;
105 deque<vector<vector<int32_t> > > multiHashCoeffs;
106 bool isPointFeature() const;
128 return (multiSIFTDescriptors.size() > 0 && multiSIFTDescriptors[0].size() > 0);
142 float patchCorrelationTo(
const CFeature &oFeature)
const;
151 float descriptorSIFTDistanceTo(
const CFeature &oFeature,
bool normalize_distances =
true )
const;
154 float descriptorSURFDistanceTo(
const CFeature &oFeature,
bool normalize_distances =
true )
const;
157 float descriptorSpinImgDistanceTo(
const CFeature &oFeature,
bool normalize_distances =
true )
const;
164 float descriptorPolarImgDistanceTo(
167 bool normalize_distances =
true )
const;
174 float descriptorLogPolarImgDistanceTo(
177 bool normalize_distances =
true )
const;
191 void saveToTextFile(
const std::string &filename,
bool APPEND =
false );
200 void dumpToConsole()
const;
214 static float internal_distanceBetweenPolarImages(
218 bool normalize_distances,
219 bool dont_shift_angle );
241 void saveToTextFile(
const std::string &fileName,
bool APPEND =
false );
257 void getByMultiIDs(
const vector<TFeatureID> &IDs, vector<CFeaturePtr> &out, vector<int> &outIndex )
const;
266 CFeaturePtr nearest(
const float x,
const float y,
double &max_dist )
const;
297 inline bool empty()
const {
return m_feats.empty(); }
298 inline size_t size()
const {
return m_feats.size(); }
300 inline void clear() { m_feats.clear(); mark_kdtree_as_outdated(); }
301 inline void resize(
size_t N) { m_feats.resize(N); mark_kdtree_as_outdated(); }
305 inline CFeaturePtr & operator [](
const unsigned int index) {
return m_feats[index]; }
306 inline const CFeaturePtr & operator [](
const unsigned int index)
const {
return m_feats[index]; }
320 if (dim==0)
return m_feats[idx]->x;
321 else return m_feats[idx]->y;
325 inline float kdtree_distance(
const float *p1,
const size_t idx_p2,
size_t size)
const
329 const float d0 = p1[0] - m_feats[idx_p2]->x;
330 const float d1 = p1[1] - m_feats[idx_p2]->y;
337 template <
typename BBOX>
345 inline float getFeatureX(
size_t i)
const {
return m_feats[i]->x; }
346 inline float getFeatureY(
size_t i)
const {
return m_feats[i]->y; }
349 inline bool isPointFeature(
size_t i)
const {
return m_feats[i]->isPointFeature(); }
350 inline float getScale(
size_t i)
const {
return m_feats[i]->scale; }
360 inline void setScale(
size_t i,
float s) { m_feats[i]->scale=s; }
395 void updateMaxID(
const TListIdx &idx );
402 setLeftMaxID(leftID);
403 setRightMaxID(rightID);
423 using namespace ::mrpt::vision;