Difference between revisions of "Documentation/4.2/Developers/Tutorials/PortingCLIToITKv4"
Line 7: | Line 7: | ||
=== My filter doesn't run. === | === My filter doesn't run. === | ||
− | The API to ThreadedGenerateData() changed in ITKv4 | + | The API to ThreadedGenerateData() changed in ITKv4. |
ITKv3 version of ThreadedGenerateData() | ITKv3 version of ThreadedGenerateData() | ||
virtual void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread, int threadId ); | virtual void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread, int threadId ); | ||
− | |||
ITKv4 version of ThreadedGenerateData() | ITKv4 version of ThreadedGenerateData() | ||
virtual void ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread, ThreadIdType threadId); | virtual void ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread, ThreadIdType threadId); | ||
+ | |||
+ | Note the use of ThreadIdType. | ||
+ | |||
+ | If you have written a mulit-threaded filter, you need to update the signature of the method. Your ITKv3 version of the method may be defining a new function instead of overriding the version called by the pipeline. ITKv4 attempts to emit a run-time exception but there are circumstances where the exception cannot be thrown. Specifically, if your filter is a subclass of a filter that does implement ThreadedGenerateData(), then ITKv4's attempt to inform of the issue is circumvented. | ||
+ | |||
+ | If your filter is not executing in ITKv4, check the declaration of ThreadedGenerateData(). | ||
=== DICOM/GDCM === | === DICOM/GDCM === | ||
ITKv4 updated the version of GDM used to version 2. GDCM version 2 has many API changes from version 1. If your CLI used GDCM directly, you will need to port your CLI to ITKv4. If you used ITK abstractions to access DICOM, then the changes to GDCM will not affect your CLI. | ITKv4 updated the version of GDM used to version 2. GDCM version 2 has many API changes from version 1. If your CLI used GDCM directly, you will need to port your CLI to ITKv4. If you used ITK abstractions to access DICOM, then the changes to GDCM will not affect your CLI. |
Revision as of 20:12, 6 December 2012
Home < Documentation < 4.2 < Developers < Tutorials < PortingCLIToITKv4ITKv4
Links to ITKv4 Links to Migration guide
Known issues in porting CLIs
My filter doesn't run.
The API to ThreadedGenerateData() changed in ITKv4.
ITKv3 version of ThreadedGenerateData()
virtual void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread, int threadId );
ITKv4 version of ThreadedGenerateData()
virtual void ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread, ThreadIdType threadId);
Note the use of ThreadIdType.
If you have written a mulit-threaded filter, you need to update the signature of the method. Your ITKv3 version of the method may be defining a new function instead of overriding the version called by the pipeline. ITKv4 attempts to emit a run-time exception but there are circumstances where the exception cannot be thrown. Specifically, if your filter is a subclass of a filter that does implement ThreadedGenerateData(), then ITKv4's attempt to inform of the issue is circumvented.
If your filter is not executing in ITKv4, check the declaration of ThreadedGenerateData().
DICOM/GDCM
ITKv4 updated the version of GDM used to version 2. GDCM version 2 has many API changes from version 1. If your CLI used GDCM directly, you will need to port your CLI to ITKv4. If you used ITK abstractions to access DICOM, then the changes to GDCM will not affect your CLI.