27 #ifndef SCRIBO_FILTER_OBJECT_GROUPS_SIZE_RATIO_HH
28 # define SCRIBO_FILTER_OBJECT_GROUPS_SIZE_RATIO_HH
35 # include <mln/util/array.hh>
37 # include <scribo/core/macros.hh>
38 # include <scribo/core/object_groups.hh>
67 float max_invalid_ratio_per_group);
69 # ifndef MLN_INCLUDE_ONLY
76 float max_invalid_ratio_per_group)
78 mln_trace(
"scribo::filter::object_groups_size_ratio");
80 mln_precondition(groups.is_valid());
82 const component_set<L>& comps = groups.components();
87 invalid_object_in_group(groups.nelements(), 0);
89 for_all_comps(i, comps)
93 ++invalid_object_in_group(groups.group_of(i).id());
96 object_groups<L> output(groups);
97 for_all_groups(g, groups)
98 if ((invalid_object_in_group(g) / static_cast<
float>(groups(g).card())) >= max_invalid_ratio_per_group
99 || !groups(g).is_valid())
100 output(g).invalidate();
106 # endif // ! MLN_INCLUDE_ONLY
114 #endif // ! SCRIBO_FILTER_OBJECT_GROUPS_SIZE_RATIO_HH