35 #ifndef AIMS_SIGNALFILTER_FILTERINGFUNCTION_ELEMENT_D_H
36 #define AIMS_SIGNALFILTER_FILTERINGFUNCTION_ELEMENT_D_H
66 static bool initialized =
false;
70 registerFunction(
"min", MinFilterFunc<T>() );
71 registerFunction(
"max", MaxFilterFunc<T>() );
72 registerFunction(
"med", MedianFilterFunc<T>() );
73 registerFunction(
"median", MedianFilterFunc<T>() );
74 registerFunction(
"notnullmedian", NotNullMedianFilterFunc<T>() );
75 registerFunction(
"mea", MeanFilterFunc<T>() );
76 registerFunction(
"mean", MeanFilterFunc<T>() );
77 registerFunction(
"notnullmean", NotNullMeanFilterFunc<T>() );
78 registerFunction(
"maj", MajorityFilterFunc<T>() );
79 registerFunction(
"majority", MajorityFilterFunc<T>() );
80 registerFunction(
"notnullmajority", NotNullMajorityFilterFunc<T>() );
81 registerFunction(
"dif", ExtremaDifferenceFilterFunc<T>() );
82 registerFunction(
"difference", ExtremaDifferenceFilterFunc<T>() );
83 registerFunction(
"sum", SumFilterFunc<T>() );
84 registerFunction(
"var", VarFilterFunc<T>() );
85 registerFunction(
"variance", VarFilterFunc<T>() );
86 registerFunction(
"sd", StDevFilterFunc<T>() );
91 std::map<std::string,carto::rc_ptr<ElementFilteringFunction<T> > > &
94 static std::map<std::string,carto::rc_ptr<ElementFilteringFunction<T> > > m;
100 const std::string & name,
108 template <
typename T>
112 std::set<std::string> s;
113 typename std::map<std::string,carto::rc_ptr<ElementFilteringFunction<T> > >
::const_iterator i, e = _map().end();
114 for( i=_map().begin(); i!=e; ++i )
115 s.insert( i->first );
119 template <
typename T>
121 const std::string & name,
126 typename std::map<std::string,carto::rc_ptr<ElementFilteringFunction<T> > >
::const_iterator i;
127 i = _map().find( name );
128 if( i == _map().end() )
141 template <
class T>
inline
147 template <
class T>
inline
148 T MaxFilterFunc<T>::execute(
153 StructuredConstVolume<T> volse( *volume, *se );
160 template <
class T>
inline
166 template <
class T>
inline
167 T MinFilterFunc<T>::execute(
172 StructuredConstVolume<T> volse( *volume, *se );
179 template <
class T>
inline
185 template <
class T>
inline
186 T MedianFilterFunc<T>::execute(
191 StructuredConstVolume<T> volse( *volume, *se );
198 template <
class T>
inline
204 template <
class T>
inline
205 T NotNullMedianFilterFunc<T>::execute(
210 StructuredConstVolume<T> volse( *volume, *se );
217 template <
class T>
inline
223 template <
class T>
inline
224 T MeanFilterFunc<T>::execute(
229 StructuredConstVolume<T> volse( *volume, *se );
236 template <
class T>
inline
242 template <
class T>
inline
243 T NotNullMeanFilterFunc<T>::execute(
248 StructuredConstVolume<T> volse( *volume, *se );
255 template <
class T>
inline
261 template <
class T>
inline
262 T MajorityFilterFunc<T>::execute(
267 StructuredConstVolume<T> volse( *volume, *se );
274 template <
class T>
inline
280 template <
class T>
inline
281 T NotNullMajorityFilterFunc<T>::execute(
286 StructuredConstVolume<T> volse( *volume, *se );
293 template <
class T>
inline
299 template <
class T>
inline
300 T ExtremaDifferenceFilterFunc<T>::execute(
305 StructuredConstVolume<T> volse( *volume, *se );
312 template <
class T>
inline
318 template <
class T>
inline
319 T SumFilterFunc<T>::execute(
324 StructuredConstVolume<T> volse( *volume, *se );
331 template <
class T>
inline
337 template <
class T>
inline
338 T VarFilterFunc<T>::execute(
343 StructuredConstVolume<T> volse( *volume, *se );
350 template <
class T>
inline
356 template <
class T>
inline
357 T StDevFilterFunc<T>::execute(
362 StructuredConstVolume<T> volse( *volume, *se );
static std::set< std::string > names()
List all function ids registered in the factory.
static std::map< std::string, carto::rc_ptr< ElementFilteringFunction< T > > > & _map()
static ElementFilteringFunction< T > * create(const std::string &name, carto::Object options=carto::none())
Build and return the ElementFilteringFunction associated with the id name.
static void registerFunction(const std::string &name, const ElementFilteringFunction< T > &func)
Register a ElementFilterigFunction into the factory.
Base class for filtering functions applied in a structuring element.
virtual ElementFilteringFunction< T > * clone() const =0
clone
virtual void setOptions(const carto::Object &)
Set the parameters of the filters If a parameter value is not set in the options object,...
static T notnull_mean(Iterator b, Iterator e)
static T median(Iterator b, Iterator e, T default_value=(T) 0)
static T mean(Iterator b, Iterator e)
static T variance(Iterator b, Iterator e)
static T extrema_difference(Iterator b, Iterator e)
static T min(Iterator b, Iterator e, T default_value=std::numeric_limits< T >::max())
static T majority(Iterator b, Iterator e, T default_value=(T) 0)
static T notnull_median(Iterator b, Iterator e, T default_value=(T) 0)
static T stdev(Iterator b, Iterator e)
static T max(Iterator b, Iterator e, T default_value=carto::min_limit< T >())
static T sum(Iterator b, Iterator e)
static T notnull_majority(Iterator b, Iterator e, T default_value=(T) 0)
float min(float x, float y)
float max(float x, float y)