18 #ifndef itkCannyEdgeDetectionImageFilter_h 19 #define itkCannyEdgeDetectionImageFilter_h 32 template<
typename TValue >
86 template<
typename TInputImage,
typename TOutputImage >
136 itkStaticConstMacro(ImageDimension,
unsigned int,
137 TInputImage::ImageDimension);
138 itkStaticConstMacro(OutputImageDimension,
unsigned int,
139 TOutputImage::ImageDimension);
146 itkSetMacro(Variance, ArrayType);
147 itkGetConstMacro(Variance,
const ArrayType);
148 itkSetMacro(MaximumError, ArrayType);
149 itkGetConstMacro(MaximumError,
const ArrayType);
156 for (
unsigned int i = 0; i < TInputImage::ImageDimension; i++ )
172 for (
unsigned int i = 0; i < TInputImage::ImageDimension; i++ )
176 m_MaximumError.Fill(v);
194 itkSetMacro(UpperThreshold, OutputImagePixelType);
195 itkGetConstMacro(UpperThreshold, OutputImagePixelType);
197 itkSetMacro(LowerThreshold, OutputImagePixelType);
198 itkGetConstMacro(LowerThreshold, OutputImagePixelType);
202 return this->m_MultiplyImageFilter->GetOutput();
212 virtual void GenerateInputRequestedRegion() ITK_OVERRIDE;
214 #ifdef ITK_USE_CONCEPT_CHECKING 231 void PrintSelf(std::ostream & os,
Indent indent)
const ITK_OVERRIDE;
233 void GenerateData() ITK_OVERRIDE;
242 void operator=(const Self &) ITK_DELETE_FUNCTION;
253 void AllocateUpdateBuffer();
256 void HysteresisThresholding();
259 void FollowEdge(IndexType index,
const OutputImageType *multiplyImageFilterOutput);
264 void Compute2ndDerivative();
282 void ThreadedCompute2ndDerivative(
const OutputImageRegionType &
289 Compute2ndDerivativeThreaderCallback(
void *arg);
294 OutputImagePixelType ComputeCannyEdge(
const NeighborhoodType & it,
301 void Compute2ndDerivativePos();
308 void ThreadedCompute2ndDerivativePos(
const OutputImageRegionType &
315 Compute2ndDerivativePosThreaderCallback(
void *arg);
348 std::slice m_ComputeCannyEdgeSlice[ImageDimension];
350 SizeValueType m_Stride[ImageDimension];
360 #ifndef ITK_MANUAL_INSTANTIATION 361 #include "itkCannyEdgeDetectionImageFilter.hxx" FixedArray< double, itkGetStaticConstMacro(ImageDimension) > ArrayType
A function object that determines a neighborhood of values at an image boundary according to a Neuman...
TInputImage::RegionType InputImageRegionType
SparseFieldLayer< ListNodeType > ListType
TInputImage::IndexType IndexType
TInputImage::SizeValueType SizeValueType
ObjectStore< ListNodeType > ListNodeStorageType
CannyEdgeDetectionImageFilter * Filter
ConstNeighborhoodIterator< OutputImageType, DefaultBoundaryConditionType > NeighborhoodType
void SetVariance(const typename ArrayType::ValueType v)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension) > m_ComputeCannyEdge1stDerivativeOper
OutputImagePixelType m_LowerThreshold
Const version of NeighborhoodIterator, defining iteration of a local N-dimensional neighborhood of pi...
unsigned long SizeValueType
#define ITK_THREAD_RETURN_TYPE
ImageToImageFilter< TInputImage, TOutputImage > Superclass
ListNodeStorageType::Pointer m_NodeStore
GaussianImageFilterType::Pointer m_GaussianFilter
DiscreteGaussianImageFilter< InputImageType, OutputImageType > GaussianImageFilterType
OutputImagePixelType m_UpperThreshold
TOutputImage OutputImageType
SmartPointer< Self > Pointer
MultiplyImageFilterType::Pointer m_MultiplyImageFilter
ListType::Pointer ListPointerType
DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension) > m_ComputeCannyEdge2ndDerivativeOper
OutputImageType * GetNonMaximumSuppressionImage()
ZeroFluxNeumannBoundaryCondition< OutputImageType > DefaultBoundaryConditionType
SmartPointer< const Self > ConstPointer
TInputImage::PixelType InputImagePixelType
bool NotExactlyEquals(const TInput1 &x1, const TInput2 &x2)
unsigned int ThreadIdType
TOutputImage::RegionType OutputImageRegionType
OutputImageType::Pointer m_UpdateBuffer1
MultiplyImageFilter< OutputImageType, OutputImageType, OutputImageType > MultiplyImageFilterType
CannyEdgeDetectionImageFilter Self
Base class for filters that take an image as input and produce an image as output.
Control indentation during Print() invocation.
Pixel-wise multiplication of two images.
ListNode< IndexType > ListNodeType
A very simple linked list that is used to manage nodes in a layer of a sparse field level-set solver...
#define itkConceptMacro(name, concept)
A specialized memory management object for allocating and destroying contiguous blocks of objects...
TInputImage InputImageType
void SetMaximumError(const typename ArrayType::ValueType v)
Blurs an image by separable convolution with discrete gaussian kernels. This filter performs Gaussian...
TOutputImage::PixelType OutputImagePixelType
OutputImageType * m_OutputImage
This filter is an implementation of a Canny edge detector for scalar-valued images.
ListPointerType m_NodeList