00001 #ifndef CORRELATE_SQUARE_REGION_H 00002 #define CORRELATE_SQUARE_REGION_H 00003 00004 #include <boost/numeric/ublas/vector.hpp> 00005 #include <boost/shared_ptr.hpp> 00006 #include <functional> 00007 #include "image.h" 00008 namespace mimas { 00009 template< typename T, class Corr > 00010 class correlate_square_region: public std::binary_function 00011 < boost::numeric::ublas::vector< double >, 00012 boost::numeric::ublas::vector< double >, double > 00013 { 00014 public: 00015 typedef boost::numeric::ublas::vector< double > Vector; 00016 typedef boost::shared_ptr< image< T > > image_ptr; 00017 correlate_square_region( image_ptr aImage1, 00018 image_ptr aImage2, 00019 int aAreaDiv2, 00020 Corr &aCorr ): 00021 image1(aImage1), image2(aImage2), areaDiv2( aAreaDiv2 ), corr(aCorr) { 00022 assert( image1 ); assert( image2 ); assert( areaDiv2 >= 0 ); 00023 } 00024 double operator()( const Vector &a, 00025 const Vector &b ); 00026 protected: 00027 image_ptr image1; 00028 image_ptr image2; 00029 int areaDiv2; 00030 Corr corr; 00031 }; 00032 00033 } 00034 #include "correlate_square_region.tcc" 00035 #endif