template<typename TFixedImage, typename TMovingImage, typename TVirtualImage = TFixedImage, typename TInternalComputationValueType = double, typename TMetricTraits = DefaultImageToImageMetricTraitsv4<TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType>>
class itk::CorrelationImageToImageMetricv4< TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits >
Class implementing normalized cross correlation image metric.
Definition of the normalized cross correlation metric used here:
negative square of normalized cross correlation
\[ C(f, m) = -\frac{<f-\bar{f}, m-\bar{m} >^2}{|f-\bar{f}|^2 |m-\bar{m}|^2}
\]
in which, f, m are the vectors of image pixel intensities, \(\bar{f}\) and \(\bar{m}\) are the mean values of f and m. <,> denotes inner product, \(|\cdot|\) denotes the 2-norm of the vector. The minus sign makes the metric to optimize towards its minimal value. Note that this uses the square of the mathematical notion of normalized cross correlation to avoid the square root computation in practice.
Moving image (m) is a function of the parameters (p) of the moving transforms. So \( C(f, m) = C(f, m(p)) \) GetValueAndDerivative will return the value as \( C(f,m) \) and the derivative as
\[ \frac{d}{dp} C = 2 \frac{<f1, m1>}{|f1|^2 |m1|^2} * (
<f1, \frac{dm}{dp}>
- \frac{<f1, m1>}{|m1|^2} < m1, \frac{dm}{dp} > )
\]
in which, \( f1 = f - \bar{f} \), \( m1 = m - \bar{m} \) (Note: there should be a minus sign of \( \frac{d}{dp} \) mathematically, which is not in the implementation to match the requirement of the metricv4 optimization framework.
See CorrelationImageToImageMetricv4GetValueAndDerivativeThreader::ProcessPoint for algorithm implementation.
This metric only works with the global transform. It throws an exception if the transform has local support.
- Examples
- Examples/RegistrationITKv4/DeformableRegistration4.cxx.
Definition at line 78 of file itkCorrelationImageToImageMetricv4.h.
|
virtual::itk::LightObject::Pointer | CreateAnother () const |
|
const char * | GetNameOfClass () const override |
|
virtual void | FinalizeThread (const ThreadIdType) |
|
void | GetDerivative (DerivativeType &) const override |
|
virtual const FixedImageType * | GetFixedImage () const |
|
virtual const FixedImageGradientImageType * | GetFixedImageGradientImage () const |
|
virtual const FixedInterpolatorType * | GetFixedInterpolator () const |
|
MetricCategoryType | GetMetricCategory () const override |
|
virtual FixedImageGradientImageType * | GetModifiableFixedImageGradientImage () |
|
virtual FixedInterpolatorType * | GetModifiableFixedInterpolator () |
|
virtual MovingImageGradientImageType * | GetModifiableMovingImageGradientImage () |
|
virtual MovingInterpolatorType * | GetModifiableMovingInterpolator () |
|
virtual const MovingImageGradientImageType * | GetMovingImageGradientImage () const |
|
virtual const MovingInterpolatorType * | GetMovingInterpolator () const |
|
const char * | GetNameOfClass () const override |
|
SizeValueType | GetNumberOfDomainPoints () const |
|
virtual const SizeValueType & | GetNumberOfSkippedFixedSampledPoints () const |
|
virtual ThreadIdType | GetNumberOfWorkUnitsUsed () const |
|
MeasureType | GetValue () const override |
|
void | GetValueAndDerivative (MeasureType &value, DerivativeType &derivative) const override |
|
void | Initialize () override |
|
virtual void | SetFixedImage (const FixedImageType *_arg) |
|
virtual void | SetFixedInterpolator (FixedInterpolatorType *_arg) |
|
virtual void | SetMovingInterpolator (MovingInterpolatorType *_arg) |
|
bool | SupportsArbitraryVirtualDomainSamples () const override |
|
void | SetFixedObject (const ObjectType *object) override |
|
void | SetMovingObject (const ObjectType *object) override |
|
virtual void | SetMovingImage (const MovingImageType *_arg) |
|
virtual const MovingImageType * | GetMovingImage () const |
|
virtual void | SetMovingImageMask (const MovingImageMaskType *_arg) |
|
virtual const MovingImageMaskType * | GetMovingImageMask () const |
|
virtual void | SetFixedImageMask (const FixedImageMaskType *_arg) |
|
virtual const FixedImageMaskType * | GetFixedImageMask () const |
|
virtual void | SetFixedSampledPointSet (const FixedSampledPointSetType *_arg) |
|
virtual const FixedSampledPointSetType * | GetFixedSampledPointSet () const |
|
virtual void | SetVirtualSampledPointSet (VirtualPointSetType *_arg) |
|
virtual const VirtualPointSetType * | GetVirtualSampledPointSet () const |
|
virtual void | SetUseSampledPointSet (bool _arg) |
|
virtual const bool & | GetUseSampledPointSet () const |
|
virtual void | UseSampledPointSetOn () |
|
virtual void | UseSampledPointSetOff () |
|
virtual void | SetUseVirtualSampledPointSet (bool _arg) |
|
virtual const bool & | GetUseVirtualSampledPointSet () const |
|
virtual void | UseVirtualSampledPointSetOn () |
|
virtual void | UseVirtualSampledPointSetOff () |
|
virtual void | SetFixedImageGradientFilter (FixedImageGradientFilterType *_arg) |
|
virtual FixedImageGradientFilterType * | GetModifiableFixedImageGradientFilter () |
|
virtual const FixedImageGradientFilterType * | GetFixedImageGradientFilter () const |
|
virtual void | SetMovingImageGradientFilter (MovingImageGradientFilterType *_arg) |
|
virtual MovingImageGradientFilterType * | GetModifiableMovingImageGradientFilter () |
|
virtual const MovingImageGradientFilterType * | GetMovingImageGradientFilter () const |
|
virtual void | SetFixedImageGradientCalculator (FixedImageGradientCalculatorType *_arg) |
|
virtual FixedImageGradientCalculatorType * | GetModifiableFixedImageGradientCalculator () |
|
virtual const FixedImageGradientCalculatorType * | GetFixedImageGradientCalculator () const |
|
virtual void | SetMovingImageGradientCalculator (MovingImageGradientCalculatorType *_arg) |
|
virtual MovingImageGradientCalculatorType * | GetModifiableMovingImageGradientCalculator () |
|
virtual const MovingImageGradientCalculatorType * | GetMovingImageGradientCalculator () const |
|
virtual void | SetUseFixedImageGradientFilter (bool _arg) |
|
virtual const bool & | GetUseFixedImageGradientFilter () const |
|
virtual void | UseFixedImageGradientFilterOn () |
|
virtual void | UseFixedImageGradientFilterOff () |
|
virtual void | SetUseMovingImageGradientFilter (bool _arg) |
|
virtual const bool & | GetUseMovingImageGradientFilter () const |
|
virtual void | UseMovingImageGradientFilterOn () |
|
virtual void | UseMovingImageGradientFilterOff () |
|
virtual void | SetMaximumNumberOfWorkUnits (const ThreadIdType number) |
|
virtual ThreadIdType | GetMaximumNumberOfWorkUnits () const |
|
virtual void | SetUseFloatingPointCorrection (bool _arg) |
|
virtual const bool & | GetUseFloatingPointCorrection () const |
|
virtual void | UseFloatingPointCorrectionOn () |
|
virtual void | UseFloatingPointCorrectionOff () |
|
virtual void | SetFloatingPointCorrectionResolution (DerivativeValueType _arg) |
|
virtual DerivativeValueType | GetFloatingPointCorrectionResolution () const |
|
OffsetValueType | ComputeParameterOffsetFromVirtualIndex (const VirtualIndexType &index, const NumberOfParametersType &numberOfLocalParameters) const |
|
OffsetValueType | ComputeParameterOffsetFromVirtualPoint (const VirtualPointType &point, const NumberOfParametersType &numberOfLocalParameters) const |
|
virtual const FixedTransformType * | GetFixedTransform () const |
|
MetricCategoryType | GetMetricCategory () const override |
|
virtual FixedTransformType * | GetModifiableFixedTransform () |
|
virtual MovingTransformType * | GetModifiableMovingTransform () |
|
virtual VirtualImageType * | GetModifiableVirtualImage () |
|
virtual const MovingTransformType * | GetMovingTransform () const |
|
const char * | GetNameOfClass () const override |
|
NumberOfParametersType | GetNumberOfLocalParameters () const override |
|
NumberOfParametersType | GetNumberOfParameters () const override |
|
virtual SizeValueType | GetNumberOfValidPoints () const |
|
const ParametersType & | GetParameters () const override |
|
const MovingTransformType * | GetTransform () |
|
VirtualDirectionType | GetVirtualDirection () const |
|
virtual const TimeStamp & | GetVirtualDomainTimeStamp () const |
|
virtual const VirtualImageType * | GetVirtualImage () const |
|
VirtualOriginType | GetVirtualOrigin () const |
|
const VirtualRegionType & | GetVirtualRegion () const |
|
VirtualSpacingType | GetVirtualSpacing () const |
|
bool | HasLocalSupport () const override |
|
void | Initialize () override |
|
virtual void | SetFixedTransform (FixedTransformType *_arg) |
|
virtual void | SetMovingTransform (MovingTransformType *_arg) |
|
void | SetParameters (ParametersType ¶ms) override |
|
void | SetTransform (MovingTransformType *transform) |
|
void | SetVirtualDomain (const VirtualSpacingType &spacing, const VirtualOriginType &origin, const VirtualDirectionType &direction, const VirtualRegionType ®ion) |
|
void | SetVirtualDomainFromImage (const VirtualImageType *virtualImage) |
|
void | UpdateTransformParameters (const DerivativeType &derivative, double factor) override |
|
bool | IsInsideVirtualDomain (const VirtualPointType &point) const |
|
bool | IsInsideVirtualDomain (const VirtualIndexType &index) const |
|
MeasureType | GetCurrentValue () const |
|
MeasureType | GetCurrentValue () const |
|
virtual GradientSourceEnum | GetGradientSource () const |
|
virtual GradientSourceEnum | GetGradientSource () const |
|
bool | GetGradientSourceIncludesFixed () const |
|
bool | GetGradientSourceIncludesFixed () const |
|
bool | GetGradientSourceIncludesMoving () const |
|
bool | GetGradientSourceIncludesMoving () const |
|
const char * | GetNameOfClass () const override |
|
const char * | GetNameOfClass () const override |
|
virtual void | SetGradientSource (GradientSourceEnum _arg) |
|
virtual void | SetGradientSource (GradientSourceEnum _arg) |
|
virtual void | SetFixedObject (const ObjectType *_arg) |
|
virtual const ObjectType * | GetFixedObject () const |
|
virtual void | SetFixedObject (const ObjectType *_arg) |
|
virtual const ObjectType * | GetFixedObject () const |
|
virtual void | SetMovingObject (const ObjectType *_arg) |
|
virtual const ObjectType * | GetMovingObject () const |
|
virtual void | SetMovingObject (const ObjectType *_arg) |
|
virtual const ObjectType * | GetMovingObject () const |
|
const char * | GetNameOfClass () const override |
|
const char * | GetNameOfClass () const override |
|
unsigned long | AddObserver (const EventObject &event, Command *cmd) const |
|
unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
|
LightObject::Pointer | CreateAnother () const override |
|
virtual void | DebugOff () const |
|
virtual void | DebugOn () const |
|
Command * | GetCommand (unsigned long tag) |
|
bool | GetDebug () const |
|
MetaDataDictionary & | GetMetaDataDictionary () |
|
const MetaDataDictionary & | GetMetaDataDictionary () const |
|
virtual ModifiedTimeType | GetMTime () const |
|
virtual const TimeStamp & | GetTimeStamp () const |
|
bool | HasObserver (const EventObject &event) const |
|
void | InvokeEvent (const EventObject &) |
|
void | InvokeEvent (const EventObject &) const |
|
virtual void | Modified () const |
|
void | Register () const override |
|
void | RemoveAllObservers () |
|
void | RemoveObserver (unsigned long tag) const |
|
void | SetDebug (bool debugFlag) const |
|
void | SetReferenceCount (int) override |
|
void | UnRegister () const noexcept override |
|
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
|
void | SetMetaDataDictionary (MetaDataDictionary &&rrhs) |
|
virtual void | SetObjectName (std::string _arg) |
|
virtual const std::string & | GetObjectName () const |
|
Pointer | Clone () const |
|
virtual void | Delete () |
|
virtual int | GetReferenceCount () const |
|
void | Print (std::ostream &os, Indent indent=0) const |
|
|
| CorrelationImageToImageMetricv4 () |
|
void | InitializeForIteration () const override |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| ~CorrelationImageToImageMetricv4 () override=default |
|
virtual void | ComputeFixedImageGradientAtPoint (const FixedImagePointType &mappedPoint, FixedImageGradientType &gradient) const |
|
virtual void | ComputeFixedImageGradientFilterImage () |
|
virtual void | ComputeMovingImageGradientAtPoint (const MovingImagePointType &mappedPoint, MovingImageGradientType &gradient) const |
|
virtual void | ComputeMovingImageGradientFilterImage () const |
|
virtual bool | GetComputeDerivative () const |
|
virtual void | GetValueAndDerivativeExecute () const |
|
| ImageToImageMetricv4 () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
bool | TransformAndEvaluateFixedPoint (const VirtualPointType &virtualPoint, FixedImagePointType &mappedFixedPoint, FixedImagePixelType &mappedFixedPixelValue) const |
|
bool | TransformAndEvaluateMovingPoint (const VirtualPointType &virtualPoint, MovingImagePointType &mappedMovingPoint, MovingImagePixelType &mappedMovingPixelValue) const |
|
| ~ImageToImageMetricv4 () override=default |
|
virtual void | InitializeDefaultFixedImageGradientFilter () |
|
virtual void | InitializeDefaultMovingImageGradientFilter () |
|
const MovingDisplacementFieldTransformType * | GetMovingDisplacementFieldTransform () const |
|
| ObjectToObjectMetric () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
bool | TransformPhysicalPointToVirtualIndex (const VirtualPointType &, VirtualIndexType &) const |
|
void | TransformVirtualIndexToPhysicalPoint (const VirtualIndexType &, VirtualPointType &) const |
|
virtual void | VerifyDisplacementFieldSizeAndPhysicalSpace () |
|
bool | VerifyNumberOfValidPoints (MeasureType &value, DerivativeType &derivative) const |
|
| ~ObjectToObjectMetric () override=default |
|
| ObjectToObjectMetricBaseTemplate () |
|
| ObjectToObjectMetricBaseTemplate () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| ~ObjectToObjectMetricBaseTemplate () override=default |
|
| ~ObjectToObjectMetricBaseTemplate () override=default |
|
| SingleValuedCostFunctionv4Template ()=default |
|
| SingleValuedCostFunctionv4Template ()=default |
|
| ~SingleValuedCostFunctionv4Template () override=default |
|
| ~SingleValuedCostFunctionv4Template () override=default |
|
| CostFunctionTemplate ()=default |
|
| CostFunctionTemplate ()=default |
|
| ~CostFunctionTemplate () override=default |
|
| ~CostFunctionTemplate () override=default |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
|
| ~Object () override |
|
virtual LightObject::Pointer | InternalClone () const |
|
| LightObject () |
|
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
|
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
|
virtual | ~LightObject () |
|