ITKv5 Streaming/ImageSinc Impact

(Bradley Lowekamp) #1

This sounds like it is related to my recent changes. Please let me know if there is anything I can do to help with the problem you have encountered.

1 Like
ITK 5.0.0 is Coming
(Niels Dekker) #2

Thanks for your extensive reply, @matt.mccormick!

Thanks for offering, @blowekamp .Indeed, the recent compilation errors I get from elastix are related to your work on https://github.com/InsightSoftwareConsortium/ITK/pull/855 One of the issues is that some elastix classes now need to override GetRadius(). I really have to dive into those classes to figure out how to properly implement such a GetRadius(). I’ll have a closer look tomorrow…

(Bradley Lowekamp) #3

@Niels_Dekker What class are you deriving from? Do you have a link to the problematic class?

(Niels Dekker) #4

@blowekamp Sorry I still haven’t finished fixing the elastix test failures related to the Spatial Object refactoring. I’m not still building elastix with an ITK version of May 9: https://github.com/InsightSoftwareConsortium/ITK/commit/9e122664724eb049955c968c054247c00d92eee2

At https://github.com/SuperElastix/elastix/pull/147

Of course you could try to build elastix from that pull request (elastix pr #147) against the latest ITK master. Then you would get lots, and lots of compile errors:

f:\x\src\elx\elastix\common\itkReducedDimensionBSplineInterpolateImageFunction.h(106): error C2259: ‘itk::ReducedDimensionBSplineInterpolateImageFunction<itk::Image<float,2>,double,double>’: cannot instantiate abstract class
f:\x\src\elx\elastix\common\itkReducedDimensionBSplineInterpolateImageFunction.h(106): note: due to following members:
f:\x\src\elx\elastix\common\itkReducedDimensionBSplineInterpolateImageFunction.h(106): note: ‘itk::Size<2> itk::InterpolateImageFunction<itk::Image<float,2>,double>::GetRadius(void) const’: is abstract
f:\x\src\elx\elastix\common\itkReducedDimensionBSplineInterpolateImageFunction.h(106): error C2259: ‘itk::ReducedDimensionBSplineInterpolateImageFunction<itk::Image<float,2>,double,double>’: cannot instantiate abstract class

etc.

Missing GetRadius() overrides is just one of the issues. I think elastix BeforeThreadedGenerateData() and AfterThreadedGenerateData() must also be replaced by BeforeStreamedGenerateData() and AfterStreamedGenerateData() overrides. And that’s not all… I’m not sure, I’m just guessing. So yes, your help is appreciated!

(Bradley Lowekamp) #5

Ahh… This error has to do with the changes to the ResampleImageFilter to support streaming and the additional Interpolator::GetRadius method that is now needed. This changes occurred in this PR:

1 Like
(Francois Budin) #6

I had a similar error the other day while updating the ITK remote module https://github.com/InsightSoftwareConsortium/ITKGenericLabelInterpolator . This is something we should fix…

(Bradley Lowekamp) #7

If compatibility is enabled we could add a base implementation which

.

(Bradley Lowekamp) #8

I compiled elastix and got a couple errors related to ComputeImageExtremaFilter which is derived from the StatisticsImageFilter. Addressing those errors would require a copying much of the new implementation.

The ComputeImageExtremaFilter seems to only add the ability to specify a MaskedImage as a region to compute the statistics. The simplest thing to do would be to just use the LabelStatisticsImageFilter with the mask image as the label image.

1 Like
(Niels Dekker) #9

Thanks very much for trying to compile elastix!

Going home now, tomorrow I’ll have a more detailed look at your interesting findings!

1 Like