contrib/brl/bseg/sdet/sdet_third_order_edge_det.h
Go to the documentation of this file.
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