LArOpenCV  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
larcv::SBCluster Class Reference

#include <SBCluster.h>

Inheritance diagram for larcv::SBCluster:
larcv::ImageClusterBase larcv::laropencv_base

Public Member Functions

 SBCluster (const std::string name="SBCluster")
 Default constructor: Name is used to identify a configuration parameter set via larcv::ImageClusterManager. More...
 
virtual ~SBCluster ()
 Default destructor. More...
 
const std::string & Name () const
 Name accessor. More...
 
void Configure (const ::fcllite::PSet &pset)
 Configuration method. More...
 
void Profile (bool doit=true)
 Profile flag setter. More...
 
larcv::ContourArray_t Process (const larcv::ContourArray_t &clusters, const ::cv::Mat &img, larcv::ImageMeta &meta)
 wrapper execution method: internally executes Process function (see there for details) More...
 
size_t ProcessCount () const
 Process count. More...
 
double ProcessTime () const
 Process time. More...
 
const larcv::loggerlogger () const
 Logger getter. More...
 
void set_verbosity (::larcv::msg::Level_t level)
 Verbosity level. More...
 

Protected Member Functions

void _Configure_ (const ::fcllite::PSet &pset)
 Inherited class configuration method. More...
 
larcv::ContourArray_t _Process_ (const larcv::ContourArray_t &clusters, const ::cv::Mat &img, larcv::ImageMeta &meta)
 Execution method: given previous algorithm's output clusters, image, and metadata to be updated, produce clusters. More...
 

Private Attributes

int _dilation_size
 
int _dilation_iter
 
int _blur_size
 
float _thresh
 
float _thresh_maxval
 

Detailed Description

Definition at line 10 of file SBCluster.h.

Constructor & Destructor Documentation

larcv::SBCluster::SBCluster ( const std::string  name = "SBCluster")
inline

Default constructor: Name is used to identify a configuration parameter set via larcv::ImageClusterManager.

Definition at line 15 of file SBCluster.h.

15  :
16  ImageClusterBase(name),
17  _dilation_size ( 5 ),
18  _dilation_iter ( 2 ),
19  _blur_size ( 5 ),
20  _thresh ( 1 ),
21  _thresh_maxval (255)
22  {}
virtual larcv::SBCluster::~SBCluster ( )
inlinevirtual

Default destructor.

Definition at line 25 of file SBCluster.h.

25 {}

Member Function Documentation

void larcv::SBCluster::_Configure_ ( const ::fcllite::PSet &  pset)
protectedvirtual

Inherited class configuration method.

Implements larcv::ImageClusterBase.

Definition at line 9 of file SBCluster.cxx.

References _blur_size, _dilation_iter, _dilation_size, _thresh, and _thresh_maxval.

10  {
11 
12  _dilation_size = pset.get<int> ("DilationSize");
13  _dilation_iter = pset.get<int> ("DilationIterations");
14 
15  _blur_size = pset.get<int> ("BlurSize");
16 
17  _thresh = pset.get<float> ("Thresh");
18  _thresh_maxval = pset.get<float> ("ThreshMaxVal");
19 
20  // _polygon_e = pset.get<double>("PolygonEpsilon");
21  }
larcv::ContourArray_t larcv::SBCluster::_Process_ ( const larcv::ContourArray_t clusters,
const ::cv::Mat &  img,
larcv::ImageMeta meta 
)
protectedvirtual

Execution method: given previous algorithm's output clusters, image, and metadata to be updated, produce clusters.


Each cluster is represented by larcv::Contour_t. The first argument is clusters created by a previous
algorithm's execution (ignore if not needed). The second argumnet is the image to be wokred on. The
third argument is meta data to interpret a returned clusters (i.e. update metadata if return clusters
do not use the same coordinate reference as provided image, else leave unchanged).

Implements larcv::ImageClusterBase.

Definition at line 23 of file SBCluster.cxx.

References _blur_size, _dilation_iter, _dilation_size, _thresh, and _thresh_maxval.

26  {
27 
28  if ( clusters.size() )
29  throw larbys("This algo can only be executed first in algo chain!");
30 
31 
32  ::cv::Mat sb_img; //(s)mooth(b)inary image
33 
34  //Dilate
35  auto kernel = ::cv::getStructuringElement(cv::MORPH_ELLIPSE,::cv::Size(_dilation_size,_dilation_size));
36  ::cv::dilate(img,sb_img,
37  kernel,::cv::Point(-1,-1),_dilation_iter);
38 
39  //Blur
40  ::cv::blur(sb_img,sb_img,
41  ::cv::Size(_blur_size,_blur_size));
42 
43  //Threshold
44  auto t_value = ::cv::threshold(sb_img,sb_img,
45  _thresh,_thresh_maxval,CV_THRESH_BINARY); //return type is "threshold value?"
46 
47 
48  //Contour finding
49  ContourArray_t ctor_v;
50  std::vector<::cv::Vec4i> cv_hierarchy_v;
51  ctor_v.clear(); cv_hierarchy_v.clear();
52 
53  ::cv::findContours(sb_img,ctor_v,cv_hierarchy_v,
54  CV_RETR_EXTERNAL,
55  CV_CHAIN_APPROX_SIMPLE);
56 
57  //Approximate the polygon curve using Douglas-Peucker algorithm
58 
59  // ContourArray_t ctor_result_v;
60  // ctor_result_v.resize(ctor_v.size());
61 
62  // for( size_t k = 0; k < ctor_v.size(); k++ )
63  // ::cv::approxPolyDP(ctor_v[k], ctor_result_v[k], _polygon_e, true); //true to close the contours
64 
65 
66  // return ctor_result_v;
67  return ctor_v;
68 
69  }
void larcv::ImageClusterBase::Configure ( const ::fcllite::PSet &  pset)
inherited

Configuration method.

Definition at line 16 of file ImageClusterBase.cxx.

References larcv::ImageClusterBase::_Configure_(), larcv::ImageClusterBase::_profile, LARCV_DEBUG, and larcv::laropencv_base::set_verbosity().

16  {
17 
18  LARCV_DEBUG((*this)) << "start" << std::endl;
19  this->set_verbosity((msg::Level_t)(cfg.get<unsigned short>("Verbosity",(unsigned short)(this->logger().level()))));
20  _profile = cfg.get<bool>("Profile",_profile);
21 
22  this->_Configure_(cfg);
23 
24  LARCV_DEBUG((*this)) << "end" << std::endl;
25  }
const larcv::logger& larcv::laropencv_base::logger ( ) const
inlineinherited

Logger getter.

Definition at line 43 of file laropencv_base.h.

References larcv::laropencv_base::_logger.

Referenced by larcv::ImageClusterManager::Configure().

44  { return *_logger; }
const std::string& larcv::ImageClusterBase::Name ( ) const
inlineinherited

Name accessor.

Definition at line 54 of file ImageClusterBase.h.

References larcv::ImageClusterBase::_name.

54 { return _name; };
ContourArray_t larcv::ImageClusterBase::Process ( const larcv::ContourArray_t clusters,
const ::cv::Mat &  img,
larcv::ImageMeta meta 
)
inherited

wrapper execution method: internally executes Process function (see there for details)

Definition at line 27 of file ImageClusterBase.cxx.

References larcv::ImageClusterBase::_proc_count, larcv::ImageClusterBase::_proc_time, larcv::ImageClusterBase::_Process_(), larcv::ImageClusterBase::_profile, larcv::ImageClusterBase::_watch, larcv::Watch::Start(), and larcv::Watch::WallTime().

30  {
31  if(!_profile) return this->_Process_(clusters,img,meta);
32  _watch.Start();
33  auto result = this->_Process_(clusters,img,meta);
35  ++_proc_count;
36  return result;
37  }
size_t larcv::ImageClusterBase::ProcessCount ( ) const
inlineinherited

Process count.

Definition at line 70 of file ImageClusterBase.h.

References larcv::ImageClusterBase::_proc_count.

70 { return _proc_count; }
double larcv::ImageClusterBase::ProcessTime ( ) const
inlineinherited

Process time.

Definition at line 72 of file ImageClusterBase.h.

References larcv::ImageClusterBase::_proc_time.

72 { return _proc_time; }
void larcv::ImageClusterBase::Profile ( bool  doit = true)
inlineinherited

Profile flag setter.

Definition at line 60 of file ImageClusterBase.h.

References larcv::ImageClusterBase::_profile.

60 { _profile = doit; }
void larcv::laropencv_base::set_verbosity ( ::larcv::msg::Level_t  level)
inlineinherited

Verbosity level.

Definition at line 47 of file laropencv_base.h.

References larcv::laropencv_base::_logger.

Referenced by larcv::ImageClusterBase::Configure(), and larcv::ImageClusterManager::Configure().

48  { _logger->set(level); }

Member Data Documentation

int larcv::SBCluster::_blur_size
private

Definition at line 41 of file SBCluster.h.

Referenced by _Configure_(), and _Process_().

int larcv::SBCluster::_dilation_iter
private

Definition at line 40 of file SBCluster.h.

Referenced by _Configure_(), and _Process_().

int larcv::SBCluster::_dilation_size
private

Definition at line 39 of file SBCluster.h.

Referenced by _Configure_(), and _Process_().

float larcv::SBCluster::_thresh
private

Definition at line 42 of file SBCluster.h.

Referenced by _Configure_(), and _Process_().

float larcv::SBCluster::_thresh_maxval
private

Definition at line 43 of file SBCluster.h.

Referenced by _Configure_(), and _Process_().


The documentation for this class was generated from the following files: