[ITK] On the deformable model

Matt McCormick matt.mccormick at kitware.com
Fri Mar 24 15:37:08 EDT 2017


Hi Nicolás,

Later on in the presentation it mention the iterative approach; some
details are here:

  https://github.com/InsightSoftwareConsortium/ITK/blob/aecfac233e8815cdd0121fd2351dd3fef80d2e1b/Modules/Registration/FEM/include/itkFEMRegistrationFilter.hxx#L222-L255

Within a FEM system solution, the similarity metric is not changing,
but the metric is updated during iterations.

HTH,
Matt

On Fri, Mar 24, 2017 at 3:20 PM, Nicolás Barnafi <nabw91 at gmail.com> wrote:
> Hi Matt,
>
> Yes, and in the example the they don't set anything, so the metric is by
> default the SSD. The part I don't see is, SSD does not include any kind of
> evolution in time. With this in mind, does the solver assume, when we set
> the use of a mass_matrix, that it has to use optical flow instead of simply
> assessing the error given by the warping? If this is true, it would be great
> to see the original optimization problem, or at least the EL equations and
> how they are penalized. I am very intrigued because my (very) simple python
> implementation uses no time evolution and a plain fixed point scheme, and no
> matter how much I beg, it does not converge to anything that lungs like a
> registration. Thanks again.
>
> Best regards
>
> On 24 March 2017 at 15:55, Matt McCormick <matt.mccormick at kitware.com>
> wrote:
>>
>> Hi Nicolás,
>>
>> On slide 5, E_D and E_S are referring to the optical flow registration.
>>
>> On slide 6 is an objective function for variational registration, and
>> FEM registration uses the integral of the deformation (linear elastic
>> internal strain energy) as a regularization term.
>>
>> The similarity term can vary:
>>
>>
>> https://github.com/InsightSoftwareConsortium/ITK/blob/aecfac233e8815cdd0121fd2351dd3fef80d2e1b/Modules/Registration/FEM/include/itkFEMRegistrationFilter.hxx#L222-L255
>>
>> HTH,
>> Matt
>>
>> On Fri, Mar 24, 2017 at 11:39 AM, Nicolás Barnafi <nabw91 at gmail.com>
>> wrote:
>> > Hi Matt,
>> >
>> > Thanks the quick answer and welcome :) . That is indeed the ppt. There
>> > they
>> > define two energies and then write an integral in terms of some
>> > "similarity"
>> > which wasn't really defined. Maybe it is the E_D term? Hopefully the
>> > same
>> > applies for smoothness (E_S), but I'm not sure. In the code I had
>> > trouble
>> > because RunRegistration uses MultiResSolve, and there they instantiate a
>> > solver which uses Update(). I couldn't find Update in either .h or .hxx
>> > files, and apparently update is redirected (somehow) to AssembleKandM.
>> > The
>> > Doxygen page for the CrankNicolson solver shows a formulation of the
>> > method
>> > but not for what problem, and that leaves other questions without
>> > answer,
>> > such as the boundary conditions, elements used for the FEM formulation,
>> > etc.
>> > Thanks so much for your time.
>> >
>> > Best regards
>> >
>> > On 23 March 2017 at 18:34, Matt McCormick <matt.mccormick at kitware.com>
>> > wrote:
>> >>
>> >> Hi Nicolás,
>> >>
>> >> Welcome to ITK!
>> >>
>> >>
>> >> Is this the PowerPoint?
>> >>
>> >>   https://itk.org/CourseWare/Training/NonRigidRegistrationMethods
>> >>
>> >> Note that DeformableRegistration1.cxx (FEM registration) is discussed
>> >> after the optical flow example.
>> >>
>> >>
>> >> Some more information on the FEMRegistrationFilter can be found in its
>> >> class documentation:
>> >>
>> >>
>> >>
>> >> https://itk.org/Doxygen/html/classitk_1_1fem_1_1FEMRegistrationFilter.html
>> >>
>> >> Multiple metrics are available:
>> >>
>> >>
>> >>
>> >> https://itk.org/Doxygen/html/classitk_1_1fem_1_1FEMRegistrationFilter.html#acc636f4752e592cd780503a5fbfeba82
>> >>
>> >>
>> >> In general, "the code reveals all" and should be given the highest
>> >> amount of trust.
>> >>
>> >>
>> >> Hope this helps,
>> >> Matt
>> >>
>> >> On Thu, Mar 23, 2017 at 4:32 PM, Nicolás Barnafi <nabw91 at gmail.com>
>> >> wrote:
>> >> > Hi everyone,
>> >> >
>> >> > I have been trying to understand exactly what is happening in the
>> >> > DeformableRegistration1.h file without much success. The problem is:
>> >> > according to the software guide, the problem being solved comes from
>> >> > the
>> >> > variational problem given by
>> >> >
>> >> > min D[image1, image2; u] + S[u]
>> >> >
>> >> > where D is just the SSD (or the L2 norm of (Im1 - Im2 o phi), with
>> >> > phi
>> >> > the
>> >> > unknown displacement field) and S is a linear elastic potential. From
>> >> > here
>> >> > you get  the euler lagrange equations (asuming some unspecified
>> >> > boundary
>> >> > ocndition) and solve it using some semi implicit newton-raphson
>> >> > scheme.
>> >> > This
>> >> > is where it starts getting blurry, because the ITK ppt on deformable
>> >> > registration first shows an optical flow formulation, which would
>> >> > mean
>> >> > that
>> >> > the SSD metric isn't really what is being used, and also if I dig
>> >> > deeper
>> >> > in
>> >> > the code, I find actually a Crank-Nicolson scheme being used, which
>> >> > really
>> >> > implies some kind of temporality that really does not exist in the
>> >> > variational formulation. The only hint I have found was in
>> >> > Modersitzki's
>> >> > book where a fixed point scheme is artificially stabilized:
>> >> >
>> >> > A(u[k+1]) = f_u[k]
>> >> >
>> >> > => u[k+1] + t A(u[k+1]) = t f_u[k] + u[k].
>> >> >
>> >> > I would want to know what is exactly happening in that example to be
>> >> > able to
>> >> > validate an example I implemented in python. Thanks for your time.
>> >> >
>> >> > Best regards
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Nicolás Alejandro Barnafi Wittwer
>> >> >
>> >> > _______________________________________________
>> >> > Community mailing list
>> >> > Community at itk.org
>> >> > http://public.kitware.com/mailman/listinfo/community
>> >> >
>> >
>> >
>> >
>> >
>> > --
>> > Nicolás Alejandro Barnafi Wittwer
>
>
>
>
> --
> Nicolás Alejandro Barnafi Wittwer


More information about the Community mailing list