go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkCorrespondingPointsEuclideanDistancePointMetric.h
Go to the documentation of this file.
00001 /*======================================================================
00002 
00003   This file is part of the elastix software.
00004 
00005   Copyright (c) University Medical Center Utrecht. All rights reserved.
00006   See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
00007   details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE. See the above copyright notices for more information.
00012 
00013 ======================================================================*/
00014 #ifndef __itkCorrespondingPointsEuclideanDistancePointMetric_h
00015 #define __itkCorrespondingPointsEuclideanDistancePointMetric_h
00016 
00017 #include "itkSingleValuedPointSetToPointSetMetric.h"
00018 #include "itkPoint.h"
00019 #include "itkPointSet.h"
00020 #include "itkImage.h"
00021 
00022 namespace itk
00023 {
00024 
00034 template < class TFixedPointSet, class TMovingPointSet >
00035 class ITK_EXPORT CorrespondingPointsEuclideanDistancePointMetric :
00036     public SingleValuedPointSetToPointSetMetric<TFixedPointSet, TMovingPointSet>
00037 {
00038 public:
00039 
00041   typedef CorrespondingPointsEuclideanDistancePointMetric    Self;
00042   typedef SingleValuedPointSetToPointSetMetric<
00043     TFixedPointSet, TMovingPointSet >               Superclass;
00044   typedef SmartPointer<Self>                        Pointer;
00045   typedef SmartPointer<const Self>                  ConstPointer;
00046 
00048   itkNewMacro( Self );
00049 
00051   itkTypeMacro( CorrespondingPointsEuclideanDistancePointMetric,
00052     SingleValuedPointSetToPointSetMetric );
00053 
00055   typedef typename Superclass::TransformType              TransformType;
00056   typedef typename Superclass::TransformPointer           TransformPointer;
00057   typedef typename Superclass::TransformParametersType    TransformParametersType;
00058   typedef typename Superclass::TransformJacobianType      TransformJacobianType;
00059 
00060   typedef typename Superclass::MeasureType                MeasureType;
00061   typedef typename Superclass::DerivativeType             DerivativeType;
00062   typedef typename Superclass::DerivativeValueType        DerivativeValueType;
00063   typedef typename Superclass::FixedPointSetType          FixedPointSetType;
00064   typedef typename Superclass::MovingPointSetType         MovingPointSetType;
00065   typedef typename Superclass::FixedPointSetConstPointer  FixedPointSetConstPointer;
00066   typedef typename Superclass::MovingPointSetConstPointer MovingPointSetConstPointer;
00067 
00068   typedef typename Superclass::PointIterator              PointIterator;
00069   typedef typename Superclass::PointDataIterator          PointDataIterator;
00070 
00071   typedef typename Superclass::InputPointType             InputPointType;
00072   typedef typename Superclass::OutputPointType            OutputPointType;
00073   typedef typename OutputPointType::CoordRepType          CoordRepType;
00074   typedef vnl_vector<CoordRepType>                        VnlVectorType;
00075 
00076   typedef typename Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType;
00077 
00079   MeasureType GetValue( const TransformParametersType & parameters ) const;
00080 
00082   void GetDerivative( const TransformParametersType & parameters,
00083     DerivativeType & Derivative ) const;
00084 
00086   void GetValueAndDerivative( const TransformParametersType & parameters,
00087     MeasureType& Value, DerivativeType& Derivative ) const;
00088 
00089 protected:
00090   CorrespondingPointsEuclideanDistancePointMetric();
00091   virtual ~CorrespondingPointsEuclideanDistancePointMetric() {};
00092 
00093 private:
00094   CorrespondingPointsEuclideanDistancePointMetric(const Self&); //purposely not implemented
00095   void operator=(const Self&); //purposely not implemented
00096 
00097 }; // end class CorrespondingPointsEuclideanDistancePointMetric
00098 
00099 } // end namespace itk
00100 
00101 #ifndef ITK_MANUAL_INSTANTIATION
00102 #include "itkCorrespondingPointsEuclideanDistancePointMetric.txx"
00103 #endif
00104 
00105 #endif


Generated on 24-10-2011 for elastix by doxygen 1.7.4 elastix logo