]> Creatis software - clitk.git/blob - tools/clitkComposeVFGenericFilter.txx
Moved from repository clitk to clitk.private/tests_dav
[clitk.git] / tools / clitkComposeVFGenericFilter.txx
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://www.centreleonberard.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================**/
18 #ifndef __clitkComposeVFGenericFilter_txx
19 #define __clitkComposeVFGenericFilter_txx
20 #include "clitkComposeVFGenericFilter.h"
21
22 #include "clitkCoeffsToDVF.h"
23
24 namespace clitk
25 {
26
27   template<unsigned int Dimension>
28   void ComposeVFGenericFilter::UpdateWithDim(std::string PixelType)
29   {
30     if (PixelType=="double")
31       {
32         UpdateWithDimAndPixelType<Dimension, double>();
33       }     
34     else
35       {
36         UpdateWithDimAndPixelType<Dimension, float>();
37       }
38   }
39
40   
41   template<unsigned int Dimension, class PixelType>
42   void ComposeVFGenericFilter::UpdateWithDimAndPixelType()
43   {
44     typedef itk::Vector<PixelType, Dimension> DisplacementType;
45     typedef itk::Image<DisplacementType, Dimension> ImageType;
46     typename ImageType::Pointer input1, input2;
47
48     //Define the image type
49     if (m_Type == 1) {
50       input1 = BLUTCoeffsToDVF<ImageType>(m_InputName1, m_LikeImage, m_Verbose);
51       input2 = BLUTCoeffsToDVF<ImageType>(m_InputName2, m_LikeImage, m_Verbose);
52     }
53     else {
54       //Read the input1
55       typedef itk::ImageFileReader<ImageType> ImageReaderType;
56       typename  ImageReaderType::Pointer reader1= ImageReaderType::New();
57       reader1->SetFileName(m_InputName1);
58       reader1->Update();
59       input1 =reader1->GetOutput();
60
61       //Read the input2
62       typename  ImageReaderType::Pointer reader2= ImageReaderType::New();
63       reader2->SetFileName(m_InputName2);
64       reader2->Update();
65       input2=reader2->GetOutput();
66     }
67
68       //Create the ComposeVFFilter
69       typedef clitk::ComposeVFFilter<ImageType,ImageType> FilterType;
70       typename FilterType::Pointer filter =FilterType::New();
71       filter->SetInput1(input1);
72       filter->SetInput2(input2);
73       filter->SetVerbose(m_Verbose);
74       filter->Update();
75
76       //Write the output
77       typedef itk::ImageFileWriter<ImageType> WriterType;
78       typename WriterType::Pointer writer = WriterType::New();
79       writer->SetFileName(m_OutputName);
80       writer->SetInput(filter->GetOutput());
81       writer->Update();
82     
83   }
84 }
85
86 #endif