29 #include <mln/core/image/image2d.hh>
30 #include <mln/core/alias/neighb2d.hh>
32 #include <mln/data/convert.hh>
34 #include <mln/value/rgb8.hh>
35 #include <mln/value/label_16.hh>
36 #include <mln/literal/colors.hh>
38 #include <mln/io/pbm/load.hh>
39 #include <mln/io/ppm/save.hh>
41 #include <mln/draw/line.hh>
43 #include <scribo/primitive/extract/components.hh>
44 #include <scribo/primitive/link/with_single_left_link_dmax_ratio.hh>
45 #include <scribo/primitive/link/internal/link_single_dmax_ratio_base.hh>
46 #include <scribo/primitive/link/compute.hh>
48 #include <scribo/draw/bounding_boxes.hh>
50 #include <scribo/debug/usage.hh>
56 template <
typename I,
typename L>
57 struct single_left_link_debug_functor
58 : primitive::link::internal::link_single_dmax_ratio_base<L,
59 primitive::link::internal::dmax_default,
60 single_left_link_debug_functor<I, L> >
62 typedef single_left_link_debug_functor<I, L> self_t;
63 typedef primitive::link::internal::dmax_default dmax_fun_t;
65 primitive::link::internal::link_single_dmax_ratio_base<L,
70 typedef mln_site(L) P;
72 single_left_link_debug_functor(const I& input,
75 : super_(components, anchor::Horizontal, dmax_fun_t(dmax_ratio))
79 mln_postcondition(output_.is_valid());
82 void validate_link_(
unsigned current_object,
89 super_::validate_link_(current_object, start_point, p, anchor);
94 void invalidate_link_(
unsigned current_object,
99 if (output_.domain().has(p))
108 super_::invalidate_link_(current_object, start_point, p, anchor);
113 void compute_next_site_(P& p)
119 image2d<value::rgb8> output_;
126 const char *args_desc[][2] =
128 {
"input.pbm",
"A binary image. True for objects and False for the "
130 {
"max_nbh_dist_ratio",
"Size ratio defining the maximum lookup distance."
131 "(common value : 3)" },
136 int main(
int argc,
char* argv[])
138 using namespace scribo;
139 using namespace scribo::primitive::internal;
144 "Show sucessful/unsuccessful left links "
145 "between components.",
146 "input.pbm max_nbh_dist_ratio output.ppm",
154 value::label_16 nbboxes;
160 single_left_link_debug_functor<I, L>
161 functor(input, components, atof(argv[2]));