sift.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __FIREVISION_CLASSIFIERS_SIFT_H_
00025 #define __FIREVISION_CLASSIFIERS_SIFT_H_
00026
00027 #ifndef HAVE_SIFT
00028 # error SIFT not available, you may not use the SiftClassifier
00029 #endif
00030
00031 #include <classifiers/classifier.h>
00032
00033
00034 namespace fawkes {
00035 class TimeTracker;
00036 }
00037
00038
00039 struct CvMemStorage;
00040 typedef struct _IplImage IplImage;
00041
00042 struct feature;
00043
00044 class SiftClassifier : public Classifier
00045 {
00046 public:
00047 SiftClassifier(const char * features_file,
00048 unsigned int pixel_width, unsigned int pixel_height,
00049 int kdtree_bbf_max_nn_chks = 200, float nn_sq_dist_ratio_thr = 0.49, int flags = 0);
00050
00051 virtual ~SiftClassifier();
00052
00053 virtual std::list< ROI > * classify();
00054
00055 private:
00056
00057 const char ** __features_files;
00058
00059 IplImage *__obj_img;
00060 feature *__obj_features;
00061 int __obj_num_features;
00062
00063 CvMemStorage *__storage;
00064 IplImage *__image;
00065
00066 feature* __img_features;
00067
00068 float __nn_sq_dist_ratio_thr;
00069 int __kdtree_bbf_max_nn_chks;
00070 int __flags;
00071
00072
00073 fawkes::TimeTracker *__tt;
00074 unsigned int __loop_count;
00075 unsigned int __ttc_objconv;
00076 unsigned int __ttc_objfeat;
00077 unsigned int __ttc_imgconv;
00078 unsigned int __ttc_imgfeat;
00079 unsigned int __ttc_matchin;
00080 unsigned int __ttc_roimerg;
00081
00082
00083 };
00084
00085 #endif