27 #ifndef SCRIBO_FILTER_OBJECTS_SIZE_RATIO_HH
28 # define SCRIBO_FILTER_OBJECTS_SIZE_RATIO_HH
34 # include <mln/core/concept/function.hh>
36 # include <scribo/core/component_set.hh>
59 float min_size_ratio);
62 # ifndef MLN_INCLUDE_ONLY
73 struct components_size_ratio_filter
76 components_size_ratio_filter(
const component_set<L>& comps,
78 : comps_(comps), min_size_ratio_(min_size_ratio)
82 bool operator()(
const mln_value(L)& l)
const
84 if (l == literal::zero)
86 return (comps_(l).
bbox().
height() / static_cast<float>(comps_(l).
bbox().width())) >= min_size_ratio_;
90 component_set<L> comps_;
93 float min_size_ratio_;
101 template <
typename L>
104 float min_size_ratio)
107 mln_trace(
"scribo::primitive::objects_size_ratio");
109 typedef internal::components_size_ratio_filter<L> func_t;
110 func_t has_valid_size_ratio(comps, min_size_ratio);
112 component_set<L> output = comps.duplicate();
119 # endif // ! MLN_INCLUDE_ONLY
126 #endif // ! SCRIBO_FILTER_OBJECTS_SIZE_RATIO_HH