1 /*=========================================================================
2 Program: vv http://www.creatis.insa-lyon.fr/rio/vv
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
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.
13 It is distributed under dual licence
15 - BSD See included LICENSE.txt file
16 - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================**/
18 #ifndef __clitkComposeVFFilter_h
19 #define __clitkComposeVFFilter_h
20 #include "clitkImageCommon.h"
22 #include "itkImageToImageFilter.h"
24 #include "itkImageRegionIterator.h"
25 #include "itkImageRegionIteratorWithIndex.h"
26 #include "itkNumericTraits.h"
31 template <class InputImageType, class OutputImageType>
32 class ITK_EXPORT ComposeVFFilter : public itk::ImageToImageFilter<InputImageType, OutputImageType>
36 typedef ComposeVFFilter Self;
37 typedef itk::ImageToImageFilter<InputImageType, OutputImageType> Superclass;
38 typedef itk::SmartPointer<Self> Pointer;
39 typedef itk::SmartPointer<const Self> ConstPointer;
41 /** Method for creation through the object factory. */
44 /** Run-time type information (and related methods) */
45 itkTypeMacro( ComposeVFFilter, ImageToImageFilter );
47 /** Determine the image dimension. */
48 itkStaticConstMacro(ImageDimension, unsigned int,
49 InputImageType::ImageDimension );
51 /** Typedef to describe the output image region type. */
52 typedef typename OutputImageType::RegionType OutputImageRegionType;
54 //========================================================================================
56 typedef double CoordRepType;
57 typedef typename OutputImageType::PixelType PixelType;
58 typedef itk::Point<CoordRepType, ImageDimension> PointType;
61 void SetEdgePaddingValue(PixelType m);
62 void SetVerbose(bool m){m_Verbose=m;}
63 void SetInput1(typename InputImageType::Pointer m)
65 //call the superclass method (at least one input required!)
69 void SetInput2(typename InputImageType::Pointer m){m_Input2=m;}
73 ~ComposeVFFilter() {};
76 //========================================================================================
77 //Threaded execution should implement generate threaded data
78 void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread, itk::ThreadIdType threadId );
81 PixelType m_EdgePaddingValue;
82 typename InputImageType::Pointer m_Input1;
83 typename InputImageType::Pointer m_Input2;
87 } // end namespace clitk
88 #ifndef ITK_MANUAL_INSTANTIATION
89 #include "clitkComposeVFFilter.txx"
92 #endif // #define __clitkComposeVFFilter_h