ITK  5.2.0
Insight Toolkit
itkParallelSparseFieldLevelSetImageFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkParallelSparseFieldLevelSetImageFilter_h
19 #define itkParallelSparseFieldLevelSetImageFilter_h
20 
22 #include "itkSparseFieldLayer.h"
23 #include "itkObjectStore.h"
25 #include "itkMultiThreaderBase.h"
26 #include <condition_variable>
27 #include <vector>
28 
29 namespace itk
30 {
36 template <typename TNodeIndexType>
37 class ITK_TEMPLATE_EXPORT ParallelSparseFieldLevelSetNode
38 {
39 public:
40  TNodeIndexType m_Index;
41  float m_Value;
44 };
45 
74 template <typename TNeighborhoodType>
76 {
77 public:
78  using NeighborhoodType = TNeighborhoodType;
81 
82  static constexpr unsigned int Dimension = NeighborhoodType::Dimension;
83 
84  const RadiusType &
85  GetRadius() const
86  {
87  return m_Radius;
88  }
89 
90  const unsigned int &
91  GetArrayIndex(unsigned int i) const
92  {
93  return m_ArrayIndex[i];
94  }
95 
96  const OffsetType &
97  GetNeighborhoodOffset(unsigned int i) const
98  {
99  return m_NeighborhoodOffset[i];
100  }
101 
102  const unsigned int &
103  GetSize() const
104  {
105  return m_Size;
106  }
107 
108  unsigned int
109  GetStride(unsigned int i)
110  {
111  return m_StrideTable[i];
112  }
113 
115 
117  {
118  m_ArrayIndex.clear();
119  m_NeighborhoodOffset.clear();
120  }
121 
122  void
123  Print(std::ostream & os) const;
124 
125 private:
126  char m_Pad1[128];
127  unsigned int m_Size;
129  std::vector<unsigned int> m_ArrayIndex;
130  std::vector<OffsetType> m_NeighborhoodOffset;
131 
134  unsigned int m_StrideTable[Dimension];
135  char m_Pad2[128];
136 };
137 
254 template <typename TInputImage, typename TOutputImage>
255 class ITK_TEMPLATE_EXPORT ParallelSparseFieldLevelSetImageFilter
256  : public FiniteDifferenceImageFilter<TInputImage, TOutputImage>
257 {
258 public:
259  ITK_DISALLOW_COPY_AND_MOVE(ParallelSparseFieldLevelSetImageFilter);
260 
266 
269  using FiniteDifferenceFunctionType = typename Superclass::FiniteDifferenceFunctionType;
270  using RadiusType = typename Superclass::RadiusType;
271  using NeighborhoodScalesType = typename Superclass::NeighborhoodScalesType;
272 
274  itkNewMacro(Self);
275 
278 
280  using InputImageType = TInputImage;
281  using OutputImageType = TOutputImage;
283 
284  static constexpr unsigned int ImageDimension = TOutputImage::ImageDimension;
285 
286  using PixelType = typename OutputImageType::PixelType;
287 
289 
292  using ValueType = typename OutputImageType::ValueType;
293 
296 
300 
302  using LayerListType = std::vector<LayerPointerType>;
303 
305  using StatusType = signed char;
306 
310 
314 
316 
320  itkSetMacro(NumberOfLayers, StatusType);
321  itkGetConstMacro(NumberOfLayers, StatusType);
323 
325  itkSetMacro(IsoSurfaceValue, ValueType);
326  itkGetConstMacro(IsoSurfaceValue, ValueType);
328 
331  {
332  // get the 'z' value for the index
333  const unsigned int indexZ = index[m_SplitAxis];
334  // get the thread in whose region the index lies
335  const unsigned int ThreadNum = this->GetThreadNumber(indexZ);
336 
337  // get the active list for that thread
338  return m_Data[ThreadNum].m_Layers[0];
339  }
340 
341 #ifdef ITK_USE_CONCEPT_CHECKING
342  // Begin concept checking
343  itkConceptMacro(OutputEqualityComparableCheck, (Concept::EqualityComparable<PixelType>));
344  itkConceptMacro(DoubleConvertibleToOutputCheck, (Concept::Convertible<double, PixelType>));
345  itkConceptMacro(OutputOStreamWritableCheck, (Concept::OStreamWritable<PixelType>));
346  // End concept checking
347 #endif
348 
349 protected:
351  ~ParallelSparseFieldLevelSetImageFilter() override = default;
352  void
353  PrintSelf(std::ostream & os, Indent indent) const override;
354 
357 
360  double m_ConstantGradientValue{ 1.0 };
361 
364 
367 
371 
375 
379 
383 
387 
392  typename OutputImageType::Pointer m_ShiftedImage;
393 
399 
405 
408  typename OutputImageType::Pointer m_OutputImage;
409 
413  typename OutputImageType::Pointer m_OutputImageTemp;
414 
417 
420 
424  // ValueType m_RMSChange;
425 
428  void
429  GenerateData() override;
430 
435  void
436  CopyInputToOutput() override;
437 
439  void
441  {}
442 
445  void
446  Initialize() override;
447 
452  void
453  ConstructActiveLayer();
454 
456  void
457  InitializeActiveLayerValues();
458 
462  void
463  ConstructLayer(const StatusType & from, const StatusType & to);
464 
466  void
467  ProcessStatusList(LayerType * InputList,
468  const StatusType & ChangeToStatus,
469  const StatusType & SearchForStatus,
470  ThreadIdType ThreadId);
471 
476  void
477  PropagateAllLayerValues();
478 
486  void
487  PropagateLayerValues(const StatusType & from,
488  const StatusType & to,
489  const StatusType & promote,
490  unsigned int InOrOut);
491 
496  virtual void
497  InitializeBackgroundPixels();
498 
502  void
503  ThreadedAllocateData(ThreadIdType ThreadId);
504 
505  void
506  ThreadedInitializeData(ThreadIdType ThreadId, const ThreadRegionType & ThreadRegion);
507 
517  void
518  ComputeInitialThreadBoundaries();
519 
521  unsigned int
522  GetThreadNumber(unsigned int splitAxisValue);
523 
525  void
526  GetThreadRegionSplitByBoundary(ThreadIdType ThreadId, ThreadRegionType & ThreadRegion);
527 
530  void
531  DeallocateData();
532 
537  void
538  Iterate();
539 
544  inline virtual ValueType
545  ThreadedCalculateUpdateValue(const ThreadIdType itkNotUsed(ThreadId),
546  const IndexType itkNotUsed(index),
547  const TimeStepType & dt,
548  const ValueType & value,
549  const ValueType & change)
550  {
551  return (value + static_cast<ValueType>(dt) * change);
552  }
553 
554  // This method can be overridden in derived classes.
555  // The pixel at 'index' is entering the active layer for thread 'ThreadId'.
556  // The outputimage at 'index' will have the value as given by the
557  // 'value' parameter.
558  virtual void
559  ThreadedProcessPixelEnteringActiveLayer(const IndexType & itkNotUsed(index),
560  const ValueType & itkNotUsed(value),
561  ThreadIdType itkNotUsed(ThreadId));
562 
564  void
565  ApplyUpdate(const TimeStepType &) override
566  {}
567 
570  virtual void
571  ThreadedApplyUpdate(const TimeStepType & dt, ThreadIdType ThreadId);
572 
574  TimeStepType
575  CalculateChange() override
576  {
578  }
579 
582  virtual TimeStepType
583  ThreadedCalculateChange(ThreadIdType ThreadId);
584 
591  void
592  ThreadedUpdateActiveLayerValues(const TimeStepType & dt,
593  LayerType * StatusUpList,
594  LayerType * StatusDownList,
595  ThreadIdType ThreadId);
596 
599  void
600  CopyInsertList(ThreadIdType ThreadId, LayerPointerType FromListPtr, LayerPointerType ToListPtr);
601 
603  void
604  ClearList(ThreadIdType ThreadId, LayerPointerType ListPtr);
605 
608  void
609  CopyInsertInterNeighborNodeTransferBufferLayers(ThreadIdType ThreadId,
610  LayerPointerType InputList,
611  unsigned int InOrOut,
612  unsigned int BufferLayerNumber);
613 
616  void
617  ClearInterNeighborNodeTransferBufferLayers(ThreadIdType ThreadId,
618  unsigned int InOrOut,
619  unsigned int BufferLayerNumber);
620 
628  void
629  ThreadedProcessFirstLayerStatusLists(unsigned int InputLayerNumber,
630  unsigned int OutputLayerNumber,
631  const StatusType & SearchForStatus,
632  unsigned int InOrOut,
633  unsigned int BufferLayerNumber,
634  ThreadIdType ThreadId);
635 
641  void
642  ThreadedProcessStatusList(unsigned int InputLayerNumber,
643  unsigned int OutputLayerNumber,
644  const StatusType & ChangeToStatus,
645  const StatusType & SearchForStatus,
646  unsigned int InOrOut,
647  unsigned int BufferLayerNumber,
648  ThreadIdType ThreadId);
649 
653  void
654  ThreadedProcessOutsideList(unsigned int InputLayerNumber,
655  const StatusType & ChangeToStatus,
656  unsigned int InOrOut,
657  unsigned int BufferLayerNumber,
658  ThreadIdType ThreadId);
659 
661  void
662  ThreadedPropagateLayerValues(const StatusType & from,
663  const StatusType & to,
664  const StatusType & promote,
665  unsigned int InorOut,
666  ThreadIdType ThreadId);
667 
670  void
671  GetThreadRegionSplitUniformly(ThreadIdType ThreadId, ThreadRegionType & ThreadRegion);
672 
678  void
679  ThreadedPostProcessOutput(const ThreadRegionType & regionToProcess);
680 
691  virtual void
692  CheckLoadBalance();
693 
696  void
697  ThreadedLoadBalance1(ThreadIdType ThreadId);
698  void
699  ThreadedLoadBalance2(ThreadIdType ThreadId);
701 
702  void
703  SignalNeighborsAndWait(ThreadIdType ThreadId);
704 
705  void
706  SignalNeighbor(unsigned int SemaphoreArrayNumber, ThreadIdType ThreadId);
707 
708  void
709  WaitForNeighbor(unsigned int SemaphoreArrayNumber, ThreadIdType ThreadId);
710 
713  virtual void
714  ThreadedInitializeIteration(ThreadIdType ThreadId);
715 
717  std::vector<TimeStepType> m_TimeStepList;
718  std::vector<bool> m_ValidTimeStepList;
720 
722  ThreadIdType m_NumOfThreads{ 0 };
723 
725  unsigned int m_SplitAxis{ 0 };
726 
728  unsigned int m_ZSize{ 0 };
729 
732  bool m_BoundaryChanged{ false };
733 
735  unsigned int * m_Boundary{ nullptr };
736 
738  int * m_GlobalZHistogram{ nullptr };
739 
742  unsigned int * m_MapZToThreadNumber{ nullptr };
743 
746  int * m_ZCumulativeFrequency{ nullptr };
747 
750  {
754  unsigned int m_Count;
755 
758 
761 
764 
765  LayerPointerType UpList[2];
766  LayerPointerType DownList[2];
767 
770  LayerPointerType ** m_InterNeighborNodeTransferBufferLayers[2];
771 
774  void * globalData;
775 
778 
783  int m_Semaphore[2];
784 
785  std::mutex m_Lock[2];
786  std::condition_variable m_Condition[2];
787 
791  };
792 
793  itkPadStruct(ITK_CACHE_LINE_ALIGNMENT, ThreadDataUnaligned, ThreadDataPadded);
794  itkAlignedTypedef(ITK_CACHE_LINE_ALIGNMENT, ThreadDataPadded, ThreadData);
795 
798  ThreadData * m_Data{ nullptr };
799 
802  bool m_Stop{ false };
803 
808  bool m_InterpolateSurfaceLocation{ true };
809 
810 private:
813  bool m_BoundsCheckingActive{ false };
814 };
815 } // end namespace itk
816 
817 #ifndef ITK_MANUAL_INSTANTIATION
818 # include "itkParallelSparseFieldLevelSetImageFilter.hxx"
819 #endif
820 
821 #endif
itk::ParallelSparseFieldCityBlockNeighborList
A convenience class for storing indices which reference neighbor pixels within a neighborhood.
Definition: itkParallelSparseFieldLevelSetImageFilter.h:75
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::m_Count
unsigned int m_Count
Definition: itkParallelSparseFieldLevelSetImageFilter.h:754
itk::ParallelSparseFieldCityBlockNeighborList::GetArrayIndex
const unsigned int & GetArrayIndex(unsigned int i) const
Definition: itkParallelSparseFieldLevelSetImageFilter.h:91
itkFiniteDifferenceImageFilter.h
itk::ParallelSparseFieldLevelSetImageFilter::LayerPointerType
typename LayerType::Pointer LayerPointerType
Definition: itkParallelSparseFieldLevelSetImageFilter.h:299
itk::ParallelSparseFieldCityBlockNeighborList::GetSize
const unsigned int & GetSize() const
Definition: itkParallelSparseFieldLevelSetImageFilter.h:103
itk::Concept::OStreamWritable
Definition: itkConceptChecking.h:634
itk::ParallelSparseFieldCityBlockNeighborList::m_Radius
RadiusType m_Radius
Definition: itkParallelSparseFieldLevelSetImageFilter.h:128
itk::ParallelSparseFieldLevelSetImageFilter::m_StatusActiveChangingUp
static StatusType m_StatusActiveChangingUp
Definition: itkParallelSparseFieldLevelSetImageFilter.h:370
itk::ParallelSparseFieldLevelSetImageFilter::GetActiveListForIndex
LayerPointerType GetActiveListForIndex(const IndexType index)
Definition: itkParallelSparseFieldLevelSetImageFilter.h:330
itk::ParallelSparseFieldLevelSetImageFilter::m_OutputImageTemp
OutputImageType::Pointer m_OutputImageTemp
Definition: itkParallelSparseFieldLevelSetImageFilter.h:413
itkObjectStore.h
itkNeighborhoodIterator.h
itk::ParallelSparseFieldLevelSetImageFilter::ApplyUpdate
void ApplyUpdate(const TimeStepType &) override
Definition: itkParallelSparseFieldLevelSetImageFilter.h:565
itk::ParallelSparseFieldLevelSetImageFilter::m_StatusChanging
static StatusType m_StatusChanging
Definition: itkParallelSparseFieldLevelSetImageFilter.h:382
itk::ParallelSparseFieldLevelSetImageFilter::AllocateUpdateBuffer
void AllocateUpdateBuffer() override
Definition: itkParallelSparseFieldLevelSetImageFilter.h:440
itk::ParallelSparseFieldCityBlockNeighborList::m_NeighborhoodOffset
std::vector< OffsetType > m_NeighborhoodOffset
Definition: itkParallelSparseFieldLevelSetImageFilter.h:130
itk::ParallelSparseFieldLevelSetImageFilter::m_TimeStepList
std::vector< TimeStepType > m_TimeStepList
Definition: itkParallelSparseFieldLevelSetImageFilter.h:717
itk::ParallelSparseFieldLevelSetImageFilter::ThreadedCalculateUpdateValue
virtual ValueType ThreadedCalculateUpdateValue(const ThreadIdType, const IndexType, const TimeStepType &dt, const ValueType &value, const ValueType &change)
Definition: itkParallelSparseFieldLevelSetImageFilter.h:545
itk::FiniteDifferenceImageFilter::TimeStepType
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
Definition: itkFiniteDifferenceImageFilter.h:166
itk::ParallelSparseFieldCityBlockNeighborList::GetRadius
const RadiusType & GetRadius() const
Definition: itkParallelSparseFieldLevelSetImageFilter.h:85
itk::ParallelSparseFieldLevelSetImageFilter::StatusType
signed char StatusType
Definition: itkParallelSparseFieldLevelSetImageFilter.h:305
itk::ParallelSparseFieldLevelSetImageFilter::m_NumberOfLayers
StatusType m_NumberOfLayers
Definition: itkParallelSparseFieldLevelSetImageFilter.h:404
itk::ParallelSparseFieldLevelSetImageFilter::m_LayerNodeStore
LayerNodeStorageType::Pointer m_LayerNodeStore
Definition: itkParallelSparseFieldLevelSetImageFilter.h:416
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned
Definition: itkParallelSparseFieldLevelSetImageFilter.h:749
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::globalData
void * globalData
Definition: itkParallelSparseFieldLevelSetImageFilter.h:774
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::ParallelSparseFieldLevelSetImageFilter::m_IsoSurfaceValue
ValueType m_IsoSurfaceValue
Definition: itkParallelSparseFieldLevelSetImageFilter.h:419
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::TimeStep
TimeStepType TimeStep
Definition: itkParallelSparseFieldLevelSetImageFilter.h:751
itk::ParallelSparseFieldCityBlockNeighborList::GetNeighborhoodOffset
const OffsetType & GetNeighborhoodOffset(unsigned int i) const
Definition: itkParallelSparseFieldLevelSetImageFilter.h:97
itk::ParallelSparseFieldLevelSetImageFilter::m_Layers
LayerListType m_Layers
Definition: itkParallelSparseFieldLevelSetImageFilter.h:398
itk::ParallelSparseFieldLevelSetImageFilter::m_NeighborList
ParallelSparseFieldCityBlockNeighborList< NeighborhoodIterator< OutputImageType > > m_NeighborList
Definition: itkParallelSparseFieldLevelSetImageFilter.h:356
itk::ParallelSparseFieldLevelSetImageFilter::CalculateChange
TimeStepType CalculateChange() override
Definition: itkParallelSparseFieldLevelSetImageFilter.h:575
itk::SparseFieldLayer
A very simple linked list that is used to manage nodes in a layer of a sparse field level-set solver.
Definition: itkSparseFieldLayer.h:172
itk::ParallelSparseFieldCityBlockNeighborList< itk::NeighborhoodIterator< OutputImageType > >::RadiusType
typename NeighborhoodType::RadiusType RadiusType
Definition: itkParallelSparseFieldLevelSetImageFilter.h:80
itk::ThreadIdType
unsigned int ThreadIdType
Definition: itkIntTypes.h:99
itk::GTest::TypedefsAndConstructors::Dimension2::IndexType
ImageBaseType::IndexType IndexType
Definition: itkGTestTypedefsAndConstructors.h:50
itk::ParallelSparseFieldLevelSetImageFilter::m_ValidTimeStepList
std::vector< bool > m_ValidTimeStepList
Definition: itkParallelSparseFieldLevelSetImageFilter.h:718
itk::ImageSource
Base class for all process objects that output image data.
Definition: itkImageSource.h:67
itk::FiniteDifferenceImageFilter::NeighborhoodScalesType
typename FiniteDifferenceFunctionType::NeighborhoodScalesType NeighborhoodScalesType
Definition: itkFiniteDifferenceImageFilter.h:169
itk::FiniteDifferenceImageFilter::RadiusType
typename FiniteDifferenceFunctionType::RadiusType RadiusType
Definition: itkFiniteDifferenceImageFilter.h:168
itk::ParallelSparseFieldLevelSetImageFilter::ValueType
typename OutputImageType::ValueType ValueType
Definition: itkParallelSparseFieldLevelSetImageFilter.h:292
itk::ObjectStore
A specialized memory management object for allocating and destroying contiguous blocks of objects.
Definition: itkObjectStore.h:84
itk::GTest::TypedefsAndConstructors::Dimension2::RegionType
ImageBaseType::RegionType RegionType
Definition: itkGTestTypedefsAndConstructors.h:54
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::m_LoadTransferBufferLayers
LayerListType * m_LoadTransferBufferLayers
Definition: itkParallelSparseFieldLevelSetImageFilter.h:760
itk::NeighborhoodIterator::RadiusType
typename Superclass::RadiusType RadiusType
Definition: itkNeighborhoodIterator.h:226
itk::ParallelSparseFieldLevelSetImageFilter::m_StatusImageTemp
StatusImageType::Pointer m_StatusImageTemp
Definition: itkParallelSparseFieldLevelSetImageFilter.h:412
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::m_Layers
LayerListType m_Layers
Definition: itkParallelSparseFieldLevelSetImageFilter.h:757
itk::ParallelSparseFieldLevelSetImageFilter::m_ValueZero
static ValueType m_ValueZero
Definition: itkParallelSparseFieldLevelSetImageFilter.h:366
itk::ParallelSparseFieldLevelSetImageFilter::LayerListType
std::vector< LayerPointerType > LayerListType
Definition: itkParallelSparseFieldLevelSetImageFilter.h:302
itk::ImageToImageFilter::InputImageType
TInputImage InputImageType
Definition: itkImageToImageFilter.h:129
itk::FiniteDifferenceImageFilter
Definition: itkFiniteDifferenceImageFilter.h:132
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::m_RMSChange
ValueType m_RMSChange
Definition: itkParallelSparseFieldLevelSetImageFilter.h:753
itk::ParallelSparseFieldCityBlockNeighborList::m_Size
unsigned int m_Size
Definition: itkParallelSparseFieldLevelSetImageFilter.h:127
itk::FiniteDifferenceImageFilter::PixelType
OutputPixelType PixelType
Definition: itkFiniteDifferenceImageFilter.h:156
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::m_ZHistogram
int * m_ZHistogram
Definition: itkParallelSparseFieldLevelSetImageFilter.h:777
itk::ParallelSparseFieldCityBlockNeighborList::m_ArrayIndex
std::vector< unsigned int > m_ArrayIndex
Definition: itkParallelSparseFieldLevelSetImageFilter.h:129
itk::Offset
Represent a n-dimensional offset between two n-dimensional indexes of n-dimensional image.
Definition: itkOffset.h:67
itk::ParallelSparseFieldLevelSetImageFilter::m_StatusBoundaryPixel
static StatusType m_StatusBoundaryPixel
Definition: itkParallelSparseFieldLevelSetImageFilter.h:386
itk::ParallelSparseFieldLevelSetImageFilter::m_OutputImage
OutputImageType::Pointer m_OutputImage
Definition: itkParallelSparseFieldLevelSetImageFilter.h:408
itk::NeighborhoodIterator
Defines iteration of a local N-dimensional neighborhood of pixels across an itk::Image.
Definition: itkNeighborhoodIterator.h:211
itk::NumericTraits::ZeroValue
static T ZeroValue()
Definition: itkNumericTraits.h:148
itk::ParallelSparseFieldLevelSetImageFilter::m_ShiftedImage
OutputImageType::Pointer m_ShiftedImage
Definition: itkParallelSparseFieldLevelSetImageFilter.h:392
itk::ParallelSparseFieldCityBlockNeighborList::~ParallelSparseFieldCityBlockNeighborList
~ParallelSparseFieldCityBlockNeighborList()
Definition: itkParallelSparseFieldLevelSetImageFilter.h:116
itk::ParallelSparseFieldLevelSetNode
Definition: itkParallelSparseFieldLevelSetImageFilter.h:37
itkConceptMacro
#define itkConceptMacro(name, concept)
Definition: itkConceptChecking.h:64
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::ParallelSparseFieldLevelSetImageFilter::m_TimeStep
TimeStepType m_TimeStep
Definition: itkParallelSparseFieldLevelSetImageFilter.h:719
itkMultiThreaderBase.h
itk::ProcessObject
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
Definition: itkProcessObject.h:138
itk::ParallelSparseFieldLevelSetImageFilter::ThreadRegionType
typename OutputImageType::RegionType ThreadRegionType
Definition: itkParallelSparseFieldLevelSetImageFilter.h:288
itk::ParallelSparseFieldLevelSetImageFilter::m_StatusImage
StatusImageType::Pointer m_StatusImage
Definition: itkParallelSparseFieldLevelSetImageFilter.h:407
itk::Concept::Convertible
Definition: itkConceptChecking.h:214
itk::ParallelSparseFieldCityBlockNeighborList< itk::NeighborhoodIterator< OutputImageType > >::OffsetType
typename NeighborhoodType::OffsetType OffsetType
Definition: itkParallelSparseFieldLevelSetImageFilter.h:79
itk::ParallelSparseFieldLevelSetImageFilter::IndexType
typename OutputImageType::IndexType IndexType
Definition: itkParallelSparseFieldLevelSetImageFilter.h:282
itk::Image
Templated n-dimensional image class.
Definition: itkImage.h:86
itk::FiniteDifferenceFunction
Definition: itkFiniteDifferenceFunction.h:66
itk::ParallelSparseFieldLevelSetImageFilter::m_StatusNull
static StatusType m_StatusNull
Definition: itkParallelSparseFieldLevelSetImageFilter.h:378
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::m_SemaphoreArrayNumber
unsigned int m_SemaphoreArrayNumber
Definition: itkParallelSparseFieldLevelSetImageFilter.h:790
itk::ParallelSparseFieldLevelSetNode::Previous
ParallelSparseFieldLevelSetNode * Previous
Definition: itkParallelSparseFieldLevelSetImageFilter.h:43
itk::NeighborhoodIterator::OffsetType
typename Superclass::OffsetType OffsetType
Definition: itkNeighborhoodIterator.h:225
itk::ParallelSparseFieldCityBlockNeighborList::GetStride
unsigned int GetStride(unsigned int i)
Definition: itkParallelSparseFieldLevelSetImageFilter.h:109
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::ThreadRegion
ThreadRegionType ThreadRegion
Definition: itkParallelSparseFieldLevelSetImageFilter.h:752
itk::ParallelSparseFieldLevelSetImageFilter::ThreadDataUnaligned::m_LayerNodeStore
LayerNodeStorageType::Pointer m_LayerNodeStore
Definition: itkParallelSparseFieldLevelSetImageFilter.h:763
itk::ParallelSparseFieldLevelSetNode::m_Index
TNodeIndexType m_Index
Definition: itkParallelSparseFieldLevelSetImageFilter.h:40
itk::ParallelSparseFieldLevelSetImageFilter::m_ValueOne
static ValueType m_ValueOne
Definition: itkParallelSparseFieldLevelSetImageFilter.h:363
itk::GTest::TypedefsAndConstructors::Dimension2::Dimension
constexpr unsigned int Dimension
Definition: itkGTestTypedefsAndConstructors.h:44
itk::ParallelSparseFieldLevelSetImageFilter
This class implements a finite difference partial differential equation solver for evolving surfaces ...
Definition: itkParallelSparseFieldLevelSetImageFilter.h:255
itk::ParallelSparseFieldLevelSetImageFilter::m_StatusActiveChangingDown
static StatusType m_StatusActiveChangingDown
Definition: itkParallelSparseFieldLevelSetImageFilter.h:374
itk::ParallelSparseFieldLevelSetNode::Next
ParallelSparseFieldLevelSetNode * Next
Definition: itkParallelSparseFieldLevelSetImageFilter.h:42
itk::Concept::EqualityComparable
Definition: itkConceptChecking.h:304
itk::ImageSource::OutputImageType
TOutputImage OutputImageType
Definition: itkImageSource.h:90
itk::ParallelSparseFieldLevelSetNode::m_Value
float m_Value
Definition: itkParallelSparseFieldLevelSetImageFilter.h:41
itkSparseFieldLayer.h