Difference between revisions of "ITK v4 Migration Guide"
Jump to navigation
Jump to search
SaschaZelzer (talk | contribs) (Make it viewable for the public) |
SaschaZelzer (talk | contribs) |
||
Line 2: | Line 2: | ||
<!-- ## page was renamed from internal/ITKv4/ITKv4_MigrationGuide --> | <!-- ## page was renamed from internal/ITKv4/ITKv4_MigrationGuide --> | ||
<!-- ## page was renamed from internal/ITKv4/MigrationGuide --> | <!-- ## page was renamed from internal/ITKv4/MigrationGuide --> | ||
− | = Migration Guide = | + | = ITK 4 Migration Guide = |
+ | With the MITK 2013.06 release, MITK migrated from ITK 3 to ITK 4. Developers using MITK should read through the official [http://itk.org/migrationv4/ ITK migration guide] and the MITK specific changes listed below. | ||
+ | |||
== Histogram Initialization == | == Histogram Initialization == | ||
− | + | MeasurementVectorSize and histogramSize has to be set explicitly when initializing a histogram | |
'''Old:''' | '''Old:''' | ||
Line 28: | Line 30: | ||
== get/Set Output == | == get/Set Output == | ||
− | * | + | * SetOutput(0,output) does not work since it expects a string as identifier --> use SetPrimaryOutput(output) instead! |
== Subclasses of itk::[[ImageSource]] == | == Subclasses of itk::[[ImageSource]] == | ||
− | * The method signature of itk:: | + | * The method signature of itk::ImageSource::ThreadedGenerateData changed: The thread id is now of type ''unsigned int'' instead of ''int''. Use the new ''ThreadIdType'' typedef to correctly overload the virtual ThreadedGenerateData method. |
== mitk::[[PixelType]] == | == mitk::[[PixelType]] == | ||
− | The mitk:: | + | The mitk::PixelType class was adapted to changes in itk::ImageIOBase and its interface was cleaned up. |
{| border="1" cellpadding="2" cellspacing="0" | {| border="1" cellpadding="2" cellspacing="0" | ||
| Old | | Old | ||
Line 40: | Line 42: | ||
| Comment | | Comment | ||
|- | |- | ||
− | | itk::ImageIOBase::IOPixelType | + | | itk::ImageIOBase::IOPixelType GetPixelTypeId() |
− | | itk::ImageIOBase::IOPixelType | + | | itk::ImageIOBase::IOPixelType GetPixelType() |
| Renamed | | Renamed | ||
|- | |- | ||
− | | const std::type_info& | + | | const std::type_info& GetTypeId() |
− | | int | + | | int GetComponentType() |
− | | To compare the component type, use either the itk::ImageIOBase::IOComponentType enum directly or use mitk:: | + | | To compare the component type, use either the itk::ImageIOBase::IOComponentType enum directly or use mitk::MapPixelComponentType<T>::value to map a pixel component type to an integer value (this will also work for user component types not known to the itk::ImageIOBase class |
|- | |- | ||
− | | std::string | + | | std::string GetItkTypeAsString() |
− | | std::string | + | | std::string GetPixelTypeAsString() |
| Renamed | | Renamed | ||
|} | |} | ||
Line 64: | Line 66: | ||
== Deformation vs. Displacement == | == Deformation vs. Displacement == | ||
− | * Deformation is | + | * Deformation is renamed into Displacement, see http://itk.org/migrationv4/index.php?action=artikel&cat=3&id=90&artlang=en&highlight=itkInverseDeformationFieldImageFilter |
== [[BaseProcess]] vs. [[BaseDataSource]] or "cannot allocate an object of abstract type" == | == [[BaseProcess]] vs. [[BaseDataSource]] or "cannot allocate an object of abstract type" == | ||
− | * Due to changes in the ITK Filterpipeline we decided to mark mitk:: | + | * Due to changes in the ITK Filterpipeline we decided to mark mitk::BaseProcess as deprecated. |
− | * The new class mitk:: | + | * The new class mitk::BaseDataSource should be used by now |
− | * mitk:: | + | * mitk::BaseDataSource has some pure virtual functions (actually the MakeOutput(..) functions) |
* These functions must be implemented by each subclass | * These functions must be implemented by each subclass | ||
Line 75: | Line 77: | ||
* ITK 4 implements various new clone() methods which we used to implement in MITK in the past resulting in the error mentioned above. | * ITK 4 implements various new clone() methods which we used to implement in MITK in the past resulting in the error mentioned above. | ||
* Most of the time, the Clone() method in MITK can just be removed. | * Most of the time, the Clone() method in MITK can just be removed. | ||
− | * If there is anything happening except for the call to | + | * If there is anything happening except for the call to InternalClone() this code should be moved to the InternalClone() method. |
== itk::[[PointSet]] does not have a boundingbox anymore == | == itk::[[PointSet]] does not have a boundingbox anymore == | ||
− | * itk:: | + | * itk::PointSet::GetBoundingBox() is not available anymore. Whenever you need the bounding box, you must create it on your own and fill it the pointset points. |
* an example is given here: http://itk.org/ITKExamples/Examples/Core/Common/BoundingBoxOfAPointSet/BoundingBoxOfAPointSet.html | * an example is given here: http://itk.org/ITKExamples/Examples/Core/Common/BoundingBoxOfAPointSet/BoundingBoxOfAPointSet.html |
Revision as of 17:05, 26 June 2013
ITK 4 Migration Guide
With the MITK 2013.06 release, MITK migrated from ITK 3 to ITK 4. Developers using MITK should read through the official ITK migration guide and the MITK specific changes listed below.
Histogram Initialization
MeasurementVectorSize and histogramSize has to be set explicitly when initializing a histogram
Old:
m_EmptyHistogram = HistogramType::New(); HistogramType::SizeType histogramSize; histogramSize.Fill( 256 ); m_EmptyHistogram->Initialize( histogramSize );
New:
m_EmptyHistogram = HistogramType::New(); m_EmptyHistogram->SetMeasurementVectorSize(2); HistogramType::SizeType histogramSize(2); histogramSize.Fill( 256 ); m_EmptyHistogram->Initialize( histogramSize );
get/Set Output
- SetOutput(0,output) does not work since it expects a string as identifier --> use SetPrimaryOutput(output) instead!
Subclasses of itk::ImageSource
- The method signature of itk::ImageSource::ThreadedGenerateData changed: The thread id is now of type unsigned int instead of int. Use the new ThreadIdType typedef to correctly overload the virtual ThreadedGenerateData method.
mitk::PixelType
The mitk::PixelType class was adapted to changes in itk::ImageIOBase and its interface was cleaned up.
Old | New | Comment |
itk::ImageIOBase::IOPixelType GetPixelTypeId() | itk::ImageIOBase::IOPixelType GetPixelType() | Renamed |
const std::type_info& GetTypeId() | int GetComponentType() | To compare the component type, use either the itk::ImageIOBase::IOComponentType enum directly or use mitk::MapPixelComponentType<T>::value to map a pixel component type to an integer value (this will also work for user component types not known to the itk::ImageIOBase class |
std::string GetItkTypeAsString() | std::string GetPixelTypeAsString() | Renamed |
Rigid3DTransform
- This transform-class is deprecated and made unusable in the itk4 release: http://itk-insight-users.2283740.n2.nabble.com/Rigid3DTransform-make-error-td7160305.html
- Alternatives can be found in the legacy documentation of itkv3Rigid3DTransform (most likely the itkVersorRigidTransformation)
- Used in IGTFilters: mitkNavigationDataLandmarkTransformFilter
- mitkRigidRegistrationPreset (removed in bf88544ebacc9ea31fb9f922172fb82eea900b4c)
Remove WeakPointer Workaround
- remove all MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED
- remove m_SmartSourcePointer from mitkBaseData
Deformation vs. Displacement
- Deformation is renamed into Displacement, see http://itk.org/migrationv4/index.php?action=artikel&cat=3&id=90&artlang=en&highlight=itkInverseDeformationFieldImageFilter
BaseProcess vs. BaseDataSource or "cannot allocate an object of abstract type"
- Due to changes in the ITK Filterpipeline we decided to mark mitk::BaseProcess as deprecated.
- The new class mitk::BaseDataSource should be used by now
- mitk::BaseDataSource has some pure virtual functions (actually the MakeOutput(..) functions)
- These functions must be implemented by each subclass
Clone() const' cannot be overloaded"
- ITK 4 implements various new clone() methods which we used to implement in MITK in the past resulting in the error mentioned above.
- Most of the time, the Clone() method in MITK can just be removed.
- If there is anything happening except for the call to InternalClone() this code should be moved to the InternalClone() method.
itk::PointSet does not have a boundingbox anymore
- itk::PointSet::GetBoundingBox() is not available anymore. Whenever you need the bounding box, you must create it on your own and fill it the pointset points.
- an example is given here: http://itk.org/ITKExamples/Examples/Core/Common/BoundingBoxOfAPointSet/BoundingBoxOfAPointSet.html