18 #ifndef __itkCannyEdgeDetectionImageFilter_h
19 #define __itkCannyEdgeDetectionImageFilter_h
31 template<
class TValueType >
83 template<
class TInputImage,
class TOutputImage >
133 itkStaticConstMacro(ImageDimension,
unsigned int,
134 TInputImage::ImageDimension);
135 itkStaticConstMacro(OutputImageDimension,
unsigned int,
136 TOutputImage::ImageDimension);
144 itkGetConstMacro(Variance,
const ArrayType);
146 itkGetConstMacro(MaximumError,
const ArrayType);
153 for (
unsigned int i = 0; i < TInputImage::ImageDimension; i++ )
155 if ( m_Variance[i] != v )
169 for (
unsigned int i = 0; i < TInputImage::ImageDimension; i++ )
171 if ( m_MaximumError[i] != v )
173 m_MaximumError.Fill(v);
191 itkSetMacro(UpperThreshold, OutputImagePixelType);
192 itkGetConstMacro(UpperThreshold, OutputImagePixelType);
194 itkSetMacro(LowerThreshold, OutputImagePixelType);
195 itkGetConstMacro(LowerThreshold, OutputImagePixelType);
199 return this->m_MultiplyImageFilter->GetOutput();
209 virtual void GenerateInputRequestedRegion()
212 #ifdef ITK_USE_CONCEPT_CHECKING
229 void PrintSelf(std::ostream & os,
Indent indent)
const;
240 void operator=(
const Self &);
251 void AllocateUpdateBuffer();
254 void HysteresisThresholding();
262 void Compute2ndDerivative();
287 Compute2ndDerivativeThreaderCallback(
void *arg);
299 void Compute2ndDerivativePos();
313 Compute2ndDerivativePosThreaderCallback(
void *arg);
346 std::slice m_ComputeCannyEdgeSlice[ImageDimension];
356 #ifndef ITK_MANUAL_INSTANTIATION
357 #include "itkCannyEdgeDetectionImageFilter.hxx"