00001 // -*- c++ -*- 00002 // Copyright 2008 Isis Innovation Limited 00003 // 00004 // SmallBlurryImage - A small and blurry representation of an image. 00005 // used by the relocaliser. 00006 00007 #ifndef __SMALLBLURRYIMAGE_H 00008 #define __SMALLBLURRYIMAGE_H 00009 #include <cvd/image.h> 00010 #include <cvd/byte.h> 00011 #include <TooN/se2.h> 00012 #include <TooN/se3.h> 00013 #include "KeyFrame.h" 00014 #include "ATANCamera.h" 00015 00016 class SmallBlurryImage 00017 { 00018 public: 00019 SmallBlurryImage(); 00020 SmallBlurryImage(KeyFrame& kf, double dBlur = 2.5); 00021 void MakeFromKF(KeyFrame& kf, double dBlur = 2.5); 00022 void MakeJacs(); 00023 double ZMSSD(SmallBlurryImage &other); 00024 std::pair<SE2<>,double> IteratePosRelToTarget(SmallBlurryImage &other, int nIterations = 10); 00025 static SE3<> SE3fromSE2(SE2<> se2, ATANCamera camera); 00026 00027 protected: 00028 CVD::Image<CVD::byte> mimSmall; 00029 CVD::Image<float> mimTemplate; 00030 CVD::Image<Vector<2> > mimImageJacs; 00031 bool mbMadeJacs; 00032 static CVD::ImageRef mirSize; 00033 }; 00034 00035 00036 00037 #endif 00038 00039 00040 00041 00042 00043 00044 00045 00046