34 #ifndef AIMS_SIGNALFILTER_ELEMENTFILTERFACTORY_D_H 35 #define AIMS_SIGNALFILTER_ELEMENTFILTERFACTORY_D_H 58 void ElementFilterFactory<T>::init()
60 static bool initialized =
false;
64 registerFilter(
"min", MinFilter<T>() );
65 registerFilter(
"max", MaxFilter<T>() );
66 registerFilter(
"med", MedianFilter<T>() );
67 registerFilter(
"median", MedianFilter<T>() );
68 registerFilter(
"notnullmedian", NotNullMedianFilter<T>() );
69 registerFilter(
"mea", MeanFilter<T>() );
70 registerFilter(
"mean", MeanFilter<T>() );
71 registerFilter(
"notnullmean", NotNullMeanFilter<T>() );
72 registerFilter(
"maj", MajorityFilter<T>() );
73 registerFilter(
"majority", MajorityFilter<T>() );
74 registerFilter(
"dif", ExtremaDifferenceFilter<T>() );
75 registerFilter(
"difference", ExtremaDifferenceFilter<T>() );
76 registerFilter(
"sum", SumFilter<T>() );
77 registerFilter(
"var", VarFilter<T>() );
78 registerFilter(
"variance", VarFilter<T>() );
79 registerFilter(
"sd", StDevFilter<T>() );
84 std::map<std::string,carto::rc_ptr<ElementFilteringImageAlgorithm<T> > > & ElementFilterFactory<T>::_map()
86 static std::map<std::string,carto::rc_ptr<ElementFilteringImageAlgorithm<T> > > m;
91 void ElementFilterFactory<T>::registerFilter(
92 const std::string & name,
93 const ElementFilteringImageAlgorithm<T> & func
100 template <
typename T>
101 std::set<std::string> ElementFilterFactory<T>::names()
104 std::set<std::string> s;
105 typename std::map<std::string,carto::rc_ptr<ElementFilteringImageAlgorithm<T> > >
::const_iterator i, e = _map().end();
106 for( i=_map().begin(); i!=e; ++i )
107 s.insert( i->first );
111 template <
typename T>
112 ElementFilteringImageAlgorithm<T>* ElementFilterFactory<T>::create(
113 const std::string & name,
114 const StructuringElement & strel,
119 typename std::map<std::string,carto::rc_ptr<ElementFilteringImageAlgorithm<T> > >
::const_iterator i;
120 i = _map().find( name );
121 if( i == _map().end() )
123 ElementFilteringImageAlgorithm<T> * new_func = i->second->clone();
124 new_func->setOptions( options );
125 new_func->setStructuringElement( strel );
129 template <
typename T>
130 ElementFilteringImageAlgorithm<T>* ElementFilterFactory<T>::create(
131 const std::string & name,
135 return create( name, strel::Cube(1.0), options );