33 #ifndef SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_HDOC_HH
34 # define SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_HDOC_HH
36 # include <mln/morpho/elementary/dilation.hh>
38 # include <mln/draw/box_plain.hh>
39 # include <mln/morpho/closing/structural.hh>
40 # include <mln/win/rectangle2d.hh>
42 # include <scribo/make/text_components_image.hh>
43 # include <scribo/make/text_blocks_image.hh>
45 # include <scribo/primitive/extract/internal/union.hh>
46 # include <scribo/debug/logger.hh>
48 # include <scribo/filter/objects_small.hh>
49 # include <scribo/filter/objects_on_border.hh>
50 # include <scribo/filter/objects_v_thin.hh>
51 # include <scribo/filter/objects_h_thin.hh>
54 #include <mln/util/timer.hh>
55 #include <mln/io/pbm/save.hh>
78 # ifndef MLN_INCLUDE_ONLY
93 mln_trace(
"scribo::primitive::extract::non_text_hdoc");
95 mln_precondition(doc.is_valid());
96 mln_precondition(doc.has_text());
99 element_image =
duplicate(doc.binary_image_wo_seps());
102 const paragraph_set<L>& parset = doc.paragraphs();
103 for_all_paragraphs(p, parset)
104 if (parset(p).is_valid())
105 for_all_paragraph_lines(l, parset(p).line_ids())
107 line_id_t lid = parset(p).line_ids()(l);
118 "non_text_hdoc_element_image");
127 elements = primitive::extract::
components(element_image,
135 0.03 * doc.image().domain().
height());
137 0.03 * doc.image().domain().width());
142 elements.labeled_image(),
143 "non_text_hdoc_components");
149 # endif // ! MLN_INCLUDE_ONLY
158 #endif // ! SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_HDOC_HH