18 #ifndef __itkCannyEdgeDetectionImageFilter_h
19 #define __itkCannyEdgeDetectionImageFilter_h
31 template<
typename TValueType >
83 template<
typename TInputImage,
typename TOutputImage >
134 TInputImage::ImageDimension);
136 TOutputImage::ImageDimension);
144 itkGetConstMacro(Variance,
const ArrayType);
146 itkGetConstMacro(MaximumError,
const ArrayType);
153 for (
unsigned int i = 0; i < TInputImage::ImageDimension; i++ )
169 for (
unsigned int i = 0; i < TInputImage::ImageDimension; i++ )
212 #ifdef ITK_USE_CONCEPT_CHECKING
359 #ifndef ITK_MANUAL_INSTANTIATION
360 #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
Light weight base class for most itk classes.
SparseFieldLayer< ListNodeType > ListType
void Compute2ndDerivativePos()
SizeValueType m_Stride[ImageDimension]
TInputImage::IndexType IndexType
void operator=(const Self &)
static ITK_THREAD_RETURN_TYPE Compute2ndDerivativeThreaderCallback(void *arg)
void Compute2ndDerivative()
TInputImage::SizeValueType SizeValueType
ObjectStore< ListNodeType > ListNodeStorageType
static const unsigned int OutputImageDimension
CannyEdgeDetectionImageFilter * Filter
ConstNeighborhoodIterator< OutputImageType, DefaultBoundaryConditionType > NeighborhoodType
void SetVariance(const typename ArrayType::ValueType v)
void HysteresisThresholding()
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
void Fill(const ValueType &)
GaussianImageFilterType::Pointer m_GaussianFilter
static ITK_THREAD_RETURN_TYPE Compute2ndDerivativePosThreaderCallback(void *arg)
void PrintSelf(std::ostream &os, Indent indent) const
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
virtual void GenerateInputRequestedRegion()
OutputImageType * GetNonMaximumSuppressionImage()
std::slice m_ComputeCannyEdgeSlice[ImageDimension]
void FollowEdge(IndexType index, const OutputImageType *multiplyImageFilterOutput)
void ThreadedCompute2ndDerivative(const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId)
ZeroFluxNeumannBoundaryCondition< OutputImageType > DefaultBoundaryConditionType
SmartPointer< const Self > ConstPointer
OutputImageType::PixelType OutputImagePixelType
TInputImage::PixelType InputImagePixelType
virtual void Modified() const
TOutputImage::RegionType OutputImageRegionType
OutputImageType::Pointer m_UpdateBuffer1
void AllocateUpdateBuffer()
MultiplyImageFilter< OutputImageType, OutputImageType, OutputImageType > MultiplyImageFilterType
const InputImageType * m_InputImage
OutputImagePixelType ComputeCannyEdge(const NeighborhoodType &it, void *globalData)
void ThreadedCompute2ndDerivativePos(const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId)
CannyEdgeDetectionImageFilter Self
Base class for filters that take an image as input and produce an image as output.
OutputImageType::RegionType OutputImageRegionType
Control indentation during Print() invocation.
Pixel-wise multiplication of two images.
virtual ~CannyEdgeDetectionImageFilter()
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
CannyEdgeDetectionImageFilter()
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
static const unsigned int ImageDimension
unsigned int ThreadIdType
This filter is an implementation of a Canny edge detector for scalar-valued images. Based on John Canny's paper "A Computational Approach to Edge Detection"(IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. PAMI-8, No.6, November 1986), there are four major steps used in the edge-detection scheme: (1) Smooth the input image with Gaussian filter. (2) Calculate the second directional derivatives of the smoothed image. (3) Non-Maximum Suppression: the zero-crossings of 2nd derivative are found, and the sign of third derivative is used to find the correct extrema. (4) The hysteresis thresholding is applied to the gradient magnitude (multiplied with zero-crossings) of the smoothed image to find and link edges.
ListPointerType m_NodeList