ITKv5 Streaming/ImageSinc Impact

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

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 Add streaming base classes and streaming statistics by blowekamp · Pull Request #855 · InsightSoftwareConsortium/ITK · GitHub 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…

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

@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: Merge pull request #849 from thewtex/clang-detection · InsightSoftwareConsortium/ITK@9e12266 · GitHub

At ENH: Replace elastix ImageSpatialObject2 by ITK ImageSpatialObject by N-Dekker · Pull Request #147 · SuperElastix/elastix · GitHub

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!

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

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…

If compatibility is enabled we could add a base implementation which

.

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

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