00001 #ifndef __MI_RECOGNITION_H
00002 #define __MI_RECOGNITION_H
00003
00004 #include <map>
00005 #include <mimas/mm_image.h>
00006 #include <mimas/mm_object.h>
00007 #include <mimas/mm_xml_reference.h>
00008 #include <vector>
00009 #include "calibration.hh"
00010 #include "mi_object_type.hh"
00011 #include "mi_scene.hh"
00012 #include "recognition_method.hh"
00013
00016
00017
00023 class mi_recognition: public mimas::mm_object
00024 {
00025 public:
00032 mi_recognition( const mimas::mm_xml_reference< XalanElement >
00033 &configuration, bool _verbose );
00042 void recognise( const mimas::mm_image< unsigned char > &image,
00043 double timestamp, mi_scene_ptr scene ) const;
00047 calibration_ptr get_calibration(void) { return calib; }
00053 std::map< std::string, mi_object_type_ptr > &get_object_types(void)
00054 { return object_types; }
00055
00056
00057
00058
00059
00073 virtual bool human_vision( const std::string &type,
00074 const mimas::mm_image< unsigned char > &image,
00075 double timestamp, double *angle,
00076 int *x, int *y ) const;
00077 protected:
00083 void remove_objects( const std::string &method,
00084 mi_scene_ptr scene ) const;
00091 void reschedule( const std::string &method,
00092 mi_scene_ptr scene ) const;
00098 void take_best_matches( std::vector< match > &matches,
00099 double timestamp,
00100 mi_scene_ptr scene,
00101 vision_type method ) const;
00103 calibration_ptr calib;
00105 std::map< std::string, recognition_method_ptr > methods;
00107 std::map< std::string, mi_object_type_ptr > object_types;
00109 bool verbose;
00110 };
00111
00113 typedef boost::shared_ptr< mi_recognition > mi_recognition_ptr;
00114
00116
00117 #endif