]> Creatis software - clitk.git/blobdiff - registration/clitkPointTrajectoryGenericFilter.cxx
Moved from repository clitk to clitk.private/deprecated
[clitk.git] / registration / clitkPointTrajectoryGenericFilter.cxx
diff --git a/registration/clitkPointTrajectoryGenericFilter.cxx b/registration/clitkPointTrajectoryGenericFilter.cxx
deleted file mode 100644 (file)
index cc6b0cf..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-/*=========================================================================
-  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
-
-  Authors belong to: 
-  - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://www.centreleonberard.fr
-  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
-
-  This software is distributed WITHOUT ANY WARRANTY; without even
-  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-  PURPOSE.  See the copyright notices for more information.
-
-  It is distributed under dual licence
-
-  - BSD        See included LICENSE.txt file
-  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-===========================================================================**/
-#ifndef clitkPointTrajectoryGenericFilter_cxx
-#define clitkPointTrajectoryGenericFilter_cxx
-
-/* =================================================
- * @file   clitkPointTrajectoryGenericFilter.cxx
- * @author 
- * @date   
- * 
- * @brief 
- * 
- ===================================================*/
-
-#include "clitkPointTrajectoryGenericFilter.h"
-
-
-namespace clitk
-{
-
-
-  //-----------------------------------------------------------
-  // Constructor
-  //-----------------------------------------------------------
-  PointTrajectoryGenericFilter::PointTrajectoryGenericFilter()
-  {
-    m_Verbose=false;
-    //    m_InputFileName="";
-  }
-
-
-  //-----------------------------------------------------------
-  // Update
-  //-----------------------------------------------------------
-  void PointTrajectoryGenericFilter::Update()
-  {
-    // ImageTypes
-    const unsigned int ImageDimension=4;
-    const unsigned int SpaceDimension=3;
-    typedef itk::Vector<double, SpaceDimension> CoefficientPixelType;
-    typedef itk::Vector<float, SpaceDimension> VectorPixelType;
-    typedef itk::Image<CoefficientPixelType, ImageDimension> CoefficientImageType;
-    typedef itk::Image<VectorPixelType, ImageDimension> VectorFieldType;
-  
-
-    // -----------------------------------------------
-    // Reference Point List 3D
-    // -----------------------------------------------
-    typedef itk::Point<double, SpaceDimension> SpacePointType;
-    typedef clitk::List<SpacePointType> PointListType;
-    PointListType referencePointList;
-    if (m_Verbose) std::cout<<"Reference point list:"<<std::endl;
-    referencePointList=PointListType(m_ArgsInfo.ref_arg, m_Verbose);
-
-
-    // -----------------------------------------------
-    // Transform: based on points, 4DVF, spatio-Temporal transform 
-    // -----------------------------------------------
-    typedef itk::Transform<double, 4, 4> TransformType;
-    TransformType::Pointer transform;
-    switch (m_ArgsInfo.transform_arg)
-      {
-       // ==========================
-       // List of points
-       // ==========================
-      case 0: 
-       {
-         //-----------------------------
-         // Input point lists
-         //-----------------------------   
-         typedef itk::Point<double, SpaceDimension> PointType;
-         typedef clitk::List<PointType> PointListType;
-         typedef clitk::Lists<PointType> PointListsType;
-         PointListsType inputPointLists, sortedPointLists;
-         
-         // Read the lists
-         for (unsigned int i=0; i<m_ArgsInfo.points_given; i++)
-           inputPointLists.push_back(PointListType(m_ArgsInfo.points_arg[i], m_Verbose) );
-       
-         // Convert/sort the lists
-         sortedPointLists.resize(inputPointLists[0].size());
-         for (unsigned int i=0; i<inputPointLists[0].size(); i++)
-           {
-             sortedPointLists[i].push_back(referencePointList[i]);
-             for (unsigned int j=0; j<inputPointLists.size(); j++)
-               {
-                 sortedPointLists[i].push_back(inputPointLists[j][i]);
-               }
-           }
-                                           
-         // Point list Transform
-         typedef clitk::PointListTransform<double, ImageDimension,ImageDimension> PointListTransformType;
-         PointListTransformType::Pointer pointListTransform=PointListTransformType::New();
-         pointListTransform->SetPointLists(sortedPointLists);
-         
-         // Vector Interpolator
-         typedef PointListTransformType::PointListImageType PointListImageType;
-         typedef clitk::GenericVectorInterpolator<args_info_clitkPointTrajectory,PointListImageType, double> GenericVectorInterpolatorType;
-         GenericVectorInterpolatorType::Pointer genericInterpolator=GenericVectorInterpolatorType::New();
-         genericInterpolator->SetArgsInfo(m_ArgsInfo);
-         typedef itk::VectorInterpolateImageFunction<PointListImageType, double> InterpolatorType; 
-         InterpolatorType::Pointer interpolator=genericInterpolator->GetInterpolatorPointer();
-         pointListTransform->SetInterpolator(interpolator);
-         transform=pointListTransform;
-
-         break;
-       }
-
-       // ==========================
-       // 4D vector field
-       // ==========================
-      case 1: 
-       {
-         // Deformation field transform
-         typedef clitk::DeformationFieldTransform<double, ImageDimension,ImageDimension, SpaceDimension> DeformationFieldTransformType;
-         DeformationFieldTransformType::Pointer deformationFieldTransform=DeformationFieldTransformType::New();
-         
-         // The deformation field
-         typedef DeformationFieldTransformType::DeformationFieldType DeformationFieldType;
-         typedef itk::ImageFileReader<DeformationFieldType> InputReaderType;
-         InputReaderType::Pointer reader = InputReaderType::New();
-         reader->SetFileName( m_ArgsInfo.input_arg);
-         reader->Update();
-         DeformationFieldType::Pointer input= reader->GetOutput();
-         deformationFieldTransform->SetDeformationField(input);
-         
-         // Vector Interpolator
-         typedef clitk::GenericVectorInterpolator<args_info_clitkPointTrajectory,DeformationFieldType, double> GenericVectorInterpolatorType;
-         GenericVectorInterpolatorType::Pointer genericInterpolator=GenericVectorInterpolatorType::New();
-         genericInterpolator->SetArgsInfo(m_ArgsInfo);
-         typedef itk::VectorInterpolateImageFunction<DeformationFieldType, double> InterpolatorType; 
-         InterpolatorType::Pointer interpolator=genericInterpolator->GetInterpolatorPointer();
-         deformationFieldTransform->SetInterpolator(interpolator);
-         transform=deformationFieldTransform;
-
-         break;
-       }
-
-       // ==========================   
-       // Spatio-Temporal transform
-       // ==========================
-      case 2:
-       {       
-         // S-T transform      
-         typedef clitk::ShapedBLUTSpatioTemporalDeformableTransform< double, ImageDimension, ImageDimension > TransformType; 
-         TransformType::Pointer spatioTemporalTransform = TransformType::New();
-
-
-         // Spline orders:  Default is cubic splines
-         CoefficientImageType::RegionType::SizeType splineOrders ;
-         splineOrders.Fill(3);
-         if (m_ArgsInfo.order_given)
-           for(unsigned int i=0; i<ImageDimension;i++) 
-             splineOrders[i]=m_ArgsInfo.order_arg[i];
-         if (m_Verbose) std::cout<<"Setting the spline orders  to "<<splineOrders<<"..."<<std::endl;
-         
-         // Coefficient image
-         typedef itk::ImageFileReader<CoefficientImageType> InputReaderType;
-         InputReaderType::Pointer reader = InputReaderType::New();
-         reader->SetFileName( m_ArgsInfo.input_arg);
-         reader->Update();
-         CoefficientImageType::Pointer input= reader->GetOutput();
-         //      itk::Vector<double,3> vector;
-         //      vector.Fill(0.);
-         //      vector[2]=100;
-         //      input->FillBuffer(vector);
-
-         // Mask
-         typedef itk::ImageMaskSpatialObject<  ImageDimension >   MaskType;
-         MaskType::Pointer  spatialObjectMask=NULL;
-         if (m_ArgsInfo.mask_given)
-           {
-             typedef itk::Image< unsigned char, ImageDimension >   ImageMaskType;
-             typedef itk::ImageFileReader< ImageMaskType >    MaskReaderType;
-             MaskReaderType::Pointer  maskReader = MaskReaderType::New();
-             maskReader->SetFileName(m_ArgsInfo.mask_arg);
-             
-             try 
-               { 
-                 maskReader->Update(); 
-               } 
-             catch( itk::ExceptionObject & err ) 
-               { 
-                 std::cerr << "ExceptionObject caught while reading mask !" << std::endl; 
-                 std::cerr << err << std::endl; 
-                 return;
-               } 
-             if (m_Verbose)std::cout <<"Mask was read..." <<std::endl;
-             
-             // Set the image to the spatialObject
-             spatialObjectMask = MaskType::New();
-             spatialObjectMask->SetImage( maskReader->GetOutput() );
-           }
-         
-         // Samplingfactors
-         CoefficientImageType::SizeType samplingFactors; 
-         for (unsigned int i=0; i< ImageDimension-1; i++)
-           {   
-             samplingFactors[i]= (int) ( input->GetSpacing()[i]/ m_ArgsInfo.spacing_arg);
-             if (m_Verbose) std::cout<<"Setting sampling factor "<<i<<" to "<<samplingFactors[i]<<"..."<<std::endl;
-           }
-         samplingFactors[ImageDimension-1]= (int) ( input->GetSpacing()[ImageDimension-1]/ m_ArgsInfo.phaseIncrement_arg);
-         if (m_Verbose) std::cout<<"Setting sampling factor "<<ImageDimension-1<<" to "<<samplingFactors[ImageDimension-1]<<"..."<<std::endl;
-         if( (m_ArgsInfo.shape_arg==3) |
-             (m_ArgsInfo.shape_arg==4) |
-             (m_ArgsInfo.shape_arg==6) |
-             (m_ArgsInfo.shape_arg==8)
-             ) samplingFactors[ImageDimension-1]*=2.5;
-         
-         // Set
-         spatioTemporalTransform->SetTransformShape(m_ArgsInfo.shape_arg);
-         spatioTemporalTransform->SetSplineOrders(splineOrders);
-         spatioTemporalTransform->SetMask(spatialObjectMask);
-         spatioTemporalTransform->SetLUTSamplingFactors(samplingFactors);
-         spatioTemporalTransform->SetCoefficientImage(input);
-         transform=spatioTemporalTransform;
-         
-         break;
-       }
-
-//     // ==========================   
-//     // Spatio-Temporal transform
-//     // ==========================
-//       case 3:
-//     {       
-//       // S-T transform      
-//       typedef clitk::BSplineSpatioTemporalDeformableTransform< double, ImageDimension, ImageDimension > TransformType; 
-//       TransformType::Pointer spatioTemporalTransform = TransformType::New();
-
-
-//       // Spline orders:  Default is cubic splines
-//       CoefficientImageType::RegionType::SizeType splineOrders ;
-//       splineOrders.Fill(3);
-//       if (m_ArgsInfo.order_given)
-//         for(unsigned int i=0; i<ImageDimension;i++) 
-//           splineOrders[i]=m_ArgsInfo.order_arg[i];
-//       if (m_Verbose) std::cout<<"Setting the spline orders  to "<<splineOrders<<"..."<<std::endl;
-         
-//       // Coefficient image
-//       typedef itk::ImageFileReader<CoefficientImageType> InputReaderType;
-//       InputReaderType::Pointer reader = InputReaderType::New();
-//       reader->SetFileName( m_ArgsInfo.input_arg);
-//       reader->Update();
-//       CoefficientImageType::Pointer input= reader->GetOutput();
-//       //      itk::Vector<double,3> vector;
-//       //      vector.Fill(0.);
-//       //      vector[2]=100;
-//       //      input->FillBuffer(vector);
-         
-//       // Mask
-//       typedef itk::ImageMaskSpatialObject<  ImageDimension >   MaskType;
-//       MaskType::Pointer  spatialObjectMask=NULL;
-//       if (m_ArgsInfo.mask_given)
-//         {
-//           typedef itk::Image< unsigned char, ImageDimension >   ImageMaskType;
-//           typedef itk::ImageFileReader< ImageMaskType >    MaskReaderType;
-//           MaskReaderType::Pointer  maskReader = MaskReaderType::New();
-//           maskReader->SetFileName(m_ArgsInfo.mask_arg);
-             
-//           try 
-//             { 
-//               maskReader->Update(); 
-//             } 
-//           catch( itk::ExceptionObject & err ) 
-//             { 
-//               std::cerr << "ExceptionObject caught while reading mask !" << std::endl; 
-//               std::cerr << err << std::endl; 
-//               return;
-//             } 
-//           if (m_Verbose)std::cout <<"Mask was read..." <<std::endl;
-             
-//           // Set the image to the spatialObject
-//           spatialObjectMask = MaskType::New();
-//           spatialObjectMask->SetImage( maskReader->GetOutput() );
-//         }
-         
-//       // Samplingfactors
-//       CoefficientImageType::SizeType samplingFactors; 
-//       for (unsigned int i=0; i< ImageDimension-1; i++)
-//         {   
-//           samplingFactors[i]= (int) ( input->GetSpacing()[i]/ m_ArgsInfo.spacing_arg);
-//           if (m_Verbose) std::cout<<"Setting sampling factor "<<i<<" to "<<samplingFactors[i]<<"..."<<std::endl;
-//         }
-//       samplingFactors[ImageDimension-1]= (int) ( input->GetSpacing()[ImageDimension-1]/ m_ArgsInfo.phaseIncrement_arg);
-//       if (m_Verbose) std::cout<<"Setting sampling factor "<<ImageDimension-1<<" to "<<samplingFactors[ImageDimension-1]<<"..."<<std::endl;
-         
-//       // Set
-//       //spatioTemporalTransform->SetTransformShape(m_ArgsInfo.shape_arg);
-//       spatioTemporalTransform->SetSplineOrders(splineOrders);
-//       spatioTemporalTransform->SetMask(spatialObjectMask);
-//       spatioTemporalTransform->SetLUTSamplingFactors(samplingFactors);
-//       spatioTemporalTransform->SetCoefficientImage(input);
-//       transform=spatioTemporalTransform;
-
-//       break;
-//     }
-      }
-         
-    
-    // -----------------------------------------------
-    // Construct Spatio-Temporal Point lists 4D
-    // -----------------------------------------------
-    typedef itk::Point<double, ImageDimension> SpaceTimePointType;
-    typedef clitk::Lists<SpaceTimePointType> PointListsType;
-    PointListsType pointLists(referencePointList.size());
-    SpaceTimePointType spaceTimePoint;
-    double phase;
-    for (unsigned int i=0; i<referencePointList.size(); i++)
-      {
-       for (unsigned int d=0; d<SpaceDimension; d++)
-         {
-           spaceTimePoint[d]=referencePointList[i][d];
-         }
-       phase=0;
-       while (phase<10.)
-         {
-           spaceTimePoint[ImageDimension-1]=phase;
-           pointLists[i].push_back(spaceTimePoint);
-           phase+=m_ArgsInfo.phaseIncrement_arg;
-         }
-      }
-
-
-    // -----------------------------------------------
-    // Transform Points
-    // -----------------------------------------------
-    typedef itk::Vector<double, ImageDimension> VectorType;
-    typedef clitk::List<VectorType> VectorListType;
-    typedef clitk::Lists<VectorType> VectorListsType;
-    VectorListsType displacementLists(pointLists.size());
-    VectorType displacement;
-    for (unsigned int i=0; i<pointLists.size(); i++)
-      {
-       if (m_Verbose) std::cout<<"Transforming point "<<pointLists[i][0]<<"..."<<std::endl;
-       for (unsigned int j=0; j<pointLists[i].size(); j++)
-         {
-           spaceTimePoint= transform->TransformPoint(pointLists[i][j]);
-           if (m_Verbose) std::cout<<"Transformed point "<<spaceTimePoint<<"..."<<std::endl;
-           displacement=spaceTimePoint-pointLists[i][j];
-           displacementLists[i].push_back(displacement);
-         }
-      }
-
-
-    // -----------------------------------------------
-    // Write displacements
-    // -----------------------------------------------
-    std::vector<std::string> filenames;
-    for (unsigned int i=0;i<displacementLists.size();i++)
-      {
-       std::ostringstream number_ostr;
-       number_ostr << i;
-       std::string number_str;
-       if (i<10)  number_str=  "0"+number_ostr.str();
-       else number_str =  number_ostr.str();
-       filenames.push_back(m_ArgsInfo.trajectory_arg+number_str);
-      }
-    displacementLists.Write(filenames, m_Verbose );
-  
-  }
-
-
-} //end clitk
-
-#endif  //#define clitkPointTrajectoryGenericFilter_cxx