[ITK-dev] image and deformation field physical space check
Matt McCormick
matt.mccormick at kitware.com
Mon Nov 3 12:38:51 EST 2014
Hi Brian,
Thanks for discussing this.
I think a combination of fixing the underlying issue that is being
brought up by the exception, relaxing the tolerance, and improving the
documentation is a good approach.
2 cents,
Matt
On Mon, Nov 3, 2014 at 11:40 AM, brian avants <stnava at gmail.com> wrote:
> This email is motivated by this issue:
>
> https://github.com/stnava/ANTs/issues/74
>
> but it is not isolated to ants. Worth a read for additional context.
>
> ITK currently enforces a relatively strict check that image and displacement
> fields "occupy the same physical space." However, for some unclear (to me)
> reasons, the direction matrices or origins of images can lose precision when
> passing through ITK pipelines ( especially through resampling or
> resolution-changing filters ). This results in filters aborting and this
> can occur at various different places in a complex series of ITK-based
> operations.
>
> My concern with this is that it can lead to a very severe loss of
> productivity when this somewhat unpredictable error occurs. For instance,
> a user downloads a toolkit based on ITK ( itk-snap, ants, elastic,
> brainsfit, joint label fusion, etc). The user expects registration or
> segmentation filters to "work well" especially when the data is of a
> standard sort. Then, after some oft-substantial execution time, this
> mysterious error appears:
>
> itk::ERROR: ImageToImageFilter(0x7fb3b2307ac0): Inputs do not occupy the
> same physical space!
>
>
> While I am all for correctness, when the impact on productivity exceeds a
> certain threshold, I think it is useful to bend the rules a bit. Perhaps
> one of these would improve the situation:
>
> 1) change:
>
> ITKv4/Modules/Filtering/DisplacementField/include/itkDisplacementFieldTransform.hxx
>
> and
>
> ITKv4/Modules/Core/Common/include/itkImageToImageFilter.hxx
>
> changing direction tolerance and coordinate tolerance to 1.e-4
>
> https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Filtering/DisplacementField/include/itkDisplacementFieldTransform.hxx#L454-L457
>
> https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Core/Common/include/itkImageToImageFilter.hxx#L40-L41
>
> and change the documentation too:
>
> https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Core/Common/include/itkImageToImageFilter.h#L76-L87
>
> 2) Change the exception to a warning. This would at least allow complex
> pipelines to execute while notifying the user of a possible issue.
>
> 3) Document all of the places that the user/developer should call:
>
> Set/GetCoordinateTolerance Set/GetDirectionTolerance .
>
> This last solution would require adding Set/GetCoordinate and Direction
> tolerance to:
>
> https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Filtering/DisplacementField/include/itkDisplacementFieldTransform.h
>
> as well, for consistency.
>
> Anyway, I raise this issue b/c of the many man and computer hours lost by
> this check.
>
> Not once has this check actually helped us, in any measurable way, avoid
> errors.
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-developers
>
More information about the Insight-developers
mailing list