<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7226.0">
<TITLE>RE: [Insight-users] A working code for rotating a 3D array withVersorRigid3DTransform</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>
<BR>
<BR>

<P><FONT SIZE=2>&gt; One thing which is making me skeptical<BR>
&gt; from the beginning is, why should I use ResampleImageFilter when I don't<BR>
&gt; need it. Other than using a filter, I did not find any way of feeding in<BR>
&gt; data directly to the VersorRigid3DTransfom class.<BR>
<BR>
Perhaps I don't understand what the problem is but I'll have a go at trying to be helpful!<BR>
<BR>
If you are trying to generate a new image (the 'image')&nbsp; that represents the information of the old image (the 'preimage') rotated, and the transformation of the coordinate of a voxel in the preimage does not lie exactly on the coordinate of a voxel in the image, you need to decide what the value of the voxel in the image should be. This is the job of the resampler, using the method given to it as the interpolator (linear, nearest,...) and the coordinates calculated by the transform (rotation, translation, shrinking, ...) loosely speaking (since I did not write the code).<BR>
<BR>
You need to &quot;resample&quot; for any transformation of the image . (one could argue that a fixed translation of an integer multiple of voxels exaclty is an exception, or rotation by pi/2 if the voxels are cubical, or reflection through a coordinate plane, or some other degenerate cases where a renumbering would do the trick... )<BR>
<BR>
Probably you understand this already but confused by the naming scheme; I think anything that takes one image and produces another is a 'filter' in ITK and the 'resample' is needed to apply any of the general transformations, the 'transform' just performs the calculations to transform a single co-ordinate as I understand it. eg. you can transform a point co-ordinate.<BR>
<BR>
<BR>
<BR>
Also I have come to agree with the ITK developers and the examples, to put the update inside try{}catch{} blocks or you will eventually come to grief ..probably sooner rather than later...<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>