27 #ifndef SCRIBO_FILTER_OBJECT_LINKS_BBOX_OVERLAP_HH
28 # define SCRIBO_FILTER_OBJECT_LINKS_BBOX_OVERLAP_HH
36 # include <mln/math/min.hh>
37 # include <mln/math/max.hh>
38 # include <mln/util/array.hh>
40 # include <scribo/core/macros.hh>
41 # include <scribo/core/object_links.hh>
42 # include <scribo/core/component_set.hh>
43 # include <scribo/filter/object_links_bbox_ratio.hh>
44 # include <scribo/util/box_intersection.hh>
68 float max_overlap_ratio);
71 # ifndef MLN_INCLUDE_ONLY
77 float max_overlap_ratio)
79 mln_trace(
"scribo::filter::object_links_bbox_overlap");
81 mln_precondition(links.is_valid());
83 const component_set<L>&
components = links.components();
84 object_links<L> output = links.duplicate();
86 float ratio_i, ratio_link_i;
88 for_all_links(i, links)
89 if (links.is_linked(i))
92 interbbox = scribo::util::box_intersection(components(i).
bbox(),
93 components(links(i)).bbox());
95 ratio_i = interbbox.
nsites() /(
float)components(i).bbox().
nsites();
96 ratio_link_i = interbbox.nsites() /(
float)components(links(i)).bbox().nsites();
98 if (ratio_i >= max_overlap_ratio
99 || ratio_link_i >= max_overlap_ratio)
107 # endif // ! MLN_INCLUDE_ONLY
115 #endif // ! SCRIBO_FILTER_OBJECT_LINKS_BBOX_OVERLAP_HH