52 #ifndef __OPENCV_OPENFABMAP_H_
53 #define __OPENCV_OPENFABMAP_H_
78 queryIdx(-1), imgIdx(-1), likelihood(-DBL_MAX), match(-DBL_MAX) {
80 IMatch(
int _queryIdx,
int _imgIdx,
double _likelihood,
double _match) :
81 queryIdx(_queryIdx), imgIdx(_imgIdx), likelihood(_likelihood), match(
92 return match < m.
match;
117 virtual void addTraining(
const Mat& queryImgDescriptor);
118 virtual void addTraining(
const vector<Mat>& queryImgDescriptors);
121 virtual void add(
const Mat& queryImgDescriptor);
122 virtual void add(
const vector<Mat>& queryImgDescriptors);
125 const vector<Mat>& getTrainingImgDescriptors()
const;
126 const vector<Mat>& getTestImgDescriptors()
const;
130 vector<IMatch>& matches,
bool addQuery =
false,
133 const Mat& testImgDescriptors, vector<IMatch>& matches,
136 const vector<Mat>& testImgDescriptors,
137 vector<IMatch>& matches,
const Mat&
mask =
Mat());
138 void compare(
const vector<Mat>& queryImgDescriptors, vector<
141 void compare(
const vector<Mat>& queryImgDescriptors,
142 const vector<Mat>& testImgDescriptors,
143 vector<IMatch>& matches,
const Mat&
mask =
Mat());
147 void compareImgDescriptor(
const Mat& queryImgDescriptor,
148 int queryIndex,
const vector<Mat>& testImgDescriptors,
149 vector<IMatch>& matches);
151 void addImgDescriptor(
const Mat& queryImgDescriptor);
155 virtual void getLikelihoods(
const Mat& queryImgDescriptor,
156 const vector<Mat>& testImgDescriptors,
157 vector<IMatch>& matches);
158 virtual double getNewPlaceLikelihood(
const Mat& queryImgDescriptor);
161 void normaliseDistribution(vector<IMatch>& matches);
165 double Pzq(
int q,
bool zq);
166 double PzqGzpq(
int q,
bool zq,
bool zpq);
169 double PzqGeq(
bool zq,
bool eq);
170 double PeqGL(
int q,
bool Lzq,
bool eq);
171 double PzqGL(
int q,
bool zq,
bool zpq,
bool Lzq);
172 double PzqGzpqL(
int q,
bool zq,
bool zpq,
bool Lzq);
206 void getLikelihoods(
const Mat& queryImgDescriptor,
const vector<
207 Mat>& testImgDescriptors, vector<IMatch>& matches);
217 int flags,
int numSamples = 0,
int precision = 6);
222 void getLikelihoods(
const Mat& queryImgDescriptor,
const vector<
223 Mat>& testImgDescriptors, vector<IMatch>& matches);
239 int numSamples = 0,
double rejectionThreshold = 1e-8,
double PsGd =
240 1e-8,
int bisectionStart = 512,
int bisectionIts = 9);
246 void getLikelihoods(
const Mat& queryImgDescriptor,
const vector<
247 Mat>& testImgDescriptors, vector<IMatch>& matches);
252 q(0), info(0),
V(0),
M(0) {
256 q(_q), info(_info),
V(0),
M(0) {
265 return info < w.
info;
271 void setWordStatistics(
const Mat& queryImgDescriptor, multiset<WordStats>& wordData);
272 double limitbisection(
double v,
double m);
273 double bennettInequality(
double v,
double m,
double delta);
274 static bool compInfo(
const WordStats&
first,
const WordStats&
second);
298 void addTraining(
const vector<Mat>& queryImgDescriptors);
300 void add(
const Mat& queryImgDescriptors) {
303 void add(
const vector<Mat>& queryImgDescriptors);
308 void getLikelihoods(
const Mat& queryImgDescriptor,
const vector<
309 Mat>& testImgDescriptors, vector<IMatch>& matches);
310 double getNewPlaceLikelihood(
const Mat& queryImgDescriptor);
313 void getIndexLikelihoods(
const Mat& queryImgDescriptor, vector<
314 double>& defaults,
map<
int, vector<int> >& invertedMap,
315 vector<IMatch>& matches);
316 void addToIndex(
const Mat& queryImgDescriptor,
317 vector<double>& defaults,
318 map<
int, vector<int> >& invertedMap);
321 vector<double> d1, d2, d3,
d4;
344 void add(
const Mat& imgDescriptor);
345 void add(
const vector<Mat>& imgDescriptors);
347 const vector<Mat>& getImgDescriptors()
const;
349 Mat make(
double infoThreshold = 0.0);
352 vector<Mat> imgDescriptors;
353 Mat mergedImgDescriptors;
355 typedef struct info {
362 double P(
int a,
bool za);
363 double JP(
int a,
bool za,
int b,
bool zb);
364 double CP(
int a,
bool za,
int b,
bool zb);
367 void createBaseEdges(list<info>&
edges,
double infoThreshold);
368 double calcMutInfo(
int word1,
int word2);
369 static bool sortInfoScores(
const info&
first,
const info&
second);
372 bool reduceEdgesToMinSpan(list<info>& edges);
375 Mat buildTree(
int root_word, list<info> &edges);
376 void recAddToTree(
Mat &cltree,
int q,
int pq,
377 list<info> &remaining_edges);
378 vector<int> extractChildren(list<info> &remaining_edges,
int q);
392 virtual Mat cluster()
const;
CvArr CvPoint2D32f double M
Definition: imgproc_c.h:186
WordStats()
Definition: openfabmap.hpp:251
CvArr * edges
Definition: imgproc_c.h:555
vector< Mat > trainingImgDescriptors
Definition: openfabmap.hpp:177
double PzGNe
Definition: openfabmap.hpp:183
map< int, vector< int > > testInvertedMap
Definition: openfabmap.hpp:330
Definition: openfabmap.hpp:198
vector< vector< int > > children
Definition: openfabmap.hpp:322
int queryIdx
Definition: openfabmap.hpp:85
Definition: openfabmap.hpp:236
int int int flags
Definition: highgui_c.h:186
void add(const Mat &queryImgDescriptors)
Definition: openfabmap.hpp:300
WordStats(int _q, double _info)
Definition: openfabmap.hpp:255
vector< IMatch > priorMatches
Definition: openfabmap.hpp:179
Definition: features2d.hpp:1531
Definition: openfabmap.hpp:338
double sFactor
Definition: openfabmap.hpp:187
int flags
Definition: openfabmap.hpp:189
Definition: openfabmap.hpp:250
GLenum GLsizei GLenum GLenum const GLvoid * table
double PsGd
Definition: openfabmap.hpp:277
int q
Definition: openfabmap.hpp:259
virtual void add(const Mat &queryImgDescriptor)
Mat clTree
Definition: openfabmap.hpp:176
int bisectionIts
Definition: openfabmap.hpp:280
vector< double > trainingDefaults
Definition: openfabmap.hpp:326
GLint * first
Definition: legacy.hpp:1133
GLdouble GLdouble GLdouble GLdouble q
bool operator<(const IMatch &m) const
Definition: openfabmap.hpp:91
CvSize int int int CvPoint int delta
Definition: core_c.h:1427
virtual void addTraining(const Mat &queryImgDescriptor)
double likelihood
Definition: openfabmap.hpp:88
int bisectionStart
Definition: openfabmap.hpp:279
IMatch()
Definition: openfabmap.hpp:77
GLboolean GLboolean GLboolean b
Definition: legacy.hpp:633
The n-dimensional matrix class.
Definition: core.hpp:1688
double V
Definition: openfabmap.hpp:261
const CvArr const CvArr * V
Definition: core_c.h:733
const CvArr CvSeq CvSeq ** descriptors
Definition: compat.hpp:647
vector< double > testDefaults
Definition: openfabmap.hpp:329
vector< Mat > testImgDescriptors
Definition: openfabmap.hpp:178
double clusterSize
Definition: openfabmap.hpp:397
void addTraining(const Mat &queryImgDescriptors)
Definition: openfabmap.hpp:295
double rejectionThreshold
Definition: openfabmap.hpp:278
double Pnew
Definition: openfabmap.hpp:184
Definition: openfabmap.hpp:100
GLboolean GLboolean GLboolean GLboolean a
Definition: legacy.hpp:633
map< int, vector< int > > trainingInvertedMap
Definition: openfabmap.hpp:327
Definition: openfabmap.hpp:386
double M
Definition: openfabmap.hpp:262
int precision
Definition: openfabmap.hpp:229
double mBias
Definition: openfabmap.hpp:186
int int int * second
Definition: legacy.hpp:1115
Definition: openfabmap.hpp:75
::max::max int
Definition: functional.hpp:324
GLubyte GLubyte GLubyte GLubyte w
CV_EXPORTS_W void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1)
adds one matrix to another (dst = src1 + src2)
vector< double > d4
Definition: openfabmap.hpp:321
Definition: openfabmap.hpp:214
double info
Definition: openfabmap.hpp:260
IMatch(int _queryIdx, int _imgIdx, double _likelihood, double _match)
Definition: openfabmap.hpp:80
Definition: openfabmap.hpp:287
GLenum GLint GLuint mask
Definition: tracking.hpp:132
CV_EXPORTS_W void compare(InputArray src1, InputArray src2, OutputArray dst, int cmpop)
compares elements of two arrays (dst = src1 src2)
CvFileNode * map
Definition: core_c.h:1584
int numSamples
Definition: openfabmap.hpp:190
double match
Definition: openfabmap.hpp:89
int imgIdx
Definition: openfabmap.hpp:86
bool operator<(const WordStats &w) const
Definition: openfabmap.hpp:264
short float uchar uchar uchar uchar uchar ushort int uchar ushort int float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float float int int int float int int int float int CV_CUDEV_IMPLEMENT_VEC_BINARY_OP char CV_CUDEV_IMPLEMENT_VEC_BINARY_OP ushort CV_CUDEV_IMPLEMENT_VEC_BINARY_OP short CV_CUDEV_IMPLEMENT_VEC_BINARY_OP int CV_CUDEV_IMPLEMENT_VEC_BINARY_OP uint CV_CUDEV_IMPLEMENT_VEC_BINARY_OP float CV_CUDEV_IMPLEMENT_VEC_BINARY_OP double int int uint double
Definition: vec_math.hpp:432
double PzGe
Definition: openfabmap.hpp:182