ITK
4.9.0
Insight Segmentation and Registration Toolkit
|
#include <itkParabolicErodeDilateImageFilter.h>
Parent class for morphological operations with parabolic structuring elements.
Parabolic structuring elements are the morphological counterpart of the gaussian function in linear processing. Parabolic structuring elements are dimensionally decomposable and fast algorithms are available for computing erosions and dilations along lines. This class implements the "point of contact" algorithm and the "intersection" algorithm. The contact point algorithm is faster at small scales. The intersection algorithm was rediscovered by Felzenszwalb & Huttenlocher, but was actually described and tested by van den Boomgaard many years earlier. The intersection algorithm is faster for scales > 1, and independent of scale. It also seems to perform significantly better in the distance transform application. The intersection algorithm is also used in the IJ article on generalised distance transforms.
Parabolic structuring functions can be used as a fast alternative to the "rolling ball" structuring element classically used in background estimation, for example in ImageJ, have applications in image sharpening and distance transform computation.
This class uses an internal buffer of RealType pixels for each line. This line is cast to the output pixel type when written back to the output image. Since the filter uses dimensional decomposition this approach could result in inaccuracy as pixels are cast back and forth between low and high precision types. Use a high precision output type and cast manually if this is a problem.
Boomgaard, R. van den and Dorst, L. and Makram-Ebeid, L.S. and Schavemaker, J. Quadratic structuring functions in mathematical morphology. Mathematical Morphology and its Applications to Image and Signal Processing.
Felzenszwalb, P.F. & Huttenlocher, D.P. Distance Transforms of Sampled Functions. Techreport: Cornell Computing and Information Science, 2004.
This filter is threaded. Threading mechanism derived from SignedMaurerDistanceMap extensions by Gaetan Lehman
Core methods described in the InsightJournal article: "Morphology with parabolic structuring elements"
http://hdl.handle.net/1926/1370
Definition at line 85 of file itkParabolicErodeDilateImageFilter.h.
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool flag) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static const unsigned int | ImageDimension = TInputImage::ImageDimension |
static const unsigned int | OutputImageDimension = TOutputImage::ImageDimension |
static const unsigned int | InputImageDimension = TInputImage::ImageDimension |
Static Public Attributes inherited from itk::ImageToImageFilter< TInputImage, TOutputImage > | |
static const unsigned int | InputImageDimension = TInputImage::ImageDimension |
static const unsigned int | OutputImageDimension = TOutputImage::ImageDimension |
Static Public Attributes inherited from itk::ImageSource< TOutputImage > | |
static const unsigned int | OutputImageDimension = TOutputImage::ImageDimension |
Protected Attributes | |
int | m_ParabolicAlgorithm |
bool | m_UseImageSpacing |
Protected Attributes inherited from itk::ProcessObject | |
TimeStamp | m_OutputInformationMTime |
bool | m_Updating |
Protected Attributes inherited from itk::LightObject | |
AtomicInt< int > | m_ReferenceCount |
Private Member Functions | |
void | operator= (const Self &) |
ParabolicErodeDilateImageFilter (const Self &) | |
Private Attributes | |
int | m_CurrentDimension |
TInputImage::PixelType | m_Extreme |
int | m_MagnitudeSign |
RadiusType | m_Scale |
Additional Inherited Members | |
Protected Types inherited from itk::ImageToImageFilter< TInputImage, TOutputImage > | |
typedef ImageToImageFilterDetail::ImageRegionCopier < itkGetStaticConstMacro(OutputImageDimension), itkGetStaticConstMacro(InputImageDimension) > | InputToOutputRegionCopierType |
typedef ImageToImageFilterDetail::ImageRegionCopier < itkGetStaticConstMacro(InputImageDimension), itkGetStaticConstMacro(OutputImageDimension) > | OutputToInputRegionCopierType |
Static Protected Member Functions inherited from itk::ImageSource< TOutputImage > | |
static const ImageRegionSplitterBase * | GetGlobalDefaultSplitter () |
static ITK_THREAD_RETURN_TYPE | ThreaderCallback (void *arg) |
typedef SmartPointer< const Self > itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::ConstPointer |
Definition at line 93 of file itkParabolicErodeDilateImageFilter.h.
typedef TInputImage::ConstPointer itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::InputImageConstPointer |
Definition at line 111 of file itkParabolicErodeDilateImageFilter.h.
typedef TInputImage::Pointer itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::InputImagePointer |
Smart pointer typedef support.
Definition at line 110 of file itkParabolicErodeDilateImageFilter.h.
typedef TInputImage itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::InputImageType |
Pixel Type of the input image
Definition at line 99 of file itkParabolicErodeDilateImageFilter.h.
typedef TInputImage::SizeType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::InputSizeType |
Definition at line 112 of file itkParabolicErodeDilateImageFilter.h.
typedef NumericTraits< PixelType >::FloatType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::InternalRealType |
Define the image type for internal computations RealType is usually 'double' in NumericTraits. Here we prefer float in order to save memory.
Definition at line 134 of file itkParabolicErodeDilateImageFilter.h.
typedef OutputImageType::RegionType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::OutputImageRegionType |
Definition at line 129 of file itkParabolicErodeDilateImageFilter.h.
typedef TOutputImage itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::OutputImageType |
Definition at line 103 of file itkParabolicErodeDilateImageFilter.h.
typedef OutputImageType::IndexType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::OutputIndexType |
Definition at line 115 of file itkParabolicErodeDilateImageFilter.h.
typedef TOutputImage::PixelType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::OutputPixelType |
Definition at line 107 of file itkParabolicErodeDilateImageFilter.h.
typedef TOutputImage::SizeType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::OutputSizeType |
Definition at line 113 of file itkParabolicErodeDilateImageFilter.h.
typedef TInputImage::PixelType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::PixelType |
Definition at line 104 of file itkParabolicErodeDilateImageFilter.h.
typedef SmartPointer< Self > itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::Pointer |
Definition at line 92 of file itkParabolicErodeDilateImageFilter.h.
typedef itk::FixedArray< ScalarRealType, TInputImage::ImageDimension > itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::RadiusType |
a type to represent the "kernel radius"
Definition at line 118 of file itkParabolicErodeDilateImageFilter.h.
typedef NumericTraits< PixelType >::RealType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::RealType |
Definition at line 105 of file itkParabolicErodeDilateImageFilter.h.
typedef NumericTraits< PixelType >::ScalarRealType itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::ScalarRealType |
Definition at line 106 of file itkParabolicErodeDilateImageFilter.h.
typedef ParabolicErodeDilateImageFilter itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::Self |
Standard class typedefs.
Definition at line 90 of file itkParabolicErodeDilateImageFilter.h.
typedef ImageToImageFilter< TInputImage, TOutputImage > itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::Superclass |
Definition at line 91 of file itkParabolicErodeDilateImageFilter.h.
enum itk::ParabolicErodeDilateImageFilter::ParabolicAlgorithm |
Enumerator | |
---|---|
NOCHOICE | |
CONTACTPOINT | |
INTERSECTION |
Definition at line 144 of file itkParabolicErodeDilateImageFilter.h.
|
protected |
End concept checking
|
inlineprotectedvirtual |
End concept checking
Definition at line 181 of file itkParabolicErodeDilateImageFilter.h.
|
private |
|
virtual |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::Object.
|
protectedvirtual |
Give the process object a chance to indictate that it will produce more output than it was requested to produce. For example, many imaging filters must compute the entire output at once or can only produce output in complete slices. Such filters cannot handle smaller requested regions. These filters must provide an implementation of this method, setting the output requested region to the size they will produce. By default, a process object does not modify the size of the output requested region.
Reimplemented from itk::ProcessObject.
|
protectedvirtual |
Generate Data
Reimplemented from itk::ImageSource< TOutputImage >.
|
protectedvirtual |
What is the input requested region that is required to produce the output requested region? The base assumption for image processing filters is that the input requested region can be set to match the output requested region. If a filter requires more input (for instance a filter that uses neighborhoods needs more input than output to avoid introducing artificial boundary conditions) or less input (for instance a magnify filter) will have to override this method. In doing so, it should call its superclass' implementation as its first step. Note that imaging filters operate differently than the classes to this point in the class hierarchy. Up till now, the base assumption has been that the largest possible region will be requested of the input.
This implementation of GenerateInputRequestedRegion() only processes the inputs that are a subclass of the ImageBase<InputImageDimension>. If an input is another type of DataObject (including an Image of a different dimension), they are skipped by this method. The subclasses of ImageToImageFilter are responsible for providing an implementation of GenerateInputRequestedRegion() when there are multiple inputs of different types.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
|
virtual |
Runtime information support.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::ParabolicErodeImageFilter< TInputImage, TOutputImage >, and itk::ParabolicDilateImageFilter< TInputImage, TOutputImage >.
|
virtual |
|
virtual |
|
virtual |
|
static |
Method for creation through the object factory.
|
private |
|
protectedvirtual |
End concept checking
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
|
virtual |
Set/Get the method used. Choices are contact point or intersection. Intersection is the default. Contact point can be faster at small scales.
void itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::SetScale | ( | ScalarRealType | scale | ) |
|
virtual |
|
virtual |
Set/Get whether the scale refers to pixels or world units - default is false
|
protectedvirtual |
Split the output's RequestedRegion into "pieces" pieces, returning region "i" as "splitRegion". This method is called concurrently "pieces" times. The regions must not overlap. The method returns the number of pieces that the routine is capable of splitting the output RequestedRegion, i.e. return value is less than or equal to "pieces".
To override the algorithm used split the image this method should no longer be overridden. Instead, the algorithm should be implemented in a ImageRegionSplitterBase class, and the GetImageRegionSplitter should overridden to return the splitter object with the desired algorithm.
Reimplemented from itk::ImageSource< TOutputImage >.
|
protectedvirtual |
If an imaging filter can be implemented as a multithreaded algorithm, the filter will provide an implementation of ThreadedGenerateData(). This superclass will automatically split the output image into a number of pieces, spawn multiple threads, and call ThreadedGenerateData() in each thread. Prior to spawning threads, the BeforeThreadedGenerateData() method is called. After all the threads have completed, the AfterThreadedGenerateData() method is called. If an image processing filter cannot support threading, that filter should provide an implementation of the GenerateData() method instead of providing an implementation of ThreadedGenerateData(). If a filter provides a GenerateData() method as its implementation, then the filter is responsible for allocating the output data. If a filter provides a ThreadedGenerateData() method as its implementation, then the output memory will allocated automatically by this superclass. The ThreadedGenerateData() method should only produce the output specified by "outputThreadRegion" parameter. ThreadedGenerateData() cannot write to any other portion of the output image (as this is responsibility of a different thread).
Reimplemented from itk::ImageSource< TOutputImage >.
itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::typedef | ( | Concept::SameDimension< itkGetStaticConstMacro(InputImageDimension), itkGetStaticConstMacro(OutputImageDimension) > | ) |
Image related typedefs. Begin concept checking This class requires SameDimension in the form of ( Concept::SameDimension< itkGetStaticConstMacro(InputImageDimension), itkGetStaticConstMacro(OutputImageDimension) > )
itk::ParabolicErodeDilateImageFilter< TInputImage, doDilate, TOutputImage >::typedef | ( | Concept::Comparable< PixelType > | ) |
This class requires Comparable in the form of ( Concept::Comparable< PixelType > )
|
virtual |
|
virtual |
|
static |
Image dimension.
Definition at line 122 of file itkParabolicErodeDilateImageFilter.h.
|
static |
Image dimension.
Definition at line 126 of file itkParabolicErodeDilateImageFilter.h.
|
private |
Definition at line 209 of file itkParabolicErodeDilateImageFilter.h.
|
private |
Definition at line 206 of file itkParabolicErodeDilateImageFilter.h.
|
private |
Definition at line 208 of file itkParabolicErodeDilateImageFilter.h.
|
protected |
Definition at line 199 of file itkParabolicErodeDilateImageFilter.h.
|
private |
Definition at line 204 of file itkParabolicErodeDilateImageFilter.h.
|
protected |
Definition at line 198 of file itkParabolicErodeDilateImageFilter.h.
|
static |
Image dimension.
Definition at line 124 of file itkParabolicErodeDilateImageFilter.h.