Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

vsrl_region_disparity.h

Go to the documentation of this file.
00001 #ifndef vsrl_region_disparity_h_
00002 #define vsrl_region_disparity_h_
00003 //:
00004 // \file
00005 //
00006 // \brief Routines to calculate disparity based on regions rather than pixels.
00007 //
00008 // The routine takes a form of region segmentation as input.
00009 // The segmentation can be vtol_intensity_faces or vdgl_digital_regions.
00010 // A disparity map for the image is also taken as input.
00011 // The algorithm takes the average of the disparity in each region and
00012 // assigns it to each pixel in the region.
00013 //
00014 // \author G.W. Brooksby
00015 // \date 09/13/03, 9/17/03
00016 // Written at ORD on two LONG layovers...
00017 
00018 #include <vil1/vil1_image.h>
00019 #include <vil1/vil1_memory_image_of.h>
00020 #include <vdgl/vdgl_digital_region.h>
00021 #include <vtol/vtol_intensity_face_sptr.h>
00022 
00023 class vsrl_region_disparity
00024 {
00025   enum region_type{UNDEFINED=0, INTENSITY_FACE, DIGITAL_REGION};
00026  public:
00027   vsrl_region_disparity();
00028   vsrl_region_disparity(vil1_image* li, vil1_image* ri);
00029   ~vsrl_region_disparity();
00030 
00031   bool Execute();
00032   void SetLeftImage(vil1_image* li){l_img_ = li;}
00033   void SetRightImage(vil1_image* ri) {r_img_ = ri;}
00034   void SetDisparityImage(vil1_memory_image_of<unsigned char>* di) {d_img_ = di;}
00035   vcl_vector<vtol_intensity_face_sptr>* GetIFRegions() {return if_regions_;}
00036   vcl_vector<vdgl_digital_region*>* GetDigitalRegions() {return digi_regions_;}
00037   void SetRegions(vcl_vector<vtol_intensity_face_sptr>* regs);
00038   void SetRegions(vcl_vector<vdgl_digital_region*>* regs);
00039   vil1_memory_image_of<double>* GetRegionDisparities() {return reg_disp_img_;}
00040 
00041  private:
00042   void init();
00043   vil1_image* l_img_; // Left image
00044   vil1_image* r_img_; // Right image
00045   vil1_memory_image_of<unsigned char>* d_img_; // Disparity image
00046   vil1_memory_image_of<double>* reg_disp_img_; // Newly calculated disparity image
00047   vcl_vector<vtol_intensity_face_sptr>* if_regions_; // Intensity Face Regions
00048   vcl_vector<vdgl_digital_region*>* digi_regions_; // Digital Regions
00049   bool run_digital_regions();
00050   bool run_intensity_faces();
00051   int region_type_;
00052 };
00053 
00054 #endif // vsrl_region_disparity_h_

Generated on Thu Jan 10 14:48:24 2008 for contrib/gel/vsrl by  doxygen 1.4.4