Discussion:
[ITK-users] How to get inverse diffeomorphic demons deformation field transform?
Mathew Guilfoyle
2017-05-22 19:25:09 UTC
Permalink
I am using (Simple)ITK DiffeomorphicDemonsRegistrationFilter() to perform deformable registration of two 3D images. This works fine. Output from the filter is 'outImage' vector image which I then convert to a transform using

dfTransform = DisplacementFieldTransform(outImage).

I can then resample my moving image using this transform and all looks as expected.

My reading/understanding of diffeomorphic algorithms is that there should be an exact and readily computable inverse transform? I need this as I want to inverse warp a template segmentation performed on my reference image into the original space of my moving image. How do I obtain the inverse DisplacementFieldTransform or the inverse vector image?

I have tried the InvertDisplacementField filter but the output of this does not appear to correctly invert my warped image back to the original so I do not think this filter generates is a n accurate inverse, at least using default settings.

Any ideas of if/how I can get an exact inverse of a deformable transform?

Thanks


_____________________________________
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://www.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-users
Francois Budin
2017-05-22 20:00:59 UTC
Permalink
Hello Mathew,

To my knowledge there is no way to get the inverse transform directly when
using ITKDiffeomorphicDemonsRegistrationFilter. You could try to invert the
deformation field using one of the algorithm that are available in ITK for
that purpose. It seems that you tried one (InverDisplacementField) but have
you tried the remote module [1]
If you want to get the inverse transformation directly, you can also try to
use [2] or use the registration method that has been implemented in this
Insight Journal paper [3].

Hope this helps,
Francois

[1]
https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Remote/FixedPointInverseDisplacementField.remote.cmake
[2]
https://itk.org/Doxygen/html/classitk_1_1VariationalSymmetricDiffeomorphicRegistrationFilter.html
[3] http://www.insight-journal.org/browse/publication/644
Post by Mathew Guilfoyle
I am using (Simple)ITK DiffeomorphicDemonsRegistrationFilter() to perform
deformable registration of two 3D images. This works fine. Output from
the filter is 'outImage' vector image which I then convert to a transform
using
dfTransform = DisplacementFieldTransform(outImage).
I can then resample my moving image using this transform and all looks as expected.
My reading/understanding of diffeomorphic algorithms is that there should
be an exact and readily computable inverse transform? I need this as I
want to inverse warp a template segmentation performed on my reference
image into the original space of my moving image. How do I obtain the
inverse DisplacementFieldTransform or the inverse vector image?
I have tried the InvertDisplacementField filter but the output of this
does not appear to correctly invert my warped image back to the original so
I do not think this filter generates is a n accurate inverse, at least
using default settings.
Any ideas of if/how I can get an exact inverse of a deformable transform?
Thanks
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Lowekamp, Bradley (NIH/NLM/LHC) [C]
2017-05-23 18:59:12 UTC
Permalink
Francois,

There does not seem to be a Doxygen page for FixedPointInverseDisplacementFieldImageFilter. I thought all remote modules were suppose to be in Doxygen. Do you have any idea why?

Brad

On May 22, 2017, at 4:00 PM, Francois Budin <***@kitware.com<mailto:***@kitware.com>> wrote:

Hello Mathew,

To my knowledge there is no way to get the inverse transform directly when using ITKDiffeomorphicDemonsRegistrationFilter. You could try to invert the deformation field using one of the algorithm that are available in ITK for that purpose. It seems that you tried one (InverDisplacementField) but have you tried the remote module [1]
If you want to get the inverse transformation directly, you can also try to use [2] or use the registration method that has been implemented in this Insight Journal paper [3].

Hope this helps,
Francois

[1] https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Remote/FixedPointInverseDisplacementField.remote.cmake
[2] https://itk.org/Doxygen/html/classitk_1_1VariationalSymmetricDiffeomorphicRegistrationFilter.html
[3] http://www.insight-journal.org/browse/publication/644

On Mon, May 22, 2017 at 3:25 PM, Mathew Guilfoyle <***@gmail.com<mailto:***@gmail.com>> wrote:
I am using (Simple)ITK DiffeomorphicDemonsRegistrationFilter() to perform deformable registration of two 3D images. This works fine. Output from the filter is 'outImage' vector image which I then convert to a transform using

dfTransform = DisplacementFieldTransform(outImage).

I can then resample my moving image using this transform and all looks as expected.

My reading/understanding of diffeomorphic algorithms is that there should be an exact and readily computable inverse transform? I need this as I want to inverse warp a template segmentation performed on my reference image into the original space of my moving image. How do I obtain the inverse DisplacementFieldTransform or the inverse vector image?

I have tried the InvertDisplacementField filter but the output of this does not appear to correctly invert my warped image back to the original so I do not think this filter generates is a n accurate inverse, at least using default settings.

Any ideas of if/how I can get an exact inverse of a deformable transform?

Thanks


_____________________________________
Powered by www.kitware.com<http://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://www.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-users

_____________________________________
Powered by www.kitware.com<http://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://www.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-users
Lowekamp, Bradley (NIH/NLM/LHC) [C]
2017-05-24 13:34:46 UTC
Permalink
I think it is this build:

https://open.cdash.org/viewNotes.php?buildid=4911206

It looks like the remote modules need to manually enabled in the configuration.

Brad

On May 24, 2017, at 12:06 AM, Francois Budin <***@kitware.com<mailto:***@kitware.com>> wrote:

Hey Brad,

I actually do not know when the remote module documentation is generated. CC'ing Matt.

Francois

On Tue, May 23, 2017 at 2:59 PM, Lowekamp, Bradley (NIH/NLM/LHC) [C] <***@mail.nih.gov<mailto:***@mail.nih.gov>> wrote:
Francois,

There does not seem to be a Doxygen page for FixedPointInverseDisplacementFieldImageFilter. I thought all remote modules were suppose to be in Doxygen. Do you have any idea why?

Brad

On May 22, 2017, at 4:00 PM, Francois Budin <***@kitware.com<mailto:***@kitware.com>> wrote:

Hello Mathew,

To my knowledge there is no way to get the inverse transform directly when using ITKDiffeomorphicDemonsRegistrationFilter. You could try to invert the deformation field using one of the algorithm that are available in ITK for that purpose. It seems that you tried one (InverDisplacementField) but have you tried the remote module [1]
If you want to get the inverse transformation directly, you can also try to use [2] or use the registration method that has been implemented in this Insight Journal paper [3].

Hope this helps,
Francois

[1] https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Remote/FixedPointInverseDisplacementField.remote.cmake
[2] https://itk.org/Doxygen/html/classitk_1_1VariationalSymmetricDiffeomorphicRegistrationFilter.html
[3] http://www.insight-journal.org/browse/publication/644

On Mon, May 22, 2017 at 3:25 PM, Mathew Guilfoyle <***@gmail.com<mailto:***@gmail.com>> wrote:
I am using (Simple)ITK DiffeomorphicDemonsRegistrationFilter() to perform deformable registration of two 3D images. This works fine. Output from the filter is 'outImage' vector image which I then convert to a transform using

dfTransform = DisplacementFieldTransform(outImage).

I can then resample my moving image using this transform and all looks as expected.

My reading/understanding of diffeomorphic algorithms is that there should be an exact and readily computable inverse transform? I need this as I want to inverse warp a template segmentation performed on my reference image into the original space of my moving image. How do I obtain the inverse DisplacementFieldTransform or the inverse vector image?

I have tried the InvertDisplacementField filter but the output of this does not appear to correctly invert my warped image back to the original so I do not think this filter generates is a n accurate inverse, at least using default settings.

Any ideas of if/how I can get an exact inverse of a deformable transform?

Thanks


_____________________________________
Powered by www.kitware.com<http://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://www.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-users

_____________________________________
Powered by www.kitware.com<http://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://www.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-users
Francois Budin
2017-05-24 13:48:53 UTC
Permalink
Thanks Brad. I updated our scripts.

Francois

On Wed, May 24, 2017 at 9:34 AM, Lowekamp, Bradley (NIH/NLM/LHC) [C] <
Post by Lowekamp, Bradley (NIH/NLM/LHC) [C]
https://open.cdash.org/viewNotes.php?buildid=4911206
It looks like the remote modules need to manually enabled in the configuration.
Brad
Hey Brad,
I actually do not know when the remote module documentation is generated. CC'ing Matt.
Francois
On Tue, May 23, 2017 at 2:59 PM, Lowekamp, Bradley (NIH/NLM/LHC) [C] <
Post by Lowekamp, Bradley (NIH/NLM/LHC) [C]
Francois,
There does not seem to be a Doxygen page for FixedPointInverseDisplacementFieldImageFilter.
I thought all remote modules were suppose to be in Doxygen. Do you have any
idea why?
Brad
Hello Mathew,
To my knowledge there is no way to get the inverse transform directly
when using ITKDiffeomorphicDemonsRegistrationFilter. You could try to
invert the deformation field using one of the algorithm that are available
in ITK for that purpose. It seems that you tried one
(InverDisplacementField) but have you tried the remote module [1]
If you want to get the inverse transformation directly, you can also try
to use [2] or use the registration method that has been implemented in this
Insight Journal paper [3].
Hope this helps,
Francois
[1] https://github.com/InsightSoftwareConsortium/ITK/blob/
master/Modules/Remote/FixedPointInverseDisplacementField.remote.cmake
[2] https://itk.org/Doxygen/html/classitk_1_1VariationalSymm
etricDiffeomorphicRegistrationFilter.html
[3] http://www.insight-journal.org/browse/publication/644
Post by Mathew Guilfoyle
I am using (Simple)ITK DiffeomorphicDemonsRegistrationFilter() to
perform deformable registration of two 3D images. This works fine. Output
from the filter is 'outImage' vector image which I then convert to a
transform using
dfTransform = DisplacementFieldTransform(outImage).
I can then resample my moving image using this transform and all looks as expected.
My reading/understanding of diffeomorphic algorithms is that there
should be an exact and readily computable inverse transform? I need this
as I want to inverse warp a template segmentation performed on my reference
image into the original space of my moving image. How do I obtain the
inverse DisplacementFieldTransform or the inverse vector image?
I have tried the InvertDisplacementField filter but the output of this
does not appear to correctly invert my warped image back to the original so
I do not think this filter generates is a n accurate inverse, at least
using default settings.
Any ideas of if/how I can get an exact inverse of a deformable transform?
Thanks
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Yaniv, Ziv Rafael (NIH/NLM/LHC) [C]
2017-05-23 14:11:55 UTC
Permalink
Hello Mathew,

Just a followup to Francois’ recommendations. SimpleITK currently doesn’t support the FixedPointInverseDisplacementField external module. If you want it added please open an issue describing the need on GitHub (https://github.com/SimpleITK/SimpleITK/issues).

thanks
Ziv

On 5/22/17, 3:25 PM, "Mathew Guilfoyle" <***@gmail.com> wrote:

I am using (Simple)ITK DiffeomorphicDemonsRegistrationFilter() to perform deformable registration of two 3D images. This works fine. Output from the filter is 'outImage' vector image which I then convert to a transform using

dfTransform = DisplacementFieldTransform(outImage).

I can then resample my moving image using this transform and all looks as expected.

My reading/understanding of diffeomorphic algorithms is that there should be an exact and readily computable inverse transform? I need this as I want to inverse warp a template segmentation performed on my reference image into the original space of my moving image. How do I obtain the inverse DisplacementFieldTransform or the inverse vector image?

I have tried the InvertDisplacementField filter but the output of this does not appear to correctly invert my warped image back to the original so I do not think this filter generates is a n accurate inverse, at least using default settings.

Any ideas of if/how I can get an exact inverse of a deformable transform?

Thanks


_____________________________________
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://www.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-users
_______________________________________________
Community mailing list
***@itk.org
http://public.kitware.com/mailman/listinfo/community


_____________________________________
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://www.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-us
Loading...