00001 // This is brl/bseg/sdet/sdet_third_order_edge_det.h 00002 #ifndef sdet_third_order_edge_det_h 00003 #define sdet_third_order_edge_det_h 00004 //: 00005 //\file 00006 //\brief An edge detector that first computes edge locations and then optimizes the orientations using the third order operator 00007 //\author Amir Tamrakar 00008 //\date 09 Sept 2006 00009 // 00010 //\verbatim 00011 // Modifications 00012 //\endverbatim 00013 00014 #include <vil/vil_image_view.h> 00015 #include <vdgl/vdgl_edgel.h> 00016 #include <brip/brip_gaussian_kernel.h> 00017 #include <brip/brip_interp_kernel.h> 00018 #include <sdet/sdet_nms.h> 00019 #include <brip/brip_subpix_convolution.h> 00020 #include <sdet/sdet_third_order_edge_det_params.h> 00021 #include <vsol/vsol_line_2d_sptr.h> 00022 00023 //: function to compute generic edges 00024 class sdet_third_order_edge_det : public sdet_third_order_edge_det_params 00025 { 00026 public: 00027 sdet_third_order_edge_det() 00028 : sdet_third_order_edge_det_params() {} 00029 sdet_third_order_edge_det(sdet_third_order_edge_det_params const& params) 00030 : sdet_third_order_edge_det_params(params) {} 00031 void apply(vil_image_view<vxl_byte> const& image); 00032 bool apply_color(vil_image_view<vxl_byte> const& image); 00033 vcl_vector<vdgl_edgel>& edgels() { return edgels_; } 00034 void line_segs(vcl_vector<vsol_line_2d_sptr>& lines); 00035 00036 //: save edgels in the edge map file FORMAT, output files have .edg extension 00037 static bool save_edg_ascii(const vcl_string& filename, unsigned ni, unsigned nj, const vcl_vector<vdgl_edgel>& edgels); 00038 00039 private: 00040 vcl_vector<vdgl_edgel> edgels_; 00041 }; 00042 00043 #endif // sdet_third_order_edge_det_h