00001 // This is brl/bseg/vpro/vpro_line_fit_process.cxx 00002 #include "vpro_line_fit_process.h" 00003 //: 00004 // \file 00005 #include <vcl_iostream.h> 00006 #include <vul/vul_timer.h> 00007 #include <vsol/vsol_line_2d.h> 00008 #include <vtol/vtol_edge_2d_sptr.h> 00009 #include <vtol/vtol_edge_2d.h> 00010 #include <sdet/sdet_fit_lines.h> 00011 00012 vpro_line_fit_process::vpro_line_fit_process(sdet_fit_lines_params & flp) 00013 : sdet_fit_lines_params(flp) 00014 { 00015 } 00016 00017 vpro_line_fit_process::~vpro_line_fit_process() 00018 { 00019 } 00020 00021 bool vpro_line_fit_process::execute() 00022 { 00023 vul_timer t; 00024 00025 if (!get_N_input_topo_objs()) 00026 { 00027 vcl_cout << "In vpro_line_fit_process::execute() - no input edges\n"; 00028 return false; 00029 } 00030 this->clear_output(); 00031 //initialize the line fitter 00032 sdet_fit_lines fitter(*((sdet_fit_lines_params*)this)); 00033 vcl_vector<vtol_edge_2d_sptr> edges; 00034 for (vcl_vector<vtol_topology_object_sptr>::iterator eit = input_topo_objs_.begin(); 00035 eit != input_topo_objs_.end(); eit++) 00036 { 00037 vtol_edge_2d_sptr e = (*eit)->cast_to_edge()->cast_to_edge_2d(); 00038 if (e) 00039 edges.push_back(e); 00040 } 00041 fitter.set_edges(edges); 00042 if (!fitter.fit_lines()) 00043 return false; 00044 vcl_vector<vsol_line_2d_sptr> lines = fitter.get_line_segs(); 00045 for (vcl_vector<vsol_line_2d_sptr>::iterator lit = lines.begin(); 00046 lit != lines.end(); lit++) 00047 output_spat_objs_.push_back((*lit)->cast_to_spatial_object()); 00048 00049 vcl_cout << "process " << lines.size() 00050 << " line segments in " << t.real() << " msecs.\n"; 00051 return true; 00052 }
1.7.5.1