/*========================================================================= * * Copyright Insight Software Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *=========================================================================*/ #ifndef itkMeanSquaresImageToImageMetricv4_h #define itkMeanSquaresImageToImageMetricv4_h #include "itkImageToImageMetricv4.h" #include "itkMeanSquaresImageToImageMetricv4GetValueAndDerivativeThreader.h" #include "itkDefaultImageToImageMetricTraitsv4.h" namespace itk { /** \class MeanSquaresImageToImageMetricv4 * * \brief Class implementing a mean squares metric. * * This class supports vector images of type VectorImage * and Image< VectorType, imageDimension >. * * See * MeanSquaresImageToImageMetricv4GetValueAndDerivativeThreader::ProcessPoint for algorithm implementation. * * \ingroup ITKMetricsv4 */ template > class ITK_TEMPLATE_EXPORT MeanSquaresImageToImageMetricv4 : public ImageToImageMetricv4 { public: /** Standard class typedefs. */ typedef MeanSquaresImageToImageMetricv4 Self; typedef ImageToImageMetricv4 Superclass; typedef SmartPointer Pointer; typedef SmartPointer ConstPointer; /** Method for creation through the object factory. */ itkNewMacro(Self); /** Run-time type information (and related methods). */ itkTypeMacro(MeanSquaresImageToImageMetricv4, ImageToImageMetricv4); typedef typename Superclass::DerivativeType DerivativeType; typedef typename Superclass::FixedImagePointType FixedImagePointType; typedef typename Superclass::FixedImagePixelType FixedImagePixelType; typedef typename Superclass::FixedImageGradientType FixedImageGradientType; typedef typename Superclass::MovingImagePointType MovingImagePointType; typedef typename Superclass::MovingImagePixelType MovingImagePixelType; typedef typename Superclass::MovingImageGradientType MovingImageGradientType; typedef typename Superclass::MovingTransformType MovingTransformType; typedef typename Superclass::JacobianType JacobianType; typedef typename Superclass::VirtualImageType VirtualImageType; typedef typename Superclass::VirtualIndexType VirtualIndexType; typedef typename Superclass::VirtualPointType VirtualPointType; typedef typename Superclass::VirtualPointSetType VirtualPointSetType; /* Image dimension accessors */ itkStaticConstMacro(VirtualImageDimension, typename TVirtualImage::ImageDimensionType, TVirtualImage::ImageDimension); itkStaticConstMacro(FixedImageDimension, typename TFixedImage::ImageDimensionType, TFixedImage::ImageDimension); itkStaticConstMacro(MovingImageDimension, typename TMovingImage::ImageDimensionType, TMovingImage::ImageDimension); protected: MeanSquaresImageToImageMetricv4(); virtual ~MeanSquaresImageToImageMetricv4() ITK_OVERRIDE; friend class MeanSquaresImageToImageMetricv4GetValueAndDerivativeThreader< ThreadedImageRegionPartitioner< Superclass::VirtualImageDimension >, Superclass, Self >; friend class MeanSquaresImageToImageMetricv4GetValueAndDerivativeThreader< ThreadedIndexedContainerPartitioner, Superclass, Self >; typedef MeanSquaresImageToImageMetricv4GetValueAndDerivativeThreader< ThreadedImageRegionPartitioner< Superclass::VirtualImageDimension >, Superclass, Self > MeanSquaresDenseGetValueAndDerivativeThreaderType; typedef MeanSquaresImageToImageMetricv4GetValueAndDerivativeThreader< ThreadedIndexedContainerPartitioner, Superclass, Self > MeanSquaresSparseGetValueAndDerivativeThreaderType; void PrintSelf(std::ostream& os, Indent indent) const ITK_OVERRIDE; private: ITK_DISALLOW_COPY_AND_ASSIGN(MeanSquaresImageToImageMetricv4); }; } // end namespace itk #ifndef ITK_MANUAL_INSTANTIATION #include "itkMeanSquaresImageToImageMetricv4.hxx" #endif #endif