#include <itkNarrowBandImageFilterBase.h>
This class implements a multi-threaded finite difference image to image solver that can be applied to an arbitrary list of pixels.
For algorithmic details see [94].
Definition at line 69 of file itkNarrowBandImageFilterBase.h.
Classes | |
struct | ThreadRegionType |
Static Public Attributes | |
static constexpr unsigned int | ImageDimension = Superclass::ImageDimension |
![]() | |
static constexpr unsigned int | ImageDimension = OutputImageType::ImageDimension |
![]() | |
static constexpr unsigned int | InputImageDimension |
static constexpr unsigned int | InputImageDimension |
static constexpr unsigned int | OutputImageDimension |
static constexpr unsigned int | OutputImageDimension |
![]() | |
static constexpr unsigned int | InputImageDimension = TInputImage::ImageDimension |
static constexpr unsigned int | OutputImageDimension = TOutputImage::ImageDimension |
![]() | |
static constexpr unsigned int | OutputImageDimension = TOutputImage::ImageDimension |
Protected Attributes | |
ValueType | m_IsoSurfaceValue {} |
NarrowBandPointer | m_NarrowBand {} |
std::vector< RegionType > | m_RegionList {} |
IdentifierType | m_ReinitializationFrequency {} |
IdentifierType | m_Step {} |
bool | m_Touched {} |
BooleanStdVectorType | m_TouchedForThread {} |
![]() | |
IdentifierType | m_ElapsedIterations {} |
bool | m_IsInitialized {} |
bool | m_ManualReinitialization {} |
double | m_MaximumRMSError {} |
IdentifierType | m_NumberOfIterations {} |
double | m_RMSChange {} |
![]() | |
bool | m_DynamicMultiThreading { true } |
![]() | |
TimeStamp | m_OutputInformationMTime {} |
bool | m_Updating {} |
![]() | |
std::atomic< int > | m_ReferenceCount {} |
Private Member Functions | |
void | AllocateUpdateBuffer () override |
void | ApplyUpdate (const TimeStepType &) override |
TimeStepType | CalculateChange () override |
virtual void | ThreadedApplyUpdate (const TimeStepType &dt, const ThreadRegionType ®ionToProcess, ThreadIdType threadId) |
virtual TimeStepType | ThreadedCalculateChange (const ThreadRegionType ®ionToProcess) |
Additional Inherited Members | |
![]() | |
static double | GetGlobalDefaultCoordinateTolerance () |
static double | GetGlobalDefaultDirectionTolerance () |
static void | SetGlobalDefaultCoordinateTolerance (double) |
static void | SetGlobalDefaultDirectionTolerance (double) |
![]() | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
![]() | |
static void | BreakOnError () |
static Pointer | New () |
![]() | |
using | InputToOutputRegionCopierType |
using | OutputToInputRegionCopierType |
![]() | |
static const ImageRegionSplitterBase * | GetGlobalDefaultSplitter () |
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION | ThreaderCallback (void *arg) |
![]() | |
template<typename TSourceObject> | |
static void | MakeRequiredOutputs (TSourceObject &sourceObject, const DataObjectPointerArraySizeType numberOfRequiredOutputs) |
static constexpr float | progressFixedToFloat (uint32_t fixed) |
static uint32_t | progressFloatToFixed (float f) |
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::BandNodeType = BandNode<IndexType, PixelType> |
This is the storage type for the nodes on the narrow band.
Definition at line 107 of file itkNarrowBandImageFilterBase.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::ConstPointer = SmartPointer<const Self> |
Definition at line 78 of file itkNarrowBandImageFilterBase.h.
using itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >::FiniteDifferenceFunctionType |
The value type of the time step. This is distinct from PixelType because PixelType may often be a vector value, while the TimeStep is a scalar value.
Definition at line 166 of file itkFiniteDifferenceImageFilter.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::IndexType = typename OutputImageType::IndexType |
The index type for the output image.
Definition at line 100 of file itkNarrowBandImageFilterBase.h.
using itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >::InputImageType |
Input and output image types.
Definition at line 148 of file itkFiniteDifferenceImageFilter.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandIterator = typename NarrowBandType::Iterator |
Definition at line 113 of file itkNarrowBandImageFilterBase.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandPointer = typename NarrowBandType::Pointer |
Definition at line 111 of file itkNarrowBandImageFilterBase.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandType = NarrowBand<BandNodeType> |
The list type for storing the narrow band.
Definition at line 110 of file itkNarrowBandImageFilterBase.h.
using itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >::OutputImageType |
Definition at line 149 of file itkFiniteDifferenceImageFilter.h.
using itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >::PixelType |
Definition at line 157 of file itkFiniteDifferenceImageFilter.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::Pointer = SmartPointer<Self> |
Definition at line 77 of file itkNarrowBandImageFilterBase.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::RegionType = typename NarrowBandType::RegionType |
Definition at line 112 of file itkNarrowBandImageFilterBase.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::Self = NarrowBandImageFilterBase |
Standard class type aliases
Definition at line 75 of file itkNarrowBandImageFilterBase.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::Superclass = FiniteDifferenceImageFilter<TInputImage, TOutputImage> |
Definition at line 76 of file itkNarrowBandImageFilterBase.h.
using itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >::TimeStepType |
Definition at line 167 of file itkFiniteDifferenceImageFilter.h.
using itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::ValueType = typename OutputImageType::ValueType |
The data type used in numerical computations. Derived from the output image type.
Definition at line 104 of file itkNarrowBandImageFilterBase.h.
|
inlineprotected |
Definition at line 222 of file itkNarrowBandImageFilterBase.h.
References m_IsoSurfaceValue, m_NarrowBand, m_ReinitializationFrequency, m_Step, m_Touched, and itk::NarrowBand< BandNodeType >::New().
Referenced by GetNameOfClass().
|
overrideprotecteddefault |
|
inlineoverrideprivatevirtual |
This method allocates a temporary update container in the subclass.
Implements itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
Definition at line 312 of file itkNarrowBandImageFilterBase.h.
|
inlineoverrideprivatevirtual |
This method is defined by a subclass to apply changes to the output from an update buffer and a time step value "dt".
dt | Time step value. |
Implements itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
Definition at line 322 of file itkNarrowBandImageFilterBase.h.
|
inlineoverrideprivatevirtual |
This method is defined by a subclass to populate an update buffer with changes for the pixels in the output. It returns a time step value to be used for the update.
Implements itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
Definition at line 332 of file itkNarrowBandImageFilterBase.h.
|
protected |
|
overridevirtual |
This method can be defined in subclasses as needed to copy the input to the output. See DenseFiniteDifferenceImageFilter for an implementation.
Implements itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
|
inlinevirtual |
This is the virtual method called by Initialize to set the band of operation. It is left to the subclasses to define this functionality. This function can make use of above InsertNarrowBandNode function to create a band.
Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, float, Image< float, TInputImage::ImageDimension > >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >, and itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >.
Definition at line 205 of file itkNarrowBandImageFilterBase.h.
|
overrideprotectedvirtual |
This is the default, high-level algorithm for calculating finite difference solutions. It calls virtual methods in its subclasses to implement the major steps of the algorithm.
This method is a thread implementation of the iterative scheme implemented in itkFiniteDifferenceImageFilter::GenerateData. It relies on ThreadedApplyUpdate and ThreadedCalculateChange to update the solution at every iteration.
Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, float, Image< float, TInputImage::ImageDimension > >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >, and itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >.
|
virtual |
Set/Get IsoSurfaceValue to use in the input image
|
overridevirtual |
Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, float, Image< float, TInputImage::ImageDimension > >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >, and itk::NarrowBandThresholdSegmentationLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType >.
References NarrowBandImageFilterBase().
|
inline |
Get the narrow band inner radius.
Definition at line 194 of file itkNarrowBandImageFilterBase.h.
References m_NarrowBand.
|
inline |
Get the narrow band total radius.
Definition at line 174 of file itkNarrowBandImageFilterBase.h.
References m_NarrowBand.
|
protected |
This function returns a single region (of the narrow band list) for use in multi-threading
|
overrideprotectedvirtual |
This function clears the existing narrow band, calls CreateNarrowBand to create a band, and calls the SplitRegions function of NarrowBand to pre-partition the band for multi-threading.
Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
|
overrideprotectedvirtual |
This method check the narrow band state each iteration and reinitialize the narrow band if it is appropriate calling CreateNarrowBand and SplitRegions to pre-partition the band for multi-threading.
Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, float, Image< float, TInputImage::ImageDimension > >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >, and itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >.
|
inline |
Root Mean Square Change between successive iterations This function is used to insert a pixel index into the narrow band The entire narrow band can be constructed using this method. Usually, however, the narrow band is initialized and reinitialized automatically by the subclass.
Definition at line 128 of file itkNarrowBandImageFilterBase.h.
References m_NarrowBand, and itk::Object::Modified().
|
inline |
Definition at line 136 of file itkNarrowBandImageFilterBase.h.
References itk::BandNode< TIndexType, TDataType >::m_Index, m_NarrowBand, and itk::Object::Modified().
|
inline |
Definition at line 146 of file itkNarrowBandImageFilterBase.h.
References itk::BandNode< TIndexType, TDataType >::m_Data, itk::BandNode< TIndexType, TDataType >::m_Index, m_NarrowBand, itk::BandNode< TIndexType, TDataType >::m_NodeState, and itk::Object::Modified().
|
inlineoverrideprotectedvirtual |
This method allows deallocation of data and further post processing
Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
Definition at line 278 of file itkNarrowBandImageFilterBase.h.
|
overrideprotectedvirtual |
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, float, Image< float, TInputImage::ImageDimension > >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >, itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, Image< TOutputPixelType, TInputImage::ImageDimension > >, and itk::NarrowBandThresholdSegmentationLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType >.
|
virtual |
Set/Get IsoSurfaceValue to use in the input image
|
inlinevirtual |
Definition at line 209 of file itkNarrowBandImageFilterBase.h.
References m_NarrowBand, and itk::Object::Modified().
|
inline |
Set the narrow band inner radius. The inner radius is the safe are where the level set can be computed. The default value is 1.
Definition at line 182 of file itkNarrowBandImageFilterBase.h.
References m_NarrowBand, and itk::Object::Modified().
|
inline |
Set the narrow band total radius. The narrow band width will be twice this value (positive and negative distance to the zero level set). The default value is 3.
Definition at line 162 of file itkNarrowBandImageFilterBase.h.
References m_NarrowBand, and itk::Object::Modified().
|
privatevirtual |
This method applies changes from the m_NarrowBand to the output using the ThreadedApplyUpdate() method and a multithreading mechanism. "dt" is the time step to use for the update of each pixel.
|
privatevirtual |
This method populates m_NarrowBand with changes for each pixel in the output using the ThreadedCalculateChange() method and a multithreading mechanism. Returns value is a time step to be used for the update.
|
staticconstexpr |
Dimensionality of input and output data is assumed to be the same. It is inherited from the superclass.
Definition at line 90 of file itkNarrowBandImageFilterBase.h.
|
protected |
Definition at line 303 of file itkNarrowBandImageFilterBase.h.
Referenced by NarrowBandImageFilterBase().
|
protected |
Definition at line 237 of file itkNarrowBandImageFilterBase.h.
Referenced by GetNarrowBandInnerRadius(), GetNarrowBandTotalRadius(), InsertNarrowBandNode(), InsertNarrowBandNode(), InsertNarrowBandNode(), NarrowBandImageFilterBase(), SetNarrowBand(), SetNarrowBandInnerRadius(), and SetNarrowBandTotalRadius().
|
protected |
A list of subregions of the narrowband which are passed to each thread for parallel processing.
Definition at line 254 of file itkNarrowBandImageFilterBase.h.
|
protected |
Definition at line 296 of file itkNarrowBandImageFilterBase.h.
Referenced by NarrowBandImageFilterBase().
|
protected |
Definition at line 297 of file itkNarrowBandImageFilterBase.h.
Referenced by NarrowBandImageFilterBase().
|
protected |
Definition at line 299 of file itkNarrowBandImageFilterBase.h.
Referenced by NarrowBandImageFilterBase().
|
protected |
Definition at line 301 of file itkNarrowBandImageFilterBase.h.