17 #include <mln/core/image/image2d.hh>
18 #include <mln/core/alias/neighb2d.hh>
19 #include <mln/io/pbm/all.hh>
20 #include <mln/value/int_u.hh>
21 #include <mln/literal/colors.hh>
22 #include <mln/draw/box.hh>
24 #include <scribo/core/component_set.hh>
25 #include <scribo/core/line_set.hh>
26 #include <scribo/primitive/extract/components.hh>
27 #include <scribo/primitive/group/from_single_link.hh>
28 #include <scribo/primitive/link/with_single_left_link_dmax_ratio.hh>
29 #include <scribo/primitive/link/with_single_right_link_dmax_ratio.hh>
30 #include <scribo/primitive/link/merge_double_link.hh>
31 #include <scribo/primitive/link/internal/dmax_width_and_height.hh>
33 #include <scribo/filter/object_links_bbox_h_ratio.hh>
34 #include <scribo/filter/objects_v_thick.hh>
35 #include <scribo/filter/objects_small.hh>
37 int main(
int argc,
char *argv[])
40 using namespace scribo;
41 using namespace scribo::primitive;
43 if (argc != 3 && argc != 4 && argc != 5 && argc != 6)
45 std::cerr <<
"Usage : " << argv[0] <<
" input.pbm out.pbm [hratio = 2.5] [min_comp_area = 3] [max_comp_height = 300]" << std::endl;
46 std::cerr <<
"Remove small and large components. Group components and makes sure "
47 <<
" size ratio is correct." << std::endl;
64 max_comp_height = 300;
67 min_comp_area = atoi(argv[4]);
69 max_comp_height = atoi(argv[5]);
76 left_link = primitive::link::with_single_left_link_dmax_ratio(
83 right_link = primitive::link::with_single_right_link_dmax_ratio(
91 merged_links = primitive::link::merge_double_link(left_link,
96 hratio = atof(argv[3]);
104 groups = group::from_single_link(hratio_filtered_links);
113 for_all_lines(l, lines)
114 if (lines(l).is_valid())
115 mln::draw::
box(output, lines(l).
bbox(), true);
117 io::pbm::
save(output, argv[2]);