17 #ifndef __itkVoronoiSegmentationImageFilter_txx
18 #define __itkVoronoiSegmentationImageFilter_txx
29 template <
class TInputImage,
class TOutputImage,
class TBinaryPriorImage>
30 VoronoiSegmentationImageFilter <TInputImage,TOutputImage,TBinaryPriorImage>
33 m_MeanPercentError = 0.10;
34 m_STDPercentError = 1.5;
35 m_Mean = m_STD = m_MeanTolerance = m_STDTolerance = 0.0;
39 template <
class TInputImage,
class TOutputImage,
class TBinaryPriorImage>
41 ::~VoronoiSegmentationImageFilter()
45 template <
class TInputImage,
class TOutputImage,
class TBinaryPriorImage>
48 ::SetMeanPercentError(
double x)
50 m_MeanPercentError = x;
51 m_MeanTolerance = x*m_Mean;
55 template <
class TInputImage,
class TOutputImage,
class TBinaryPriorImage>
58 ::SetSTDPercentError(
double x)
60 m_STDPercentError = x;
61 m_STDTolerance = x*m_STD;
64 template <
class TInputImage,
class TOutputImage,
class TBinaryPriorImage>
69 int num =
static_cast<int>( Plist.size() );
76 getp = (double)(this->GetInput()->GetPixel(Plist[i]));
78 addpp=addpp+getp*getp;
81 double savemean,saveSTD;
85 saveSTD = vcl_sqrt((addpp - (addp*addp)/(num) )/(num-1));
101 if( (savemean>-m_MeanTolerance) && (savemean<m_MeanTolerance)
102 && (saveSTD<m_STDTolerance) )
112 template <
class TInputImage,
class TOutputImage ,
class TBinaryPriorImage>
117 RegionType region = this->GetInput()->GetRequestedRegion();
121 this->m_Size = this->GetInput()->GetRequestedRegion().GetSize();
129 unsigned int minx = 0,miny = 0,maxx = 0,maxy = 0;
131 for(i=0;i<this->m_Size[1];i++)
133 for(j=0;j<this->m_Size[0];j++)
135 if( (status==0)&&(ait.
Get()) )
143 else if( (status==1)&&(ait.
Get()) )
161 for(j=0;j<this->m_Size[0];j++)
167 for(i=miny;i<=maxy;i++)
174 for(j=minx;j<=maxx;j++)
179 currp = (float)(iit.
Get());
181 addpp += currp*currp;
186 currp = (float)(iit.
Get());
188 addbb += currp*currp;
192 for(j=maxx+1;j<this->m_Size[0];j++)
200 m_STD = vcl_sqrt((addpp - (addp*addp)/num)/(num-1));
201 float b_Mean = addb/numb;
203 if(this->GetUseBackgroundInAPrior())
205 m_MeanTolerance = vcl_fabs(m_Mean-b_Mean)*this->GetMeanDeviation();
209 m_MeanTolerance = m_Mean*m_MeanPercentError;
211 m_STDTolerance = m_STD*m_STDPercentError;
214 template <
class TInputImage,
class TOutputImage,
class TBinaryPriorImage>
217 ::PrintSelf(std::ostream& os,
Indent indent)
const
219 Superclass::PrintSelf(os, indent);
221 os << indent <<
"Mean = " << m_Mean << std::endl;
222 os << indent <<
"MeanTolerance = " << m_MeanTolerance << std::endl;
223 os << indent <<
"MeanPercentError = " << m_MeanPercentError << std::endl;
224 os << indent <<
"STD = " << m_STD << std::endl;
225 os << indent <<
"STDTolerance = " << m_STDTolerance << std::endl;
226 os << indent <<
"STDPercentError = " << m_STDPercentError << std::endl;