18 #ifndef itkNarrowBandImageFilterBase_h
19 #define itkNarrowBandImageFilterBase_h
67 template<
typename TInputImage,
typename TOutputImage >
89 itkStaticConstMacro(ImageDimension,
unsigned int, Superclass::ImageDimension);
116 itkGetConstMacro(IsoSurfaceValue,
ValueType);
128 m_NarrowBand->PushBack(node);
138 m_NarrowBand->PushBack(tmpnode);
144 const signed char & nodestate)
152 m_NarrowBand->PushBack(tmpnode);
161 if ( m_NarrowBand->GetTotalRadius() != val )
163 m_NarrowBand->SetTotalRadius(val);
172 return m_NarrowBand->GetTotalRadius();
179 if ( m_NarrowBand->GetInnerRadius() != val )
181 m_NarrowBand->SetInnerRadius(val);
190 return m_NarrowBand->GetInnerRadius();
202 if ( m_NarrowBand != ptr )
209 virtual void CopyInputToOutput() ITK_OVERRIDE;
214 m_NarrowBand = NarrowBandType::New();
215 m_NarrowBand->SetTotalRadius(4);
216 m_NarrowBand->SetInnerRadius(2);
217 m_ReinitializationFrequency = 6;
218 m_IsoSurfaceValue = 0.0;
225 void PrintSelf(std::ostream & os,
Indent indent)
const ITK_OVERRIDE;
247 void GetSplitRegion(
const size_t& i, ThreadRegionType & splitRegion);
253 virtual void Initialize() ITK_OVERRIDE;
259 virtual
void InitializeIteration() ITK_OVERRIDE;
263 virtual
void PostProcessOutput() ITK_OVERRIDE;
266 void ClearNarrowBand();
274 virtual
void GenerateData() ITK_OVERRIDE;
282 std::vector<
bool > m_TouchedForThread;
313 virtual void ThreadedIterate(
void *arg,
ThreadIdType threadId);
318 virtual void ThreadedApplyUpdate(
const TimeStepType& dt,
319 const ThreadRegionType & regionToProcess,
327 virtual TimeStepType ThreadedCalculateChange(
const ThreadRegionType & regionToProcess,
334 #ifndef ITK_MANUAL_INSTANTIATION
335 #include "itkNarrowBandImageFilterBase.hxx"
std::vector< RegionType > m_RegionList
virtual void ApplyUpdate(const TimeStepType &) override
std::vector< bool > ValidTimeStepList
void SetNarrowBandInnerRadius(const float &val)
virtual void SetNarrowBand(NarrowBandType *ptr)
NarrowBandType::RegionType RegionType
OutputImageType::IndexType IndexType
OutputPixelType PixelType
Superclass::InputImageType InputImageType
SmartPointer< Self > Pointer
float GetNarrowBandTotalRadius() const
#define ITK_THREAD_RETURN_TYPE
Superclass::FiniteDifferenceFunctionType FiniteDifferenceFunctionType
void InsertNarrowBandNode(const BandNodeType &node)
SizeValueType IdentifierType
virtual void CreateNarrowBand()
FiniteDifferenceImageFilter< TInputImage, TOutputImage > Superclass
void InsertNarrowBandNode(const IndexType &index, const PixelType &value, const signed char &nodestate)
NodeContainerType::iterator Iterator
void InsertNarrowBandNode(const IndexType &index)
SmartPointer< const Self > ConstPointer
virtual ~NarrowBandImageFilterBase() override
float GetNarrowBandInnerRadius() const
NarrowBandType::Pointer NarrowBandPointer
NarrowBandType::Iterator NarrowBandIterator
unsigned int ThreadIdType
NarrowBandImageFilterBase Self
FiniteDifferenceFunctionType::TimeStepType TimeStepType
NarrowBand< BandNodeType > NarrowBandType
std::vector< TimeStepType > TimeStepList
This class implements a multi-threaded finite difference image to image solver that can be applied to...
void SetNarrowBandTotalRadius(const float &val)
Base class for filters that take an image as input and produce an image as output.
NarrowBandImageFilterBase * Filter
Control indentation during Print() invocation.
Superclass::TimeStepType TimeStepType
virtual void AllocateUpdateBuffer() override
virtual TimeStepType CalculateChange() override
OutputImageType::ValueType ValueType
Superclass::OutputImageType OutputImageType
NarrowBandPointer m_NarrowBand
BandNode< IndexType, PixelType > BandNodeType
Superclass::PixelType PixelType
Standard barrier class implementation for synchronizing the execution of threads. ...