28 #ifndef __elxElastixBase_h 29 #define __elxElastixBase_h 34 #include "itkObject.h" 35 #include "itkDataObject.h" 38 #include "itkVectorContainer.h" 39 #include "itkImageFileReader.h" 40 #include "itkChangeInformationImageFilter.h" 51 #define elxGetObjectMacro( _name, _type ) \ 52 virtual _type * Get##_name( void ) const \ 54 return this->m_##_name.GetPointer(); \ 58 #define elxSetObjectMacro( _name, _type ) \ 59 virtual void Set##_name( _type * _arg ) \ 61 if( this->m_##_name != _arg ) \ 63 this->m_##_name = _arg; \ 64 this->GetAsITKBaseType()->Modified(); \ 70 #define elxGetNumberOfMacro( _name ) \ 71 virtual unsigned int GetNumberOf##_name##s( void ) const \ 73 if( this->Get##_name##Container() != 0 ) \ 75 return this->Get##_name##Container()->Size(); \ 158 typedef itk::VectorContainer<
161 typedef itk::VectorContainer<
164 typedef itk::VectorContainer<
185 return dynamic_cast< ITKBaseType *
>( this );
309 virtual int Run(
void ) = 0;
349 const FlatDirectionCosinesType & arg );
360 virtual void SetConfigurations( std::vector< ConfigurationPointer > & configurations ) = 0;
385 template<
class TImage >
399 FileNameContainerType * fileNameContainer,
const std::string & imageDescription,
400 bool useDirectionCosines, DirectionType * originalDirectionCosines = NULL )
402 DataObjectContainerPointer imageContainer = DataObjectContainerType::New();
405 for(
unsigned int i = 0; i < fileNameContainer->Size(); ++i )
408 ImageReaderPointer imageReader = ImageReaderType::New();
409 imageReader->SetFileName( fileNameContainer->ElementAt( i ).c_str() );
410 ChangeInfoFilterPointer infoChanger = ChangeInfoFilterType::New();
411 DirectionType direction;
412 direction.SetIdentity();
413 infoChanger->SetOutputDirection( direction );
414 infoChanger->SetChangeDirection( !useDirectionCosines );
415 infoChanger->SetInput( imageReader->GetOutput() );
420 infoChanger->Update();
422 catch( itk::ExceptionObject & excp )
425 std::string err_str = excp.GetDescription();
426 err_str +=
"\nError occurred while reading the image described as " 427 + imageDescription +
", with file name " + imageReader->GetFileName() +
"\n";
428 excp.SetDescription( err_str );
434 ImagePointer image = infoChanger->GetOutput();
435 imageContainer->CreateElementAt( i ) = image.GetPointer();
438 if( originalDirectionCosines )
440 *originalDirectionCosines = imageReader->GetOutput()->GetDirection();
445 return imageContainer;
454 DataObjectContainerPointer imageContainer = DataObjectContainerType::New();
457 imageContainer->CreateElementAt( 0 ) = image;
460 return imageContainer;
476 DataObjectPointer image )
481 DataObjectContainerPointer imageContainer = DataObjectContainerType::New();
484 imageContainer->CreateElementAt( j ) = image;
487 return imageContainer;
549 const std::string & optionkey,
552 bool printinfo )
const;
558 #undef elxGetObjectMacro 559 #undef elxSetObjectMacro 560 #undef elxGetNumberOfMacro 562 #endif // end #ifndef __elxElastixBase_h elxSetObjectMacro(Configuration, ConfigurationType)
itk::ChangeInformationImageFilter< ImageType > ChangeInfoFilterType
static DataObjectContainerPointer GenerateImageContainer(DataObjectPointer image)
ObjectContainerPointer m_InterpolatorContainer
DataObjectContainerType::Pointer DataObjectContainerPointer
virtual DBIndexType GetDBIndex(void)
static DataObjectContainerPointer GenerateImageContainer(DataObjectPointer image)
itk::VectorContainer< unsigned int, std::string > FileNameContainerType
virtual bool GetUseDirectionCosines(void) const
ComponentDatabase ComponentDatabaseType
ComponentDatabaseType::IndexType DBIndexType
xl::xoutrow_type m_IterationInfo
virtual void SetConfigurations(std::vector< ConfigurationPointer > &configurations)=0
Configuration ConfigurationType
DataObjectContainerPointer m_MovingImageContainer
ObjectContainerPointer m_MetricContainer
itk::SmartPointer< Self > Pointer
DataObjectContainerPointer m_ResultImageContainer
itk::DataObject DataObjectType
virtual int BeforeAllBase(void)
virtual void CreateTransformParametersMap(void)=0
FileNameContainerPointer m_MovingMaskFileNameContainer
The xoutrow class can easily generate tables.
The BaseComponent class is a class that all elastix components should inherit from.
ObjectContainerPointer m_OptimizerContainer
FileNameContainerPointer GenerateFileNameContainer(const std::string &optionkey, int &errorcode, bool printerrors, bool printinfo) const
std::vector< double > FlatDirectionCosinesType
itk::VectorContainer< unsigned int, ObjectPointer > ObjectContainerType
ObjectContainerPointer m_FixedImagePyramidContainer
MultipleDataObjectFiller()
ParameterFileParser::ParameterMapType ParameterMapType
virtual void AfterRegistrationBase(void)
ObjectContainerPointer m_TransformContainer
ObjectContainerPointer m_ImageSamplerContainer
elxGetNumberOfMacro(Registration)
ImageType::Pointer ImagePointer
elxGetObjectMacro(Configuration, ConfigurationType)
FileNameContainerType::Pointer FileNameContainerPointer
virtual ParameterMapType GetTransformParametersMap(void) const =0
virtual void SetOriginalFixedImageDirectionFlat(const FlatDirectionCosinesType &arg)
static DataObjectContainerPointer GenerateImageContainer(FileNameContainerType *fileNameContainer, const std::string &imageDescription, bool useDirectionCosines, DirectionType *originalDirectionCosines=NULL)
ObjectContainerPointer m_MovingImagePyramidContainer
virtual void SetDBIndex(DBIndexType _arg)
ChangeInfoFilterType::Pointer ChangeInfoFilterPointer
ComponentDatabaseType::Pointer ComponentDatabasePointer
ImageReaderType::Pointer ImageReaderPointer
itk::ParameterMapInterface::ParameterMapType ParameterMapType
DataObjectContainerPointer m_FixedMaskContainer
FlatDirectionCosinesType m_OriginalFixedImageDirection
itk::SmartPointer< Self > Pointer
bool m_UseDirectionCosines
virtual int BeforeAllTransformixBase(void)
FileNameContainerPointer m_FixedImageFileNameContainer
ObjectPointer m_InitialTransform
~MultipleDataObjectFiller()
virtual int ApplyTransform(void)=0
ObjectContainerType::Pointer ObjectContainerPointer
void operator=(const Self &)
ObjectPointer m_FinalTransform
ConfigurationPointer m_Configuration
virtual const FlatDirectionCosinesType & GetOriginalFixedImageDirectionFlat(void) const
virtual int GetDefaultOutputPrecision(void) const
A class that deals with user given parameters and command line arguments.
FileNameContainerPointer m_MovingImageFileNameContainer
ObjectContainerPointer m_RegistrationContainer
int m_DefaultOutputPrecision
DataObjectContainerPointer m_MovingMaskContainer
The ComponentDatabase class is a class that stores the New() functions of all components.
ImageType::DirectionType DirectionType
DataObjectType::Pointer DataObjectPointer
FileNameContainerPointer m_FixedMaskFileNameContainer
ObjectContainerPointer m_ResamplerContainer
ConfigurationType::Pointer ConfigurationPointer
itk::ImageFileReader< ImageType > ImageReaderType
ObjectContainerPointer m_ResampleInterpolatorContainer
itk::VectorContainer< unsigned int, DataObjectPointer > DataObjectContainerType
virtual void BeforeRegistrationBase(void)
ObjectType::Pointer ObjectPointer
This class creates an interface for elastix.
virtual ITKBaseType * GetAsITKBaseType(void)
ComponentDatabasePointer m_ComponentDatabase
DataObjectContainerPointer m_FixedImageContainer