00001 00002 #ifndef INTERPOLATINGIMAGECOMPOSER_HPP_ 00003 #define INTERPOLATINGIMAGECOMPOSER_HPP_ 00004 #define BOOST_DISABLE_ASSERTS 00005 00006 #include <boost/shared_ptr.hpp> 00007 #include <boost/shared_array.hpp> 00008 #include <boost/multi_array.hpp> 00009 #include <vector> 00010 #include <math.h> 00011 #include "../common_defs.hpp" 00012 #include "../RealCamera.hpp" 00013 #include "ImageComposer.hpp" 00014 00015 namespace virtual_camera { 00016 00017 00024 class InterpolatingImageComposer: public ImageComposer { 00025 private: 00026 RealCameraPtrListPtr realCameras; 00027 boost::shared_array<float> weightCache; 00028 uint cacheSize; 00029 std::vector<bool> camsNeeded; 00030 std::vector<cv_bridge::CvImageConstPtr> camsImg; 00031 std::vector<TableP2ConstPtr> camsPos; 00032 00033 00034 void prepareRealCameraImages(const std::string & encoding); 00035 public: 00036 00037 00044 InterpolatingImageComposer(const RealCameraPtrListPtr & realCameras); 00045 00046 00047 void refreshCache(uint rows, uint cols); 00048 void compose(const cv_bridge::CvImagePtr & target, const std::string & encoding); 00049 }; 00050 00051 00052 } 00053 00054 00055 #endif /* INTERPOLATINGIMAGECOMPOSER_HPP_ */