00001 #ifndef __REGISTRATION_H 00002 #define __REGISTRATION_H 00003 00004 #include "mimasconfig.h" 00005 00006 #ifdef HAVE_LIBFFTW3 00007 00008 #include "object.h" 00009 #include "image.h" 00010 #include "canny.h" 00011 00012 namespace mimas{ 00013 00016 class reg_param 00017 { 00018 public: 00019 int shift_x; 00020 int shift_y; 00021 double angle; 00022 double scale; 00023 reg_param(int x = 0, int y = 0, double a = 0, double sc = 0) 00024 :shift_x(x),shift_y(y),angle(a),scale(sc){} 00025 }; 00026 00040 class registration_parameters : public object 00041 { 00042 private : 00043 double angle; 00044 double scale; 00045 int shiftx; 00046 int shifty; 00047 00048 public: 00049 void setAngle(double a) {angle = a;} 00050 void setScale(double s) {scale = s;} 00051 void setShift(int x, int y) {shiftx = x; shifty = y;} 00052 00053 double getAngle(){return angle;} 00054 double getScale(){return scale;} 00055 int getShiftx(){return shiftx;} 00056 int getShifty(){return shifty;} 00057 00058 reg_param getRegParam(){return reg_param(shiftx, shifty, angle, scale);} 00059 00060 void registering_images(image<int>& im1, image<int>& im2); 00061 void registering_images_shift_only(image<int>& im1, image<int>& im2); 00062 00063 registration_parameters(void){angle = 0.0; scale = 1.0; shiftx = 0; shifty = 0;} 00064 virtual ~registration_parameters(void) {} 00065 }; 00066 00068 image<int> registration(image<int>& inimage, image<int>& inimage2, reg_param *result_p = NULL, bool with_scale_and_rotation = true); 00069 00076 image<int> registration_with_canny(image<int>& inimage1, image<int>& inimage2,int lwThresh = 40, int highThresh = 110, float stdDev = 1.2 00077 ,reg_param *result_p = NULL, bool with_scale_and_rotation = true); 00078 00079 } 00080 00081 #endif 00082 00083 #endif 00084