ITK  5.4.0
Insight Toolkit
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric > Class Template Reference

#include <itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h>

Detailed Description

template<typename TDomainPartitioner, typename TImageToImageMetric, typename TNeighborhoodCorrelationMetric>
class itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >

Threading implementation for ANTS CC metric ANTSNeighborhoodCorrelationImageToImageMetricv4 . Supports both dense and sparse threading ways. The dense threader iterates over the whole image domain in order and use a neighborhood scanning window to compute the local cross correlation metric and its derivative incrementally inside the window. The sparse threader uses a sampled point set partitioner to computer local cross correlation only at the sampled positions.

This threader class is designed to host the dense and sparse threader under the same name so most computation routine functions and interior member variables can be shared. This eliminates the need to duplicate codes for two threaders. This is made by using function overloading and a helper class to identify different types of domain partitioners.

Definition at line 58 of file itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h.

+ Inheritance diagram for itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >:
+ Collaboration diagram for itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >:

Classes

struct  ScanMemType
 
struct  ScanParametersType
 

Public Types

using ConstPointer = SmartPointer< const Self >
 
using FixedImageType = typename NeighborhoodCorrelationMetricType::FixedImageType
 
using ImageDimensionType = typename NeighborhoodCorrelationMetricType::ImageDimensionType
 
using ImageRegionType = typename NeighborhoodCorrelationMetricType::ImageRegionType
 
using InternalComputationValueType = typename NeighborhoodCorrelationMetricType::InternalComputationValueType
 
using JacobianType = typename NeighborhoodCorrelationMetricType::JacobianType
 
using MovingImageType = typename NeighborhoodCorrelationMetricType::MovingImageType
 
using NeighborhoodCorrelationMetricType = TNeighborhoodCorrelationMetric
 
using NumberOfParametersType = typename NeighborhoodCorrelationMetricType::NumberOfParametersType
 
using Pointer = SmartPointer< Self >
 
using QueueRealType = InternalComputationValueType
 
using RadiusType = typename NeighborhoodCorrelationMetricType::RadiusType
 
using ScanIteratorType = ConstNeighborhoodIterator< VirtualImageType >
 
using Self = ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader
 
using SumQueueType = std::deque< QueueRealType >
 
using Superclass = ImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric >
 
using VirtualImageType = typename Superclass::VirtualImageType
 

Public Member Functions

 itkOverrideGetNameOfClassMacro (ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

 ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader ()
 
bool ComputeInformationFromQueues (const ScanIteratorType &scanIt, ScanMemType &scanMem, const ScanParametersType &scanParameters, const ThreadIdType threadId) const
 
void ComputeMovingTransformDerivative (const ScanIteratorType &scanIt, ScanMemType &scanMem, const ScanParametersType &scanParameters, DerivativeType &deriv, MeasureType &localCC, const ThreadIdType threadId) const
 
void InitializeScanning (const ImageRegionType &scanRegion, ScanIteratorType &scanIt, ScanMemType &scanMem, ScanParametersType &scanParameters) const
 
bool ProcessPoint (const VirtualIndexType &, const VirtualPointType &, const FixedImagePointType &, const FixedImagePixelType &, const FixedImageGradientType &, const MovingImagePointType &, const MovingImagePixelType &, const MovingImageGradientType &, MeasureType &, DerivativeType &, const ThreadIdType) const override
 
bool ProcessVirtualPoint (const VirtualIndexType &virtualIndex, const VirtualPointType &virtualPoint, const ThreadIdType threadId) override
 
template<typename T >
bool ProcessVirtualPoint_impl (IdentityHelper< T >, const VirtualIndexType &virtualIndex, const VirtualPointType &virtualPoint, const ThreadIdType threadId)
 
bool ProcessVirtualPoint_impl (IdentityHelper< ThreadedIndexedContainerPartitioner >, const VirtualIndexType &virtualIndex, const VirtualPointType &virtualPoint, const ThreadIdType threadId)
 
void ThreadedExecution (const DomainType &domain, const ThreadIdType threadId) override
 
template<typename T >
void ThreadedExecution_impl (IdentityHelper< T >, const DomainType &domain, const ThreadIdType threadId)
 
void ThreadedExecution_impl (IdentityHelper< ThreadedImageRegionPartitioner< TImageToImageMetric::VirtualImageDimension >>, const DomainType &virtualImageSubRegion, const ThreadIdType threadId)
 
void UpdateQueues (const ScanIteratorType &scanIt, ScanMemType &scanMem, const ScanParametersType &scanParameters, const ThreadIdType threadId) const
 
void UpdateQueuesAtBeginningOfLine (const ScanIteratorType &scanIt, ScanMemType &scanMem, const ScanParametersType &scanParameters, const ThreadIdType threadId) const
 
void UpdateQueuesToNextScanWindow (const ScanIteratorType &scanIt, ScanMemType &scanMem, const ScanParametersType &scanParameters, const ThreadIdType threadId) const
 

Private Attributes

TNeighborhoodCorrelationMetric * m_ANTSAssociate {}
 
std::once_flag m_ANTSAssociateOnceFlag {}
 

Member Typedef Documentation

◆ ConstPointer

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ConstPointer = SmartPointer<const Self>

◆ FixedImageType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::FixedImageType = typename NeighborhoodCorrelationMetricType::FixedImageType

◆ ImageDimensionType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ImageDimensionType = typename NeighborhoodCorrelationMetricType::ImageDimensionType

◆ ImageRegionType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ImageRegionType = typename NeighborhoodCorrelationMetricType::ImageRegionType

◆ InternalComputationValueType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::InternalComputationValueType = typename NeighborhoodCorrelationMetricType::InternalComputationValueType

◆ JacobianType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::JacobianType = typename NeighborhoodCorrelationMetricType::JacobianType

◆ MovingImageType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::MovingImageType = typename NeighborhoodCorrelationMetricType::MovingImageType

◆ NeighborhoodCorrelationMetricType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::NeighborhoodCorrelationMetricType = TNeighborhoodCorrelationMetric

◆ NumberOfParametersType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::NumberOfParametersType = typename NeighborhoodCorrelationMetricType::NumberOfParametersType

◆ Pointer

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::Pointer = SmartPointer<Self>

◆ QueueRealType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::QueueRealType = InternalComputationValueType

◆ RadiusType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::RadiusType = typename NeighborhoodCorrelationMetricType::RadiusType

◆ ScanIteratorType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ScanIteratorType = ConstNeighborhoodIterator<VirtualImageType>

◆ Self

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::Self = ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader

Standard class type aliases.

Definition at line 65 of file itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h.

◆ SumQueueType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::SumQueueType = std::deque<QueueRealType>

◆ Superclass

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::Superclass = ImageToImageMetricv4GetValueAndDerivativeThreader<TDomainPartitioner, TImageToImageMetric>

◆ VirtualImageType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::VirtualImageType = typename Superclass::VirtualImageType

Constructor & Destructor Documentation

◆ ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader ( )
inlineprotected

Member Function Documentation

◆ ComputeInformationFromQueues()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
bool itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ComputeInformationFromQueues ( const ScanIteratorType scanIt,
ScanMemType scanMem,
const ScanParametersType scanParameters,
const ThreadIdType  threadId 
) const
protected

Test to see if there are any voxels we need to handle in the current window.

◆ ComputeMovingTransformDerivative()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
void itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ComputeMovingTransformDerivative ( const ScanIteratorType scanIt,
ScanMemType scanMem,
const ScanParametersType scanParameters,
DerivativeType &  deriv,
MeasureType &  localCC,
const ThreadIdType  threadId 
) const
protected

◆ InitializeScanning()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
void itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::InitializeScanning ( const ImageRegionType scanRegion,
ScanIteratorType scanIt,
ScanMemType scanMem,
ScanParametersType scanParameters 
) const
protected

Common functions for computing correlation over scanning windows Create an iterator over the virtual sub region

◆ itkOverrideGetNameOfClassMacro()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::itkOverrideGetNameOfClassMacro ( ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >  )

◆ New()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
static Pointer itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::New ( )
static

◆ ProcessPoint()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
bool itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ProcessPoint ( const VirtualIndexType &  ,
const VirtualPointType &  ,
const FixedImagePointType &  ,
const FixedImagePixelType &  ,
const FixedImageGradientType &  ,
const MovingImagePointType &  ,
const MovingImagePixelType &  ,
const MovingImageGradientType &  ,
MeasureType &  ,
DerivativeType &  ,
const  ThreadIdType 
) const
inlineoverrideprotected

ProcessPoint() must be overloaded since it is a pure virtual function. It is not used for either sparse or dense threader.

Definition at line 217 of file itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h.

◆ ProcessVirtualPoint()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
bool itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ProcessVirtualPoint ( const VirtualIndexType &  virtualIndex,
const VirtualPointType &  virtualPoint,
const ThreadIdType  threadId 
)
inlineoverrideprotected

Dense threader and sparse threader invoke different in multi-threading. This class uses overloaded implementations of ProcessVirtualPoint_impl and ThreadExecution_impl in order to handle the dense and sparse cases differently. The helper class IdentityHelper allows for correct overloading these methods when substituting different type of the threaded partitioner

1) Dense threader: through its own ThreadedExecution. ProcessVirtualPoint and ProcessPoint of the base class are thus not used.

2) Sparse threader: through its own ProcessVirtualPoint. ThreadedExecution still invokes (mostly) from the base class.

In order to invoke different ThreadedExecution by different threader, we use function overloading techniques to resolve which version of ThreadedExecution and ProcessVirtualPoint by the type of the domain partitioner.

Specifically, a helper class IdentityHelper is used as a function parameter, with the sole purpose to differentiate different types of domain partitioners: ThreadedIndexedContainerPartitioner for sparse or ThreadedImageRegionPartitioner for dense. IdentityHelper is simply a class template, ie. a struct wrapper of type template arguments.

This technique takes advantage of SFINAE (Substitution Failure Is Not An Error) in specializing function templates. The helper class IdentityHelper is used to overload w.r.t different partitioner types. More discussion can be found at: https://stackoverflow.com/questions/3052579/explicit-specialization-in-non-namespace-scope Method called by the threaders to process the given virtual point. This in turn calls TransformAndEvaluateFixedPoint, TransformAndEvaluateMovingPoint, and ProcessPoint. And adds entries to m_MeasurePerThread and m_LocalDerivativesPerThread, m_NumberOfValidPointsPerThread.

Definition at line 187 of file itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h.

◆ ProcessVirtualPoint_impl() [1/2]

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
template<typename T >
bool itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ProcessVirtualPoint_impl ( IdentityHelper< T >  ,
const VirtualIndexType &  virtualIndex,
const VirtualPointType &  virtualPoint,
const ThreadIdType  threadId 
)
inlineprotected

◆ ProcessVirtualPoint_impl() [2/2]

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
bool itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ProcessVirtualPoint_impl ( IdentityHelper< ThreadedIndexedContainerPartitioner ,
const VirtualIndexType &  virtualIndex,
const VirtualPointType &  virtualPoint,
const ThreadIdType  threadId 
)
protected

◆ ThreadedExecution()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
void itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ThreadedExecution ( const DomainType &  domain,
const ThreadIdType  threadId 
)
inlineoverrideprotected

◆ ThreadedExecution_impl() [1/2]

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
template<typename T >
void itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ThreadedExecution_impl ( IdentityHelper< T >  ,
const DomainType &  domain,
const ThreadIdType  threadId 
)
protected

◆ ThreadedExecution_impl() [2/2]

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
void itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ThreadedExecution_impl ( IdentityHelper< ThreadedImageRegionPartitioner< TImageToImageMetric::VirtualImageDimension >>  ,
const DomainType &  virtualImageSubRegion,
const ThreadIdType  threadId 
)
protected

◆ UpdateQueues()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
void itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::UpdateQueues ( const ScanIteratorType scanIt,
ScanMemType scanMem,
const ScanParametersType scanParameters,
const ThreadIdType  threadId 
) const
protected

Update the queues for the next point. Calls either UpdateQueuesAtBeginningOfLine or UpdateQueuesToNextScanWindow.

◆ UpdateQueuesAtBeginningOfLine()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
void itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::UpdateQueuesAtBeginningOfLine ( const ScanIteratorType scanIt,
ScanMemType scanMem,
const ScanParametersType scanParameters,
const ThreadIdType  threadId 
) const
protected

◆ UpdateQueuesToNextScanWindow()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
void itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::UpdateQueuesToNextScanWindow ( const ScanIteratorType scanIt,
ScanMemType scanMem,
const ScanParametersType scanParameters,
const ThreadIdType  threadId 
) const
protected

Increment the iterator and check to see if we're at the end of the line. If so, go to the next line. Otherwise, add the the values for the next hyperplane.

Member Data Documentation

◆ m_ANTSAssociate

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
TNeighborhoodCorrelationMetric* itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::m_ANTSAssociate {}
private

Internal pointer to the metric object in use by this threader. This will avoid costly dynamic casting in tight loops.

Definition at line 301 of file itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h.

◆ m_ANTSAssociateOnceFlag

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
std::once_flag itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::m_ANTSAssociateOnceFlag {}
private

The documentation for this class was generated from the following file: