18#ifndef itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader_h
19#define itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader_h
57template <
typename TDomainPartitioner,
typename TImageToImageMetric,
typename TNeighborhoodCorrelationMetric>
74 using typename Superclass::DomainType;
75 using typename Superclass::AssociateType;
78 using typename Superclass::VirtualPointType;
79 using typename Superclass::VirtualIndexType;
80 using typename Superclass::FixedImagePointType;
81 using typename Superclass::FixedImagePixelType;
82 using typename Superclass::FixedImageGradientType;
83 using typename Superclass::MovingImagePointType;
84 using typename Superclass::MovingImagePixelType;
85 using typename Superclass::MovingImageGradientType;
86 using typename Superclass::MeasureType;
87 using typename Superclass::DerivativeType;
88 using typename Superclass::DerivativeValueType;
188 const VirtualPointType & virtualPoint,
197 const VirtualIndexType & virtualIndex,
198 const VirtualPointType & virtualPoint,
202 template <
typename T>
205 const VirtualIndexType & virtualIndex,
206 const VirtualPointType & virtualPoint,
209 return Superclass::ProcessVirtualPoint(virtualIndex, virtualPoint, threadId);
218 const VirtualPointType & itkNotUsed(virtualPoint),
219 const FixedImagePointType & itkNotUsed(mappedFixedPoint),
220 const FixedImagePixelType & itkNotUsed(mappedFixedPixelValue),
221 const FixedImageGradientType & itkNotUsed(mappedFixedImageGradient),
222 const MovingImagePointType & itkNotUsed(mappedMovingPoint),
223 const MovingImagePixelType & itkNotUsed(mappedMovingPixelValue),
224 const MovingImageGradientType & itkNotUsed(mappedMovingImageGradient),
225 MeasureType & itkNotUsed(metricValueReturn),
226 DerivativeType & itkNotUsed(localDerivativeReturn),
229 itkExceptionMacro(
"ProcessPoint should never be reached in ANTS CC metric threader class.");
242 const DomainType & virtualImageSubRegion,
246 template <
typename T>
256 ScanMemType & scanMem,
257 ScanParametersType & scanParameters)
const;
263 ScanMemType & scanMem,
264 const ScanParametersType & scanParameters,
269 ScanMemType & scanMem,
270 const ScanParametersType & scanParameters,
278 ScanMemType & scanMem,
279 const ScanParametersType & scanParameters,
286 ScanMemType & scanMem,
287 const ScanParametersType & scanParameters,
292 ScanMemType & scanMem,
293 const ScanParametersType & scanParameters,
294 DerivativeType & deriv,
295 MeasureType & localCC,
308#ifndef ITK_MANUAL_INSTANTIATION
309# include "itkANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.hxx"
typename NeighborhoodCorrelationMetricType::FixedImageType FixedImageType
typename NeighborhoodCorrelationMetricType::JacobianType JacobianType
SmartPointer< Self > Pointer
bool ComputeInformationFromQueues(const ScanIteratorType &scanIt, ScanMemType &scanMem, const ScanParametersType &scanParameters, const ThreadIdType threadId) const
Self NeighborhoodCorrelationMetricType
typename NeighborhoodCorrelationMetricType::ImageDimensionType ImageDimensionType
void InitializeScanning(const ImageRegionType &scanRegion, ScanIteratorType &scanIt, ScanMemType &scanMem, ScanParametersType &scanParameters) const
SmartPointer< const Self > ConstPointer
ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader()
typename NeighborhoodCorrelationMetricType::ImageRegionType ImageRegionType
bool ProcessVirtualPoint_impl(IdentityHelper< ThreadedIndexedContainerPartitioner > self, const VirtualIndexType &virtualIndex, const VirtualPointType &virtualPoint, const ThreadIdType threadId)
typename NeighborhoodCorrelationMetricType::NumberOfParametersType NumberOfParametersType
void UpdateQueuesToNextScanWindow(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
std::deque< QueueRealType > SumQueueType
void UpdateQueuesAtBeginningOfLine(const ScanIteratorType &scanIt, ScanMemType &scanMem, const ScanParametersType &scanParameters, const ThreadIdType threadId) const
typename NeighborhoodCorrelationMetricType::RadiusType RadiusType
InternalComputationValueType QueueRealType
void UpdateQueues(const ScanIteratorType &scanIt, ScanMemType &scanMem, const ScanParametersType &scanParameters, const ThreadIdType threadId) const
ANTSNeighborhoodCorrelationImageToImageMetricv4GetValueAndDerivativeThreader Self
void ThreadedExecution_impl(IdentityHelper< T > self, const DomainType &domain, const ThreadIdType threadId)
void ThreadedExecution(const DomainType &domain, const ThreadIdType threadId) override
ImageToImageMetricv4GetValueAndDerivativeThreader< ThreadedImageRegionPartitioner< VirtualImageDimension >, Superclass > Superclass
bool ProcessPoint(const VirtualIndexType &virtualIndex, const VirtualPointType &virtualPoint, const FixedImagePointType &mappedFixedPoint, const FixedImagePixelType &mappedFixedPixelValue, const FixedImageGradientType &mappedFixedImageGradient, const MovingImagePointType &mappedMovingPoint, const MovingImagePixelType &mappedMovingPixelValue, const MovingImageGradientType &mappedMovingImageGradient, MeasureType &metricValueReturn, DerivativeType &localDerivativeReturn, const ThreadIdType threadId) const override
bool ProcessVirtualPoint(const VirtualIndexType &virtualIndex, const VirtualPointType &virtualPoint, const ThreadIdType threadId) override
typename NeighborhoodCorrelationMetricType::MovingImageType MovingImageType
bool ProcessVirtualPoint_impl(IdentityHelper< T > self, const VirtualIndexType &virtualIndex, const VirtualPointType &virtualPoint, const ThreadIdType threadId)
ConstNeighborhoodIterator< VirtualImageType > ScanIteratorType
void ThreadedExecution_impl(IdentityHelper< ThreadedImageRegionPartitioner< Superclass::VirtualImageDimension > > self, const DomainType &virtualImageSubRegion, const ThreadIdType threadId)
typename Superclass::VirtualImageType VirtualImageType
std::once_flag m_ANTSAssociateOnceFlag
typename NeighborhoodCorrelationMetricType::InternalComputationValueType InternalComputationValueType
Const version of NeighborhoodIterator, defining iteration of a local N-dimensional neighborhood of pi...
Provides threading for ImageToImageMetricv4::GetValueAndDerivative.
Implements transparent reference counting.
Class for partitioning of an ImageRegion.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned int ThreadIdType
unsigned long SizeValueType
MovingImagePointType mappedMovingPoint
VirtualPointType virtualPoint
SumQueueType QsumFixedMoving
QueueRealType sFixedMoving
FixedImageGradientType fixedImageGradient
MovingImageGradientType movingImageGradient
QueueRealType sFixedFixed
FixedImagePointType mappedFixedPoint
QueueRealType sMovingMoving
ImageRegionType scanRegion
FixedImageType::ConstPointer fixedImage
SizeValueType numberOfFillZero
SizeValueType windowLength
VirtualImageType::ConstPointer virtualImage
IndexValueType scanRegionBeginIndexDim0
MovingImageType::ConstPointer movingImage