ITK v4 Migration Guide
Revision as of 16:44, 26 June 2013 by SaschaZelzer (talk | contribs) (Make it viewable for the public)
Migration Guide
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 rename 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