1 #ifndef gevd_region_proc_h_ 2 #define gevd_region_proc_h_ 3 //--------------------------------------------------------------------- 4 //: 5 // \file 6 // \brief a processor for extracting expanded resolution regions 7 // 8 // edgel_regions uses a flood fill algorithm and is thus 9 // region labeling is only as localized as one pixel. 10 // In the CAD application, we need sub-pixel details. So 11 // In this algorithm the original image resolution is 12 // expanded using Gaussian interpolation, typically by 13 // a factor of two. Then the resulting regions are 14 // transformed back to original image coordinates. 15 // 16 // \author 17 // J.L. Mundy - April 11, 2001 18 // 19 // \verbatim 20 // Modifications 21 // 8 May 2002 - Peter Vanroose - class name changed from region_proc to gevd_region_proc 22 // \endverbatim 23 // 24 //------------------------------------------------------------------------- 25 #include <iostream> 26 #include <vector> 27 #ifdef _MSC_VER 28 # include <vcl_msvc_warnings.h> 29 #endif 30 #include <gevd/gevd_bufferxy.h> 31 #include <vil1/vil1_image.h> 32 #include <vdgl/vdgl_digital_region.h> 33 #include <gevd/gevd_region_proc_params.h> 34 35 class gevd_region_proc : public gevd_region_proc_params 36 { 37 public: 38 //Constructors/destructor 39 gevd_region_proc(); 40 41 ~gevd_region_proc() override; 42 //Accessors 43 void set_image(vil1_image& image); 44 // void set_roi_proc(lung_roi_proc_ref& roi_proc){roi_proc_ = roi_proc;} 45 46 // vector<gevd_poly_intensity_face_sptr>& get_regions(){return regions_;} get_regions()47 std::vector<vdgl_digital_region *>& get_regions(){return regions_;} 48 49 //Utility Methods 50 void extract_regions(); 51 void clear(); 52 set_expand_scale(float scale)53 void set_expand_scale(float scale){expand_scale_=scale;} 54 55 //Debug methods set_debug()56 void set_debug(){debug_ = true;} clear_debug()57 void clear_debug(){debug_ = false;} 58 59 protected: 60 //protected methods 61 gevd_bufferxy* get_image_buffer(vil1_image& image); 62 gevd_bufferxy* get_float_buffer(gevd_bufferxy* b); 63 gevd_bufferxy* put_float_buffer(gevd_bufferxy* fbuf); 64 vil1_image buffer_to_image(gevd_bufferxy* buf); 65 void restore_image_rois(); 66 //members 67 bool debug_;//debug flag 68 bool regions_valid_; //process state flag 69 float expand_scale_; 70 float burt_adelson_factor_; 71 vil1_image image_; //input image 72 gevd_bufferxy* buf_; 73 //lung_roi_proc_ref roi_proc_; //Lung roi processor 74 //vector<gevd_poly_intensity_face_ref> regions_; //resulting intensity faces 75 std::vector<vdgl_digital_region *> regions_; //resulting digital regions 76 }; 77 #endif // gevd_region_proc_h_ 78