35#ifndef AIMS_SIGNALFILTER_FILTERINGFUNCTION_ELEMENT_D_H
36#define AIMS_SIGNALFILTER_FILTERINGFUNCTION_ELEMENT_D_H
40#include <aims/connectivity/structuring_element.h>
41#include <aims/math/mathelem.h>
43#include <cartodata/volume/volumeutil_d.h>
44#include <cartodata/volume/volume.h>
46#include <cartobase/config/verbose.h>
47#include <cartobase/smart/rcptr.h>
66 static bool initialized =
false;
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
161 T MinFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
163 return carto::VolumeUtil<T>::min(volume);
166 template <
class T>
inline
167 T MinFilterFunc<T>::execute(
168 const carto::VolumeRef<T> & volume,
169 const carto::rc_ptr<StructuringElement> & se
179 template <
class T>
inline
180 T MedianFilterFunc<T>::execute(
const carto::VolumeRef<T> & volume )
const
185 template <
class T>
inline
186 T MedianFilterFunc<T>::execute(
187 const carto::VolumeRef<T> & volume,
188 const carto::rc_ptr<StructuringElement> & se
198 template <
class T>
inline
199 T NotNullMedianFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
204 template <
class T>
inline
205 T NotNullMedianFilterFunc<T>::execute(
206 const carto::VolumeRef<T> & volume,
207 const carto::rc_ptr<StructuringElement> & se
217 template <
class T>
inline
218 T MeanFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
223 template <
class T>
inline
224 T MeanFilterFunc<T>::execute(
225 const carto::VolumeRef<T> & volume,
226 const carto::rc_ptr<StructuringElement> & se
236 template <
class T>
inline
237 T NotNullMeanFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
242 template <
class T>
inline
243 T NotNullMeanFilterFunc<T>::execute(
244 const carto::VolumeRef<T> & volume,
245 const carto::rc_ptr<StructuringElement> & se
255 template <
class T>
inline
256 T MajorityFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
261 template <
class T>
inline
262 T MajorityFilterFunc<T>::execute(
263 const carto::VolumeRef<T> & volume,
264 const carto::rc_ptr<StructuringElement> & se
274 template <
class T>
inline
275 T NotNullMajorityFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
280 template <
class T>
inline
281 T NotNullMajorityFilterFunc<T>::execute(
282 const carto::VolumeRef<T> & volume,
283 const carto::rc_ptr<StructuringElement> & se
293 template <
class T>
inline
294 T ExtremaDifferenceFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
299 template <
class T>
inline
300 T ExtremaDifferenceFilterFunc<T>::execute(
301 const carto::VolumeRef<T> & volume,
302 const carto::rc_ptr<StructuringElement> & se
312 template <
class T>
inline
313 T SumFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
318 template <
class T>
inline
319 T SumFilterFunc<T>::execute(
320 const carto::VolumeRef<T> & volume,
321 const carto::rc_ptr<StructuringElement> & se
331 template <
class T>
inline
332 T VarFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
337 template <
class T>
inline
338 T VarFilterFunc<T>::execute(
339 const carto::VolumeRef<T> & volume,
340 const carto::rc_ptr<StructuringElement> & se
350 template <
class T>
inline
351 T StDevFilterFunc<T>::execute(
const carto::VolumeRef<T>& volume )
const
356 template <
class T>
inline
357 T StDevFilterFunc<T>::execute(
358 const carto::VolumeRef<T> & volume,
359 const carto::rc_ptr<StructuringElement> & 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)