00001
00002 #ifndef vil1_memory_image_window_h_
00003 #define vil1_memory_image_window_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007
00008
00009
00010
00011 #include "vil1_memory_image_of.h"
00012 #include <vxl_config.h>
00013
00014 const int vil1_memory_image_window_maxint = 0x07ffffff;
00015
00016
00017
00018
00019 class vil1_memory_image_window
00020 {
00021 public:
00022
00023
00024 vil1_memory_image_window(const vil1_memory_image_of<vxl_byte>& image, int centre_x, int centre_y, int mask_size);
00025
00026
00027
00028 int sum_abs_diff(const vil1_memory_image_of<vxl_byte>& image2,
00029 int centre2_x, int centre2_y,
00030 int early_exit_level = vil1_memory_image_window_maxint);
00031
00032 int sum_sqr_diff(const vil1_memory_image_of<vxl_byte>& image2,
00033 int centre2_x, int centre2_y,
00034 int early_exit_level = vil1_memory_image_window_maxint);
00035
00036 int normalised_sum_abs_diff(const vil1_memory_image_of<vxl_byte>& image2,
00037 int centre2_x, int centre2_y,
00038 double normalise_ratio,
00039 int early_exit_level = vil1_memory_image_window_maxint);
00040
00041 double normalised_cross_correlation(const vil1_memory_image_of<vxl_byte>& image2,
00042 int centre2_x, int centre2_y);
00043
00044 float mean_intensity();
00045
00046 protected:
00047
00048 const vil1_memory_image_of<vxl_byte>& image1_;
00049 int mask_size_;
00050 int mask1_col_index_;
00051 int mask1_row_index_;
00052 int centre1_x_;
00053 int centre1_y_;
00054
00055 void init(int centre_x, int centre_y, int mask_size);
00056
00057 private:
00058
00059 vil1_memory_image_window(const vil1_memory_image_window& that);
00060 vil1_memory_image_window& operator=(const vil1_memory_image_window& that);
00061 };
00062
00063 #endif // vil1_memory_image_window_h_