[Insight-users] Image Registration
Torsten Rohlfing
torsten at synapse.sri.com
Thu Sep 13 18:06:56 EDT 2012
Hi Vikash -
On 09/13/2012 01:17 PM, Vikash Gupta wrote:
>
> Suppose I have a point in the Physical Space of the moving image and I
> want to find the corresponding point in the fixed image, given that I
> have the transformation, is it so that if I apply the transformation
> to this point in the moving image I will get the corresponding point
> in the fixed image, and the corresponding voxel ?
No.
You apply the transformation to a point in the fixed image and get the
corresponding point in the moving image.
Now, whether those points are in physical space (thus respecting image
origin and direction vectors) or some kind of normalized image space
(with zero origin and identity matrix for orientation) is something I am
not sure about, so I am going to leave that for someone else to answer.
My suspicion is that it is indeed physical space coordinates.
>
> Here is an example,
>
> F_origin=[-120.0000 78.6926 -15.5144] (output from
> fixedImage->GetOrigin())
> M_Origin=[-67.9766, 80.7186, -128.159] movingImage->GetOrigin()
>
> Now I believe these two points in the physical space also correspond
> to the respective voxels with Index =(0 0 0)
I would agree with that.
>
> And on registration this is the transformation matrix I get
>
> #Insight Transform File V1.0
> # Transform 0
> Transform: AffineTransform_double_3_3
> Parameters: 0.999985 0.00438959 -0.00335042 -0.00439659 0.999988
> -0.0020834 0.00334123 0.0020981 0.999992 0.187256 0.905001 -0.172994
> FixedParameters: 0 0 0
>
> So, if you notice there is a huge gap in the origins of the two images
> which are not reflected in the translation (last 3 terms of
> parameters) parameters of the transformation matrix.
Well, the first question here is - how do you initialize the affine
registration? If you simply use the identity transformation, then you
start with a zero translation, and it is possible that that gets you
stuck in an unreasonable local optimum of the registration cost
function. You could try using something like a
CenteredTransformInitializer
<http://www.itk.org/Doxygen42/html/classitk_1_1CenteredTransformInitializer.html>
object to initialize your transformation.
Ultimately, though, you want to use ITK to reformat the moving image to
the fixed image grid according to your transformation and see whether
that gives you a reformatted moving image matching the fixed image. If
yes, your transformation is okay and then you can try to interpret it.
If no, you have a problem computing the transformation in the first
place, and you need to fix that first.
>
> So, how do i find the voxel correspondences between the two images.
> Could it be as simple as apply the transformation to the points in
> individual voxels of the moving image and calculate the correspong
> points in the physical space of the Fixed Image. ??
Again - transformation is applied to points in the FIXED image,
resulting in points in the MOVING image. I know this is
counter-intuitive, but because you "pull back" the image information
into the fixed grid when you reformat, images transform in the opposite
direction as do, for example, point sets or other geometries.
Hope this helps.
TR
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20120913/ee9aa30b/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: torsten.vcf
Type: text/x-vcard
Size: 373 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20120913/ee9aa30b/attachment.vcf>
More information about the Insight-users
mailing list