[Insight-users] Concatenation of deformation fields?
Luis Ibanez
luis.ibanez at kitware.com
Sat Mar 27 12:04:51 EDT 2010
Hi Gerald,
Thanks for your very detailed clarification.
Just to simplify the email notation,
let me add the following two definitions:
A := D_r^-1
B := D_n^-1
C := D_n,r^-1
so the deformation field "C" is the result
of composing the deformation field "A"
with "B".
Therefore, for every point x, its deformed
target x" will be computed as:
x" = C(x) = B( A (x) )
that is
x' = A( x )
x" = B( x' )
x" = C( x ) = B( x' ) = B( A ( x ) )
Let's now name the coordinate frames:
F1 := The original image from
which the points "x" are taken.
This is the undeformed image.
F2 := The deformed image that results
from applying the field A to all the
points of F1.
F3 := The deformed image that results
from applying the field B to all the
points of F2.
With your current processing you have
direct access to the fields "A" and "C".
"A" maps the coordinate system F1 to F2
"C" maps the coordinate system F1 to F3
and you are interested in finding the field B
where
"B" maps the coordinate system F2 to F3
So one way to *estimate* the field "B" is
the following.
1) Use the filter
Insight/Code/BasicFilter/
itkIterativeInverseDeformationFieldImageFilter.h
in order to estimate A^-1, (let's call it A' so it looks
better in an email: A' = A^-1.
A' maps the coordinates from F2 to F1
2) Having A' you can now visit all the points x' of F2,
map them to x in F1 via A', and then map their
destinations to F3 via C.
x'' = C ( A'( x' ) )
Therefore you can build an estimation of B by
composing C with A'
3) Note that when you apply A' to a point x', the
resulting point x will not land exactly in the grid
node of the image F1, and therefore, you will
have to interpolate from C in order to find the
corresponding destination.
For this purpose you can use the class
Insight/Code/Common/
itkVectorLinearInterpolateImageFunction.h
If you compose steps (1),(2),(3) in to an ITK filter,
that will make a very nice contribution to the
Insight Journal :-)
Regards,
Luis
----------------------------------------------------------------------------------------------------
On Fri, Mar 19, 2010 at 3:30 AM, Lodron, Gerald
<Gerald.Lodron at joanneum.at> wrote:
> Hi
>
> I do not exactly know what you mean but i will try to explain my pipline in a little more detail:
>
> In principle i have two 3D data sets with I1 = 512 x 512 x z1 and I2 = 512 x 512 x z2. The origin and pixel spacing could be different. So the first thing i do is to calculate a new image I2iso = f(I1) and I2iso = f(I2) so that the pixel spacing becomes isotrophic, i mean pixel spacing in x y and z is now the same and also equal for I2iso and I1iso (spacingX1=spacingY1=spacingZ1=spacingX2=spacingY2=spacingZ2). I need an isotrophic pixel spacing because i use the demon registration in my nonrigid step (and the usepixelspacing function of the filter always leads to an error).
>
>
> Now i made two registrations, a coarse one (i called it rigid which is wrong) and a fine one where the coarse one is implemented via two subregistrations. First i make a versor registration, so i compute translation and rotation. Then i make a coarse Bspline like in the examples with 4 grid points and the versor result as initial parameters. The result is converted into a deformation field (for sure in reference to the fixed image), this is called my D_r^-1 (i know it is not pure rigid, but nearly).
>
> Now i make my nonrigid registration using a multiscale demon registration filter with the initial deformation field of the quasi rigid step (D_r^-1). So the result is the combination of the known D_r^-1 and the unknown D_n^-1 which is called D_n,r^-1.
>
> I want to display changes (which should refer to the norm of D_n-1) in the registered image (so I1 transformed with D_n,r^-1) so i need to extract D_n-1 from D_n,r^-1 using D_r^-1 and thats not a simply substraction...
>
>
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: Luis Ibanez [mailto:luis.ibanez at kitware.com]
> Gesendet: Donnerstag, 18. März 2010 17:32
> An: Lodron, Gerald
> Cc: insight-users at itk.org
> Betreff: Re: [Insight-users] Concatenation of deformation fields?
>
> Hi Gerald,
>
> It should be possible to separate the non rigid component from the final deformation field.
>
> Did you compute both the
>
> 1) D_r^1 and
> 2) D_n^1
>
> in the same image grid ?
>
> Note however that the key point here is a problem of reference systems. The non-ridig deformation field will be one with respect to the rotated image, not with respect to the original image.
>
>
> Luis
>
>
> --------------------------------------------------------------------------------------
> On Wed, Mar 10, 2010 at 11:52 AM, Lodron, Gerald <Gerald.Lodron at joanneum.at> wrote:
>>
>> Hi,
>>
>> I have a quite interresting problem and I am not sure if it is solveable but maybe someone can help:
>>
>> I made a rigid registration and converted the output to a deformation field, let us name it D_r^-1 (it is the inverse deformation because of inverse mapping). After that i made a nonrigid registration with the R_rigid^-1 as start deformation value, the output is the inverse deformation field of the rigid and the nonrigid registration, let us call it D_r,n^-1.
>>
>> My question is, is it possible to calculate the pure nonrigid deformation field D_n^-1 ?
>>
>> Best regards
>>
>>
>> _____________________________________
>> 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.html
>>
>> 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://www.itk.org/mailman/listinfo/insight-users
>>
>
More information about the Insight-users
mailing list