00001 /*========================================================================= 00002 00003 Program: Diffusion Applications 00004 Module: $HeadURL: http://svn.slicer.org/Slicer3/trunk/Applications/CLI/DiffusionApplications/ResampleDTI/itkDiffusionTensor3DFSAffineTransform.h $ 00005 Language: C++ 00006 Date: $Date: 2010-03-15 18:00:34 -0400 (Mon, 15 Mar 2010) $ 00007 Version: $Revision: 12353 $ 00008 00009 Copyright (c) Brigham and Women's Hospital (BWH) All Rights Reserved. 00010 00011 See License.txt or http://www.slicer.org/copyright/copyright.txt for details. 00012 00013 ==========================================================================*/ 00014 #ifndef __itkDiffusionTensor3DFSAffineTransform_h 00015 #define __itkDiffusionTensor3DFSAffineTransform_h 00016 00017 00018 #include "itkDiffusionTensor3DAffineTransform.h" 00019 #include <vnl/vnl_matrix.h> 00020 #include <vnl/algo/vnl_real_eigensystem.h> 00021 #include <vnl/vnl_real.h> 00022 00023 00024 00025 namespace itk 00026 { 00044 template<class TData> 00045 class DiffusionTensor3DFSAffineTransform : 00046 public DiffusionTensor3DAffineTransform< TData > 00047 { 00048 public: 00049 typedef TData DataType ; 00050 typedef DiffusionTensor3DFSAffineTransform Self ; 00051 typedef DiffusionTensor3DAffineTransform< DataType > Superclass ; 00052 typedef typename Superclass::MatrixTransformType MatrixTransformType; 00053 typedef typename Superclass::InternalMatrixTransformType InternalMatrixTransformType ; 00054 typedef SmartPointer< Self > Pointer ; 00055 typedef SmartPointer< const Self > ConstPointer ; 00056 00057 itkNewMacro(Self); 00058 00059 00060 protected: 00061 void PreCompute(); 00062 00063 private: 00064 MatrixTransformType ComputeMatrixSquareRoot( MatrixTransformType matrix ) ; 00065 MatrixTransformType ComputeRotationMatrixFromTransformationMatrix() ; 00066 00067 }; 00068 00069 }//end namespace itk 00070 00071 #ifndef ITK_MANUAL_INSTANTIATION 00072 #include "itkDiffusionTensor3DFSAffineTransform.txx" 00073 #endif 00074 00075 #endif
1.6.1