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

#include <itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h>

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

Public Types

using AssociateType = typename Superclass::AssociateType
 
using ConstPointer = SmartPointer< const Self >
 
using DerivativeType = typename Superclass::DerivativeType
 
using DerivativeValueType = typename Superclass::DerivativeValueType
 
using DomainType = typename Superclass::DomainType
 
using FixedImageGradientType = typename Superclass::FixedImageGradientType
 
using FixedImagePixelType = typename Superclass::FixedImagePixelType
 
using FixedImagePointType = typename Superclass::FixedImagePointType
 
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 MeasureType = typename Superclass::MeasureType
 
using MovingImageGradientType = typename Superclass::MovingImageGradientType
 
using MovingImagePixelType = typename Superclass::MovingImagePixelType
 
using MovingImagePointType = typename Superclass::MovingImagePointType
 
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 ScanMemType = struct { SumQueueType QsumFixed2
 
using ScanParametersType = struct { ImageRegionType scanRegion
 
using Self = ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader
 
using SumQueueType = std::deque< QueueRealType >
 
using Superclass = ImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric >
 
using VirtualImageType = typename Superclass::VirtualImageType
 
using VirtualIndexType = typename Superclass::VirtualIndexType
 
using VirtualPointType = typename Superclass::VirtualPointType
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
virtual const char * GetNameOfClass () const
 

Static Public Member Functions

static Pointer New ()
 

Public Attributes

QueueRealType fixedA
 
FixedImageType::ConstPointer fixedImage
 
FixedImageGradientType fixedImageGradient
 
FixedImagePointType mappedFixedPoint
 
MovingImagePointType mappedMovingPoint
 
QueueRealType movingA
 
MovingImageType::ConstPointer movingImage
 
MovingImageGradientType movingImageGradient
 
SizeValueType numberOfFillZero
 
SumQueueType Qcount
 
SumQueueType QsumFixed
 
SumQueueType QsumFixedMoving
 
SumQueueType QsumMoving
 
SumQueueType QsumMoving2
 
RadiusType radius
 
IndexValueType scanRegionBeginIndexDim0
 
QueueRealType sFixedFixed
 
QueueRealType sFixedMoving
 
QueueRealType sMovingMoving
 
VirtualImageType::ConstPointer virtualImage
 
VirtualPointType virtualPoint
 
SizeValueType windowLength
 

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 &local_cc, 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 &domain, 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
 

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 57 of file itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h.

Member Typedef Documentation

◆ AssociateType

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

◆ ConstPointer

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

◆ DerivativeType

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

◆ DerivativeValueType

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

◆ DomainType

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

◆ FixedImageGradientType

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

◆ FixedImagePixelType

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

◆ FixedImagePointType

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

◆ 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

◆ MeasureType

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

◆ MovingImageGradientType

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

◆ MovingImagePixelType

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

◆ MovingImagePointType

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

◆ 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>

◆ ScanMemType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ScanMemType = struct { SumQueueType QsumFixed2

◆ ScanParametersType

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
using itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::ScanParametersType = struct { ImageRegionType scanRegion

◆ Self

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

Standard class type aliases.

Definition at line 64 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

◆ VirtualIndexType

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

◆ VirtualPointType

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

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 local_cc,
const ThreadIdType  threadId 
) const
protected

◆ CreateAnother()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
virtual::itk::LightObject::Pointer itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::CreateAnother ( ) const

◆ GetNameOfClass()

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
virtual const char* itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::GetNameOfClass ( ) const
virtual

◆ 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

◆ 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: http://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 domain,
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

◆ fixedA

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
QueueRealType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::fixedA

◆ fixedImage

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
FixedImageType::ConstPointer itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::fixedImage

◆ fixedImageGradient

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
FixedImageGradientType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::fixedImageGradient

◆ 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.

◆ mappedFixedPoint

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
FixedImagePointType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::mappedFixedPoint

◆ mappedMovingPoint

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
MovingImagePointType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::mappedMovingPoint

◆ movingA

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
QueueRealType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::movingA

◆ movingImage

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
MovingImageType::ConstPointer itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::movingImage

◆ movingImageGradient

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
MovingImageGradientType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::movingImageGradient

◆ numberOfFillZero

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
SizeValueType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::numberOfFillZero

◆ Qcount

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
SumQueueType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::Qcount

◆ QsumFixed

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
SumQueueType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::QsumFixed

◆ QsumFixedMoving

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
SumQueueType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::QsumFixedMoving

◆ QsumMoving

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
SumQueueType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::QsumMoving

◆ QsumMoving2

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
SumQueueType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::QsumMoving2

◆ radius

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
RadiusType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::radius

◆ scanRegionBeginIndexDim0

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
IndexValueType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::scanRegionBeginIndexDim0

◆ sFixedFixed

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
QueueRealType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::sFixedFixed

◆ sFixedMoving

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
QueueRealType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::sFixedMoving

◆ sMovingMoving

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
QueueRealType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::sMovingMoving

◆ virtualImage

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
VirtualImageType::ConstPointer itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::virtualImage

◆ virtualPoint

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
VirtualPointType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::virtualPoint

◆ windowLength

template<typename TDomainPartitioner , typename TImageToImageMetric , typename TNeighborhoodCorrelationMetric >
SizeValueType itk::ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader< TDomainPartitioner, TImageToImageMetric, TNeighborhoodCorrelationMetric >::windowLength

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