00001 // -*- c++ -*- 00002 // Copyright 2008 Isis Innovation Limited 00003 // 00004 // SmallBlurryImage-based relocaliser 00005 // 00006 // Each KF stores a small, blurred version of itself; 00007 // Just compare a small, blurred version of the input frame to all the KFs, 00008 // choose the closest match, and then estimate a camera rotation by direct image 00009 // minimisation. 00010 00011 #ifndef __RELOCALISER_H 00012 #define __RELOCALISER_H 00013 #include <TooN/se2.h> 00014 #include "ATANCamera.h" 00015 #include "SmallBlurryImage.h" 00016 00017 #include "Map.h" 00018 00019 00020 class Relocaliser 00021 { 00022 public: 00023 Relocaliser(Map &map, ATANCamera &camera); 00024 bool AttemptRecovery(KeyFrame& k); 00025 SE3<> BestPose(); 00026 00027 protected: 00028 void ScoreKFs(KeyFrame& kCurrentF); 00029 Map &mMap; 00030 ATANCamera mCamera; 00031 int mnBest; 00032 double mdBestScore; 00033 SE2<> mse2; 00034 SE3<> mse3Best; 00035 00036 }; 00037 #endif 00038 00039 00040 00041 00042 00043 00044 00045 00046