go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxElastixMain.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright UMC Utrecht and contributors
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef __elxElastixMain_h
19 #define __elxElastixMain_h
20 
21 #include "elxComponentDatabase.h"
22 #include "elxComponentLoader.h"
23 
24 #include "elxElastixBase.h"
25 #include "itkObject.h"
26 
27 #include <iostream>
28 #include <fstream>
29 
31 
32 #ifdef ELASTIX_USE_OPENCL
33 #include "itkOpenCLContext.h"
34 #endif
35 
36 namespace elastix
37 {
38 
44 
55 extern int xoutSetup( const char * logfilename, bool setupLogging, bool setupCout );
56 
98 class ElastixMain : public itk::Object
99 {
100 public:
101 
103  typedef ElastixMain Self;
104  typedef itk::Object Superclass;
105  typedef itk::SmartPointer< Self > Pointer;
106  typedef itk::SmartPointer< const Self > ConstPointer;
107 
109  itkNewMacro( Self );
110 
112  itkTypeMacro( ElastixMain, Object );
113 
117  typedef itk::Object ObjectType;
118  typedef ObjectType::Pointer ObjectPointer;
119  typedef itk::DataObject DataObjectType;
120  typedef DataObjectType::Pointer DataObjectPointer;
121 
132 
143 
147 
150 
152  itkSetMacro( FixedImagePixelType, PixelTypeDescriptionType );
153  itkSetMacro( MovingImagePixelType, PixelTypeDescriptionType );
154  itkSetMacro( FixedImageDimension, ImageDimensionType );
155  itkSetMacro( MovingImageDimension, ImageDimensionType );
156  itkGetMacro( FixedImagePixelType, PixelTypeDescriptionType );
157  itkGetMacro( MovingImagePixelType, PixelTypeDescriptionType );
158  itkGetMacro( FixedImageDimension, ImageDimensionType );
159  itkGetMacro( MovingImageDimension, ImageDimensionType );
160 
165  itkSetObjectMacro( FixedImageContainer, DataObjectContainerType );
166  itkSetObjectMacro( MovingImageContainer, DataObjectContainerType );
167  itkGetObjectMacro( FixedImageContainer, DataObjectContainerType );
168  itkGetObjectMacro( MovingImageContainer, DataObjectContainerType );
169 
174  itkSetObjectMacro( FixedMaskContainer, DataObjectContainerType );
175  itkSetObjectMacro( MovingMaskContainer, DataObjectContainerType );
176  itkGetObjectMacro( FixedMaskContainer, DataObjectContainerType );
177  itkGetObjectMacro( MovingMaskContainer, DataObjectContainerType );
178 
183  itkSetObjectMacro( ResultImageContainer, DataObjectContainerType );
184  itkGetObjectMacro( ResultImageContainer, DataObjectContainerType );
185 
186  itkSetObjectMacro( ResultDeformationFieldContainer, DataObjectContainerType );
187  itkGetObjectMacro( ResultDeformationFieldContainer, DataObjectContainerType );
188 
190  itkSetObjectMacro( Configuration, ConfigurationType );
191  itkGetObjectMacro( Configuration, ConfigurationType );
192 
197  itkGetObjectMacro( Elastix, ObjectType );
198 
202  virtual ElastixBaseType * GetElastixBase( void ) const;
203 
209  itkGetObjectMacro( FinalTransform, ObjectType );
210 
215  itkSetObjectMacro( InitialTransform, ObjectType );
216  itkGetObjectMacro( InitialTransform, ObjectType );
217 
221  const FlatDirectionCosinesType & arg );
222 
224 
226  void SetElastixLevel( unsigned int level );
227 
228  unsigned int GetElastixLevel( void );
229 
231  void SetTotalNumberOfElastixLevels( unsigned int levels );
232 
233  unsigned int GetTotalNumberOfElastixLevels( void );
234 
236  itkGetConstMacro( DBIndex, DBIndexType );
237 
242  virtual void EnterCommandLineArguments( ArgumentMapType & argmap );
243 
245  ParameterMapType & inputMap );
246 
247  // Version used when elastix is used as a library.
249  std::vector< ParameterMapType > & inputMaps );
250 
256  virtual int Run( void );
257 
262  virtual int Run( ArgumentMapType & argmap );
263 
264  virtual int Run( ArgumentMapType & argmap, ParameterMapType & inputMap );
265 
270  virtual void SetProcessPriority( void ) const;
271 
276  virtual void SetMaximumNumberOfThreads( void ) const;
277 
280  {
281  return s_CDB.GetPointer();
282  }
283 
284 
286  {
287  if( s_CDB != arg )
288  {
289  s_CDB = arg;
290  }
291  }
292 
293 
296 
297  static void UnloadComponents( void );
298 
299 protected:
300 
302  virtual ~ElastixMain();
303 
308 
311 
313  std::vector< ConfigurationPointer > m_Configurations;
314 
320 
322 
330 
333 
340 
342 
345  virtual int LoadComponents( void );
346 
351  virtual int InitDBIndex( void );
352 
357 
374  const ComponentDescriptionType & key,
375  const ComponentDescriptionType & defaultComponentName,
376  int & errorcode,
377  bool mandatoryComponent = true );
378 
380  void GetImageInformationFromFile( const std::string & filename,
381  ImageDimensionType & imageDimension ) const;
382 
383 private:
384 
385  ElastixMain( const Self & ); // purposely not implemented
386  void operator=( const Self & ); // purposely not implemented
387 
388 };
389 
390 } // end namespace elastix
391 
392 #endif // end #ifndef __elxElastixMain_h
elastix::ElastixMain::DataObjectPointer
DataObjectType::Pointer DataObjectPointer
Definition: elxElastixMain.h:120
elastix::ElastixMain::GetOriginalFixedImageDirectionFlat
virtual const FlatDirectionCosinesType & GetOriginalFixedImageDirectionFlat(void) const
elastix::ElastixMain::GetComponentDatabase
static ComponentDatabase * GetComponentDatabase(void)
Definition: elxElastixMain.h:279
elastix::ElastixMain::EnterCommandLineArguments
virtual void EnterCommandLineArguments(ArgumentMapType &argmap)
elastix::ElastixMain::m_FinalTransform
ObjectPointer m_FinalTransform
Definition: elxElastixMain.h:332
elxComponentLoader.h
elastix::ElastixMain::SetOriginalFixedImageDirectionFlat
virtual void SetOriginalFixedImageDirectionFlat(const FlatDirectionCosinesType &arg)
elastix::ComponentLoader::Pointer
itk::SmartPointer< Self > Pointer
Definition: elxComponentLoader.h:48
elastix::ComponentDatabase::PixelTypeDescriptionType
std::string PixelTypeDescriptionType
Definition: elxComponentDatabase.h:92
elastix::ElastixMain::s_CDB
static ComponentDatabasePointer s_CDB
Definition: elxElastixMain.h:343
elastix::ComponentLoader
Determines which components (metrics, transforms, etc.) are available.
Definition: elxComponentLoader.h:42
elastix::ElastixMain::m_FixedMaskContainer
DataObjectContainerPointer m_FixedMaskContainer
Definition: elxElastixMain.h:326
elastix::ElastixMain::UnloadComponents
static void UnloadComponents(void)
elastix::ElastixMain::m_Configurations
std::vector< ConfigurationPointer > m_Configurations
Definition: elxElastixMain.h:313
elastix::ElastixMain::ComponentDatabasePointer
ComponentDatabaseType::Pointer ComponentDatabasePointer
Definition: elxElastixMain.h:137
elastix::Configuration
A class that deals with user given parameters and command line arguments.
Definition: elxConfiguration.h:51
elastix::ElastixMain::ConfigurationPointer
ConfigurationType::Pointer ConfigurationPointer
Definition: elxElastixMain.h:126
elastix::ElastixMain::ConstPointer
itk::SmartPointer< const Self > ConstPointer
Definition: elxElastixMain.h:106
elastix::ElastixMain::Pointer
itk::SmartPointer< Self > Pointer
Definition: elxElastixMain.h:105
elastix::ElastixMain::m_ResultDeformationFieldContainer
DataObjectContainerPointer m_ResultDeformationFieldContainer
Definition: elxElastixMain.h:329
elastix::ElastixMain::m_MovingMaskContainer
DataObjectContainerPointer m_MovingMaskContainer
Definition: elxElastixMain.h:327
elastix::ElastixMain::ElastixMain
ElastixMain(const Self &)
elastix::ElastixMain::ComponentDatabaseType
ComponentDatabase ComponentDatabaseType
Definition: elxElastixMain.h:136
elastix::ComponentDatabase::PtrToCreator
ObjectPointer(* PtrToCreator)(void)
Definition: elxComponentDatabase.h:76
elastix::ElastixMain::Self
ElastixMain Self
Definition: elxElastixMain.h:103
elastix::ElastixBase
This class creates an interface for elastix.
Definition: elxElastixBase.h:144
elastix::ElastixMain::m_FixedImageContainer
DataObjectContainerPointer m_FixedImageContainer
Definition: elxElastixMain.h:324
elastix::ElastixMain::m_ResultImageContainer
DataObjectContainerPointer m_ResultImageContainer
Definition: elxElastixMain.h:328
elastix::ElastixMain::DataObjectContainerType
ElastixBase::DataObjectContainerType DataObjectContainerType
Definition: elxElastixMain.h:128
elastix::ElastixMain::m_MovingImageContainer
DataObjectContainerPointer m_MovingImageContainer
Definition: elxElastixMain.h:325
elastix::ElastixBase::DataObjectContainerPointer
DataObjectContainerType::Pointer DataObjectContainerPointer
Definition: elxElastixBase.h:163
elastix::xoutSetup
int xoutSetup(const char *logfilename, bool setupLogging, bool setupCout)
elastix::ComponentDatabase::ComponentDescriptionType
std::string ComponentDescriptionType
Definition: elxComponentDatabase.h:77
elastix::ElastixMain::CreateComponent
virtual ObjectPointer CreateComponent(const ComponentDescriptionType &name)
elastix::ElastixMain::EnterCommandLineArguments
virtual void EnterCommandLineArguments(ArgumentMapType &argmap, ParameterMapType &inputMap)
elastix::ElastixMain::s_ComponentLoader
static ComponentLoaderPointer s_ComponentLoader
Definition: elxElastixMain.h:344
elastix::ElastixMain::Run
virtual int Run(ArgumentMapType &argmap)
elastix::ElastixMain::m_FixedImageDimension
ImageDimensionType m_FixedImageDimension
Definition: elxElastixMain.h:317
elastix::ElastixMain::GetImageInformationFromFile
void GetImageInformationFromFile(const std::string &filename, ImageDimensionType &imageDimension) const
elastix::ElastixMain::~ElastixMain
virtual ~ElastixMain()
elastix::ElastixMain::m_FixedImagePixelType
PixelTypeDescriptionType m_FixedImagePixelType
Definition: elxElastixMain.h:316
elastix::ElastixMain::ArgumentMapType
ConfigurationType::CommandLineArgumentMapType ArgumentMapType
Definition: elxElastixMain.h:125
elastix::ElastixMain::InitDBIndex
virtual int InitDBIndex(void)
elastix::ElastixMain::ObjectContainerType
ElastixBase::ObjectContainerType ObjectContainerType
Definition: elxElastixMain.h:127
elastix::ElastixMain::PtrToCreator
ComponentDatabaseType::PtrToCreator PtrToCreator
Definition: elxElastixMain.h:138
elxComponentDatabase.h
elastix::ElastixMain::GetTransformParametersMap
virtual ParameterMapType GetTransformParametersMap(void) const
elastix::ElastixMain::ObjectContainerPointer
ElastixBase::ObjectContainerPointer ObjectContainerPointer
Definition: elxElastixMain.h:129
elastix::ComponentDatabase::Pointer
itk::SmartPointer< Self > Pointer
Definition: elxComponentDatabase.h:60
elastix::ElastixMain::ElastixMain
ElastixMain()
elastix::ElastixMain::m_MovingImagePixelType
PixelTypeDescriptionType m_MovingImagePixelType
Definition: elxElastixMain.h:318
elastix::ElastixMain::ObjectPointer
ObjectType::Pointer ObjectPointer
Definition: elxElastixMain.h:118
elastix::ElastixMain::ImageDimensionType
ComponentDatabaseType::ImageDimensionType ImageDimensionType
Definition: elxElastixMain.h:141
elastix::ElastixBase::ObjectContainerType
itk::VectorContainer< unsigned int, ObjectPointer > ObjectContainerType
Definition: elxElastixBase.h:159
elastix::Configuration::CommandLineArgumentMapType
std::map< std::string, std::string > CommandLineArgumentMapType
Definition: elxConfiguration.h:65
elastix::ElastixMain::DataObjectType
itk::DataObject DataObjectType
Definition: elxElastixMain.h:119
elastix::ComponentDatabase
The ComponentDatabase class is a class that stores the New() functions of all components.
Definition: elxComponentDatabase.h:54
elastix::ElastixMain::m_Elastix
ObjectPointer m_Elastix
Definition: elxElastixMain.h:307
elastix::ElastixMain::ObjectType
itk::Object ObjectType
Definition: elxElastixMain.h:112
elastix::ElastixMain::m_Configuration
ConfigurationPointer m_Configuration
Definition: elxElastixMain.h:310
elastix::ElastixMain::m_DBIndex
DBIndexType m_DBIndex
Definition: elxElastixMain.h:321
itkOpenCLContext.h
elastix::ElastixBase::DataObjectContainerType
itk::VectorContainer< unsigned int, DataObjectPointer > DataObjectContainerType
Definition: elxElastixBase.h:162
elastix::ElastixMain::m_OriginalFixedImageDirection
FlatDirectionCosinesType m_OriginalFixedImageDirection
Definition: elxElastixMain.h:341
elastix::ElastixMain::FlatDirectionCosinesType
ElastixBase::FlatDirectionCosinesType FlatDirectionCosinesType
Definition: elxElastixMain.h:131
elastix::ElastixMain::ComponentDescriptionType
ComponentDatabaseType::ComponentDescriptionType ComponentDescriptionType
Definition: elxElastixMain.h:139
elastix::ElastixMain::ComponentLoaderPointer
ComponentLoaderType::Pointer ComponentLoaderPointer
Definition: elxElastixMain.h:146
elxElastixBase.h
unsigned int
elastix::ElastixMain::SetTotalNumberOfElastixLevels
void SetTotalNumberOfElastixLevels(unsigned int levels)
elastix::ElastixMain::m_MovingImageDimension
ImageDimensionType m_MovingImageDimension
Definition: elxElastixMain.h:319
elastix::ElastixMain::operator=
void operator=(const Self &)
elastix::ElastixMain::SetComponentDatabase
static void SetComponentDatabase(ComponentDatabase *arg)
Definition: elxElastixMain.h:285
elastix::ElastixMain::m_TransformParametersMap
ParameterMapType m_TransformParametersMap
Definition: elxElastixMain.h:339
elastix::ElastixMain::Superclass
itk::Object Superclass
Definition: elxElastixMain.h:104
elastix::ElastixMain::PixelTypeDescriptionType
ComponentDatabaseType::PixelTypeDescriptionType PixelTypeDescriptionType
Definition: elxElastixMain.h:140
elastix::ElastixMain::DBIndexType
ComponentDatabaseType::IndexType DBIndexType
Definition: elxElastixMain.h:142
itk::ParameterMapInterface::ParameterMapType
ParameterFileParser::ParameterMapType ParameterMapType
Definition: itkParameterMapInterface.h:91
elastix::ElastixMain::SetProcessPriority
virtual void SetProcessPriority(void) const
elastix::ElastixBase::FlatDirectionCosinesType
std::vector< double > FlatDirectionCosinesType
Definition: elxElastixBase.h:172
elastix::ElastixMain::ComponentLoaderType
ComponentLoader ComponentLoaderType
Definition: elxElastixMain.h:145
elastix::ElastixMain::EnterCommandLineArguments
virtual void EnterCommandLineArguments(ArgumentMapType &argmap, std::vector< ParameterMapType > &inputMaps)
elastix::ElastixBase::ObjectContainerPointer
ObjectContainerType::Pointer ObjectContainerPointer
Definition: elxElastixBase.h:160
elastix::ElastixMain::ElastixBaseType
ElastixBase ElastixBaseType
Definition: elxElastixMain.h:123
elastix::ElastixMain::Run
virtual int Run(void)
elastix::Configuration::Pointer
itk::SmartPointer< Self > Pointer
Definition: elxConfiguration.h:58
elastix::ElastixMain::m_InitialTransform
ObjectPointer m_InitialTransform
Definition: elxElastixMain.h:335
elastix::ElastixMain::ParameterMapType
itk::ParameterMapInterface::ParameterMapType ParameterMapType
Definition: elxElastixMain.h:149
elastix::ElastixMain::SetMaximumNumberOfThreads
virtual void SetMaximumNumberOfThreads(void) const
elastix::ElastixMain
A class with all functionality to configure elastix.
Definition: elxElastixMain.h:99
elastix::ElastixMain::SetElastixLevel
void SetElastixLevel(unsigned int level)
elastix::ElastixMain::CreateComponents
virtual ObjectContainerPointer CreateComponents(const ComponentDescriptionType &key, const ComponentDescriptionType &defaultComponentName, int &errorcode, bool mandatoryComponent=true)
elastix::ElastixMain::Run
virtual int Run(ArgumentMapType &argmap, ParameterMapType &inputMap)
elastix::ElastixMain::LoadComponents
virtual int LoadComponents(void)
elastix::ElastixMain::GetElastixBase
virtual ElastixBaseType * GetElastixBase(void) const
elastix::ElastixMain::DataObjectContainerPointer
ElastixBase::DataObjectContainerPointer DataObjectContainerPointer
Definition: elxElastixMain.h:130
elastix::ElastixMain::GetElastixLevel
unsigned int GetElastixLevel(void)
itkParameterMapInterface.h
elastix
Definition: elxFixedGenericPyramid.h:25
elastix::ElastixMain::GetTotalNumberOfElastixLevels
unsigned int GetTotalNumberOfElastixLevels(void)
elastix::ElastixMain::ConfigurationType
ElastixBase::ConfigurationType ConfigurationType
Definition: elxElastixMain.h:124


Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.8.18 elastix logo