Difference between revisions of "ITK v4 Migration Guide"

From mitk.org
Jump to navigation Jump to search
(username removed)
 
(Make it viewable for the public)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
internal/ITKv4/MigrationGuide hier beschreiben...
+
<!-- ## page was renamed from internal/ITKv4/ITKv4_MigrationGuide -->
 +
<!-- ## page was renamed from internal/ITKv4/MigrationGuide -->
 +
= Migration Guide =
 +
== Histogram Initialization ==
 +
[[MeasurementVectorSize]] and histogramSize has to be set explicitly when initializing a histogram
 +
 
 +
'''Old:'''
 +
 
 +
 
 +
<pre><nowiki>
 +
m_EmptyHistogram = HistogramType::New();
 +
HistogramType::SizeType histogramSize;
 +
histogramSize.Fill( 256 );
 +
m_EmptyHistogram->Initialize( histogramSize );
 +
</nowiki></pre>
 +
 
 +
'''New:'''
 +
 
 +
 
 +
<pre><nowiki>
 +
m_EmptyHistogram = HistogramType::New();
 +
m_EmptyHistogram->SetMeasurementVectorSize(2);
 +
HistogramType::SizeType histogramSize(2);
 +
histogramSize.Fill( 256 );
 +
m_EmptyHistogram->Initialize( histogramSize );
 +
</nowiki></pre>
 +
 
 +
== get/Set Output ==
 +
* [[SetOutput]](0,output) does not work since it expects a string as identifier --> use [[SetNthOutput|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.
 +
{| border="1" cellpadding="2" cellspacing="0"
 +
| 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 [http://www.itk.org/Doxygen43/html/classitkv3_1_1Rigid3DTransform.html 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

Revision as of 15:44, 26 June 2013

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

Subclasses of itk::ImageSource

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

Remove WeakPointer Workaround

  • remove all MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED
  • remove m_SmartSourcePointer from mitkBaseData

Deformation vs. Displacement

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