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(
"notnullmajority", NotNullMajorityFilter<T>() );
75 registerFilter(
"dif", ExtremaDifferenceFilter<T>() );
76 registerFilter(
"difference", ExtremaDifferenceFilter<T>() );
77 registerFilter(
"sum", SumFilter<T>() );
78 registerFilter(
"var", VarFilter<T>() );
79 registerFilter(
"variance", VarFilter<T>() );
80 registerFilter(
"sd", StDevFilter<T>() );
85 std::map<std::string,carto::rc_ptr<ElementFilteringImageAlgorithm<T> > > & ElementFilterFactory<T>::_map()
87 static std::map<std::string,carto::rc_ptr<ElementFilteringImageAlgorithm<T> > > m;
92 void ElementFilterFactory<T>::registerFilter(
93 const std::string & name,
94 const ElementFilteringImageAlgorithm<T> & func
101 template <
typename T>
102 std::set<std::string> ElementFilterFactory<T>::names()
105 std::set<std::string> s;
106 typename std::map<std::string,carto::rc_ptr<ElementFilteringImageAlgorithm<T> > >
::const_iterator i, e = _map().end();
107 for( i=_map().begin(); i!=e; ++i )
108 s.insert( i->first );
112 template <
typename T>
113 ElementFilteringImageAlgorithm<T>* ElementFilterFactory<T>::create(
114 const std::string & name,
115 const StructuringElement & strel,
120 typename std::map<std::string,carto::rc_ptr<ElementFilteringImageAlgorithm<T> > >
::const_iterator i;
121 i = _map().find( name );
122 if( i == _map().end() )
124 ElementFilteringImageAlgorithm<T> * new_func = i->second->clone();
125 new_func->setOptions( options );
126 new_func->setStructuringElement( strel );
130 template <
typename T>
131 ElementFilteringImageAlgorithm<T>* ElementFilterFactory<T>::create(
132 const std::string & name,
136 return create( name, strel::Cube(1.0), options );