I have been away from ITK community for a few years and recently I was trying to adapt my old code to the latest release. I was running into a few problems and I don’t know if those are the known issues with the new release or I have not done it correctly. My old code was developed with InsightToolkit-3.20.1 and compiled with VC++ 2010. I have modified the code for InsightToolkit-4.13.1 and compiled with VC++ 2013. The code is doing 3D rigid registration. The following classes are involved in my V4 version.
itkImageRegistrationMethodv4
itkMattesMutualInformationImageToImageMetricv4
itkEuler3DTransform
itkRegularStepGradientDescentOptimizerv4
Similarly the classes I used in V3 includes:
itkMultiResolutionImageRegistrationMethod
itkMultiResolutionPyramidImageFilter
itkMattesMutualInformationImageToImageMetric
itkEuler3DTransform
itkRegularStepGradientDescentOptimizer
I was able to run both versions of my code and compare the performance. Here is what I found out.
- V4 requires more memory than V3. I was able to registered two image with the size of 400x400x245 in V3 but it crashes in V4.
- V4 code runs significant slower than V3. I have not been able to set both version of my code to let them have identical termination conditions but I can tell the difference from each iteration.
- The method SetMetricSamplingPercentage of the class itkImageRegistrationMethodv4 has not effect on the computation complexity. I didn’t see any change in computation time when I change the sampling percentage from 0.5 to 0.05. This is not the case in my V3 code. When the number of samples changes from 500,000 points to 50,000 points, the CPU time is reduced to about 1/9 of the original time.
Are the computation efficiency and memory usage a known issue for V4? I’ll appreciate it very much if anyone can answer my questions or give my any hints!
Jian