15 #ifndef EDGE_EDGE_SEGMENT_SET_H
16 #define EDGE_EDGE_SEGMENT_SET_H
51 _segments = iseg._segments;
62 inline const std::vector<Line_segment> &
get_segments() {
return _segments; }
65 inline unsigned int size()
const {
return _segments.size(); }
70 _segments.push_back(isegment);
77 void draw(
kjb::Image & img,
double ir,
double ig,
double ib,
double width = 1.0)
const;
83 void read(std::istream& in);
86 void write(std::ostream& out)
const;
89 void read(
const char* fname)
95 void write(
const char* fname)
const
105 std::vector<Line_segment> _segments;
149 _segments = iseg._segments;
158 inline const std::vector<Edge_segment> &
get_segments() {
return _segments; }
161 inline unsigned int size()
const {
return _segments.size(); }
169 _segments.push_back(isegment);
175 return _segments[
i].get_edge();
180 void draw(
kjb::Image & img,
double ir,
double ig,
double ib,
double width = 1.0)
const;
192 void read(std::istream& in);
201 void write(std::ostream& out)
const;
215 double collinear_threshold = 0.12,
216 double overlapping_threshold = 10
235 std::vector<Edge_segment> _segments;
void read(const char *fname)
Reads this Edge_segment_set from an input file.
Definition: line_segment_set.h:89
void remove_frame_segments(unsigned int num_rows, unsigned int num_cols, kjb::Edge_set &edges)
Definition: line_segment_set.cpp:476
const std::vector< Edge_segment > & get_segments()
Definition: line_segment_set.h:158
Definition: edge_segment.h:36
Abstract class to write this object to an output stream.
Definition: l_writeable.h:41
Edge_segment_set(const Edge_segment_set &src)
Definition: line_segment_set.h:144
void remove_frame_segments(unsigned int num_rows, unsigned int num_cols)
Definition: line_segment_set.cpp:520
void remove_overlapping_segments(kjb::Edge_set &edges, double collinear_threshold=0.12, double overlapping_threshold=10)
In case there are multiple roughly collinear edge segments, only the longest one is kept...
Definition: line_segment_set.cpp:431
Abstract class to read this object from an input stream.
Definition: l_readable.h:39
void write(const char *fname) const
Writes this Edge_segment_set to a file.
Definition: line_segment_set.h:95
kjb::Edge_set * convert_to_edge_set(unsigned int num_rows, unsigned int num_cols)
Definition: line_segment_set.cpp:650
void read(std::istream &in)
Reads this Edge_segment_set from an input stream.
Definition: line_segment_set.cpp:32
const std::vector< Line_segment > & get_segments()
Returns a vector containing the fitted line segments.
Definition: line_segment_set.h:62
const Edge_segment & get_segment(unsigned int i) const
returns the ith fitted line segment
Definition: line_segment_set.h:164
void draw(kjb::Image &img, double ir, double ig, double ib, double width=1.0) const
Draws this line segment set.
Definition: line_segment_set.cpp:158
const kjb::Edge & get_edge(unsigned int i)
returns the ith collection of edge points the segments were fitted to
Definition: line_segment_set.h:173
void init_from_edge_set(const kjb::Edge_set *edge_set, bool use_num_pts_as_length=true)
Definition: line_segment_set.cpp:242
void add_segment(const Edge_segment &isegment)
Adds a line segment to this collection.
Definition: line_segment_set.h:167
virtual void write(std::ostream &out) const =0
Writes this Writeable to an output stream.
Line_segment_set(std::istream &in)
Definition: line_segment_set.h:36
unsigned int size() const
Definition: line_segment_set.h:161
const Line_segment & get_segment(unsigned int i) const
returns the ith fitted line segment
Definition: line_segment_set.h:74
void read_from_Kovesi_formatb(const std::string path_to_file)
Definition: line_segment_set.cpp:110
void detect_long_connected_segments(Line_segment_set &segments, const std::string &img_path, int max_length)
Definition: line_segment_set.cpp:675
Line_segment_set(const Line_segment_set &src)
Definition: line_segment_set.h:46
~Line_segment_set()
Definition: line_segment_set.h:55
unsigned int size() const
Returns the number of segments in this set.
Definition: line_segment_set.h:65
Line_segment_set()
Definition: line_segment_set.h:31
Class to manipulate a set of line segments.
Definition: line_segment_set.h:28
void read(std::istream &in, const kjb::Edge_set *edge_set)
Reads this Edge_segment_set from an input stream.
Definition: line_segment_set.cpp:259
Edge_segment_set & operator=(const Edge_segment_set &iseg)
Definition: line_segment_set.h:147
Line_segment_set(const std::vector< Line_segment > &isegments)
Definition: line_segment_set.h:33
Edge_segment_set()
Definition: line_segment_set.h:131
void draw(kjb::Image &img, double ir, double ig, double ib, double width=1.0) const
Draws this line segment set.
Definition: line_segment_set.cpp:358
Line_segment_set & operator=(const Line_segment_set &iseg)
Definition: line_segment_set.h:49
void randomly_color(kjb::Image &img, double width=1.0) const
Randomly colors this line segment set on an image.
Definition: line_segment_set.cpp:373
void write(std::ostream &out) const
Writes this Edge_segment_set to an output stream.
Definition: line_segment_set.cpp:61
void read(const char *fname)
Reads this Edge_segment_set from an input file.
Definition: line_segment_set.h:195
void randomly_color(kjb::Image &img, double width=1.0) const
Randomly colors this line segment set on an image.
Definition: line_segment_set.cpp:172
Edge_segment_set(const std::vector< Edge_segment > &isegments)
Definition: line_segment_set.h:133
void read_from_Kovesi_format(const std::string path_to_file)
Definition: line_segment_set.cpp:71
void add_segment(const Line_segment &isegment)
Adds a line segment to this collection.
Definition: line_segment_set.h:68
void find_vertical_segment_pairs(std::vector< Segment_pair > &pairs, int num_rows) const
Definition: line_segment_set.cpp:381
virtual void read(std::istream &in)=0
Reads this Readable from an input stream.
get the indices of edges in each direction for i
Definition: APPgetLargeConnectedEdges.m:48
edges
Definition: APPgetLargeConnectedEdges.m:85
void write(const char *fname) const
Writes this Edge_segment_set to a file.
Definition: line_segment_set.h:204
Class to manipulate a set of edge segments.
Definition: line_segment_set.h:128
Wrapped version of the C struct KJB_image.
Definition: i_image.h:76
kjb::Edge_set * convert_to_edge_set(unsigned int num_rows, unsigned int num_cols)
Definition: line_segment_set.cpp:625
~Edge_segment_set()
Definition: line_segment_set.h:153
void remove_non_straight_segments(kjb::Edge_set &edges, double threshold)
Definition: line_segment_set.cpp:563
Line_segment_set(const char *file_name)
Definition: line_segment_set.h:41
Class to manipulate a line segment The class is parametrized in terms the position of the centre...
Definition: gr_line_segment.h:62
void write(std::ostream &out) const
Writes this Edge_segment_set to an output stream.
Definition: line_segment_set.cpp:339