SourceXtractorPlusPlus  0.8
Please provide a description of the project.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Lutz.h
Go to the documentation of this file.
1 
17 /*
18  * Lutz.h
19  *
20  * Created on: Jan 17, 2017
21  * Author: mschefer
22  */
23 
24 #ifndef _SEIMPLEMENTATION_SEGMENTATION_LUTZ_H_
25 #define _SEIMPLEMENTATION_SEGMENTATION_LUTZ_H_
26 
27 #include "ElementsKernel/Logging.h"
28 
34 
35 namespace SourceXtractor {
36 
37 class Lutz {
38 public:
39  class PixelGroup {
40  public:
41 
42  int start;
43  int end;
45 
46  PixelGroup() : start(-1), end(-1) {}
47 
49  pixel_list.insert(pixel_list.end(), other.pixel_list.begin(), other.pixel_list.end());
50  }
51  };
52 
53  class LutzListener {
54  public:
55  virtual void publishGroup(PixelGroup& pixel_group) = 0;
56  virtual void notifyProgress(int /*line*/, int /*total*/) {};
57  };
58 
59  Lutz() {}
60  virtual ~Lutz() = default;
61 
62  void labelImage(LutzListener& listener, const DetectionImage& image, PixelCoordinate offset = PixelCoordinate(0,0));
63 };
64 
65 class LutzList : public Lutz, public Lutz::LutzListener {
66 public:
67 
68  LutzList() {}
69  virtual ~LutzList() = default;
70 
72  return m_groups;
73  }
74 
75  void labelImage(const DetectionImage& image, PixelCoordinate offset = PixelCoordinate(0,0)) {
76  Lutz::labelImage(*this, image, offset);
77  }
78 
79 protected:
80  virtual void publishGroup(PixelGroup& pixel_group) override;
81 
82 private:
84 
85 };
86 
87 }
88 
89 
90 
91 
92 #endif /* _SEIMPLEMENTATION_SEGMENTATION_LUTZ_H_ */
virtual void publishGroup(PixelGroup &pixel_group) override
Definition: Lutz.cpp:232
std::vector< PixelCoordinate > pixel_list
Definition: Lutz.h:44
virtual void notifyProgress(int, int)
Definition: Lutz.h:56
virtual void publishGroup(PixelGroup &pixel_group)=0
virtual ~Lutz()=default
Implements a Segmentation based on the Lutz algorithm.
Definition: Lutz.h:37
void labelImage(const DetectionImage &image, PixelCoordinate offset=PixelCoordinate(0, 0))
Definition: Lutz.h:75
void labelImage(LutzListener &listener, const DetectionImage &image, PixelCoordinate offset=PixelCoordinate(0, 0))
Definition: Lutz.cpp:59
virtual ~LutzList()=default
const std::vector< PixelGroup > & getGroups() const
Definition: Lutz.h:71
A pixel coordinate made of two integers m_x and m_y.
STL class.
std::vector< PixelGroup > m_groups
Definition: Lutz.h:83
Interface representing an image.
Definition: Image.h:43
void merge_pixel_list(PixelGroup &other)
Definition: Lutz.h:48