<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16525" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hi Luis,</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; thanks for those clarifications. 
I forgot some precisions :)</FONT></DIV>
<DIV>
<DIV><FONT face=Arial size=2>Firstly, I didn't paste the setcenter part of my 
code, that was above the pasted code.</FONT></DIV></DIV>
<DIV><FONT face=Arial size=2>As a remember, I have two stacks resulting from a 
"top-down scan" and a "bottom-up" scan, both from the outside of the sample 
until a little bit further than the sample middle.</FONT></DIV>
<DIV><FONT face=Arial size=2>Each stack contains an overlapping volume, 
identified by :</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; - 
firstFixedOverlappingBlockImage to lastFixedImage in "top stack"</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; - 
firstMovingOverlappingBlockImage to lastMovingImage in "bottom 
stack"</FONT></DIV>
<DIV><FONT face=Arial size=2>Thus I can easily geometrically calculate the 
center of the overlapping volume in the fixed stack and the same for the moving 
stack.</FONT></DIV>
<DIV><FONT face=Arial size=2>Translation is then set to 
(centerMovingImage-centerFixedImage) and rotation center set to the 
fixedOverlappingVolumeCenter.</FONT></DIV>
<DIV><FONT face=Arial size=2>Moreover, for translation fine tuning reasons, I 
allow an offsetX,Y,Z to be added when calculating the center of the moving image 
overlapping block. Here is the code..</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial 
size=2>********************************************************************************************</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;// 
----------------------------------------<BR>&nbsp;// OVERLAPPING BLOCKS CENTER 
COMPUTATION<BR>&nbsp;// ----------------------------------------<BR>&nbsp;// 
FIXED IMAGE<BR>&nbsp;const SourceImageType::SpacingType fixedSpacing = 
pile3Drecto-&gt;GetSpacing();</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;double 
fixedImageOverlappingBlockCoordinates[3];<BR>&nbsp;fixedImageOverlappingBlockCoordinates[0] 
= fixedImageSize[0] / 2.0;<BR>&nbsp;fixedImageOverlappingBlockCoordinates[1] = 
fixedImageSize[1] / 2.0;<BR>&nbsp;fixedImageOverlappingBlockCoordinates[2] = 
(lastFixedImage+firstFixedOverlappingBlockImage)/ 2.0;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;TransformType::InputPointType 
centerFixedImage;<BR>&nbsp;centerFixedImage[0] = fixedOrigin[0]+ fixedSpacing[0] 
* fixedImageOverlappingBlockCoordinates[0];<BR>&nbsp;centerFixedImage[1] = 
fixedOrigin[1]+ fixedSpacing[1] * 
fixedImageOverlappingBlockCoordinates[1];<BR>&nbsp;centerFixedImage[2] = 
fixedOrigin[2]+ fixedSpacing[2] * 
fixedImageOverlappingBlockCoordinates[2];</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;// MOVING IMAGE<BR>&nbsp;const 
SourceImageType::SpacingType movingSpacing = 
pile3Dverso-&gt;GetSpacing();</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;double 
movingImageOverlappingBlockCoordinates[3];<BR>&nbsp;movingImageOverlappingBlockCoordinates[0] 
= (movingImageSize[0] / 
2.0)+offsetX;<BR>&nbsp;movingImageOverlappingBlockCoordinates[1] = 
(movingImageSize[1] / 
2.0)+offsetY;<BR>&nbsp;movingImageOverlappingBlockCoordinates[2] = 
((lastMovingImage+firstMovingOverlappingBlockImage)/ 2.0)+offsetZ;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;TransformType::InputPointType 
centerMovingImage;<BR>&nbsp;centerMovingImage[0] = movingOrigin[0]+ 
movingSpacing[0] * 
movingImageOverlappingBlockCoordinates[0];<BR>&nbsp;centerMovingImage[1] = 
movingOrigin[1]+ movingSpacing[1] * 
movingImageOverlappingBlockCoordinates[1];<BR>&nbsp;centerMovingImage[2] = 
movingOrigin[2]+ movingSpacing[2] * 
movingImageOverlappingBlockCoordinates[2];<BR>&nbsp;cout &lt;&lt; "Centre de 
rotation MOVING (coordonnees): [" &lt;&lt; 
movingImageOverlappingBlockCoordinates[0] &lt;&lt; ";" 
&lt;&lt;movingImageOverlappingBlockCoordinates[1] &lt;&lt; ";" &lt;&lt; 
movingImageOverlappingBlockCoordinates[2] &lt;&lt; "]" &lt;&lt; 
endl;<BR>&nbsp;cout &lt;&lt; "Centre de rotation MOVING (um): [" &lt;&lt; 
centerMovingImage[0] &lt;&lt; ";" &lt;&lt; centerMovingImage[1] &lt;&lt; ";" 
&lt;&lt; centerMovingImage[2] &lt;&lt; "]" &lt;&lt; endl;<BR>&nbsp;cout &lt;&lt; 
"OFFSET (coordonnees): [" &lt;&lt; offsetX &lt;&lt; ";" &lt;&lt; offsetY 
&lt;&lt; ";" &lt;&lt; offsetZ &lt;&lt; "]" &lt;&lt; endl;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;// 
-------------------------------------------------------------------------<BR>&nbsp;// 
SET ROTATION CENTER SET AND&nbsp;TRANSLATION VECTOR<BR>&nbsp;// 
-------------------------------------------------------------------------<BR>&nbsp;// 
set center of fixed image as the rotation center<BR>&nbsp;<FONT 
color=#ff0000>transform-&gt;SetCenter( centerFixedImage );</FONT><BR>&nbsp;// 
translation set as the vector relating the center of the moving image to the 
center of the fixed image<BR>&nbsp;<FONT 
color=#ff0000>transform-&gt;SetTranslation( 
centerMovingImage-centerFixedImage);</FONT></FONT></DIV>
<DIV><FONT face=Arial 
size=2>********************************************************************************************</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>For the quaternion computation, in fact my real 
code is a little bit different than the bad test code I sent.</FONT></DIV>
<DIV><FONT face=Arial size=2>As you said, I constructed the quaternion for each 
rotation, multiplied and set the rotation&nbsp;like this:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial 
size=2>*************************************************************</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;typedef TransformType::VersorType&nbsp; 
VersorType;<BR>&nbsp;VersorType&nbsp;&nbsp;&nbsp;&nbsp; 
rotation;<BR></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;// rotation d'un angle angleZ selon Oz, dans 
les deux cas de flip<BR>&nbsp;double RotZ = angleZ * vnl_math::pi / 
180.0;<BR>&nbsp;vnl_quaternion&lt;double&gt; Rz(0, 0, 
RotZ);<BR>&nbsp;vnl_quaternion&lt;double&gt; RFlip, RR;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;if (flipHorizVert) RFlip = 
vnl_quaternion&lt;double&gt;(0, vnl_math::pi, 0); // rotation de 180° selon 
Oy<BR>&nbsp;else RFlip = vnl_quaternion&lt;double&gt;(vnl_math::pi, 0, 0); // 
rotation de 180° selon Ox</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;RR = RFlip * 
Rz;<BR>&nbsp;rotation.Set(RR);</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;transform-&gt;SetRotation( rotation 
);<BR>&nbsp;registration-&gt;SetInitialTransformParameters( 
transform-&gt;GetParameters() );</FONT></DIV>
<DIV><FONT face=Arial 
size=2>*************************************************************</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>All this code gave a quite nice initialization 
result:</FONT></DIV>
<DIV><FONT face=Arial size=2>- 3D view: <A 
href="http://itk.fete.ch/perso/3DViewInit.jpg">http://itk.fete.ch/perso/3DViewInit.jpg</A></FONT></DIV>
<DIV><FONT face=Arial size=2>- Slice view: <A 
href="http://itk.fete.ch/perso/SliceInit001.jpg">http://itk.fete.ch/perso/SliceInit001.jpg</A>&nbsp;and 
<A 
href="http://itk.fete.ch/perso/SliceInit002.jpg">http://itk.fete.ch/perso/SliceInit002.jpg</A></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>But as you can see on <A 
href="http://itk.fete.ch/perso/SliceInit003.jpg">http://itk.fete.ch/perso/SliceInit003.jpg</A>, 
the first (red) image of the moving stack via the initialized transform is half 
cut.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>I'll change my code for your versor code and see if 
it happend again.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Cheers, nic</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>----- Original Message ----- </FONT>
<DIV><FONT face=Arial size=2>From: "Luis Ibanez" &lt;</FONT><A 
href="mailto:luis.ibanez@kitware.com"><FONT face=Arial 
size=2>luis.ibanez@kitware.com</FONT></A><FONT face=Arial 
size=2>&gt;</FONT></DIV>
<DIV><FONT face=Arial size=2>To: "Nic" &lt;</FONT><A 
href="mailto:itk@fete.ch"><FONT face=Arial size=2>itk@fete.ch</FONT></A><FONT 
face=Arial size=2>&gt;</FONT></DIV>
<DIV><FONT face=Arial size=2>Cc: "Insight Users" &lt;</FONT><A 
href="mailto:insight-users@itk.org"><FONT face=Arial 
size=2>insight-users@itk.org</FONT></A><FONT face=Arial size=2>&gt;</FONT></DIV>
<DIV><FONT face=Arial size=2>Sent: Thursday, October 11, 2007 5:44 
PM</FONT></DIV>
<DIV><FONT face=Arial size=2>Subject: Re: [Insight-users] Volume not perfectly 
rotated</FONT></DIV></DIV>
<DIV><FONT face=Arial><BR><FONT size=2></FONT></FONT></DIV><FONT face=Arial 
size=2>&gt; <BR>&gt; Hi Nic,<BR>&gt; <BR>&gt; <BR>&gt; It seems that you have 
not initialized the Center of Rotation of the<BR>&gt; 
VersorRigid3DTransform.<BR>&gt; <BR>&gt; By default that center is at (0,0,0), 
so it is likely that your image<BR>&gt; if being flipped around the corner of 
the image, not around the center<BR>&gt; of the image.<BR>&gt; <BR>&gt; You may 
want to compute the center of the image in physical coordinates<BR>&gt; and use 
that as the center of rotation for the VersorRigid3DTransform.<BR>&gt; <BR>&gt; 
You will find examples on how to compute the center of the image in<BR>&gt; the 
ITK Software Guide.<BR>&gt; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</FONT><A href="http://www.itk.org/ItkSoftwareGuide.pdf"><FONT face=Arial 
size=2>http://www.itk.org/ItkSoftwareGuide.pdf</FONT></A><BR><FONT face=Arial 
size=2>&gt; <BR>&gt; <BR>&gt; It comes down to<BR>&gt; 
<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; for( i=0; i&lt;3; 
i++)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
{<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Center[i] = Origin[i] + Size[i] * 
Spacing[i] / 2.0<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt; <BR>&gt; 
-----<BR>&gt; <BR>&gt; <BR>&gt; Also, Please aware that *you are not using the 
Quaternion correctly*.<BR>&gt; <BR>&gt; <BR>&gt;&nbsp;&nbsp; //: Construct 
quaternion from Euler Angles,<BR>&gt;&nbsp;&nbsp; // That is a rotation about 
the X axis, followed by Y, followed by<BR>&gt;&nbsp;&nbsp; // the Z axis, using 
a fixed reference frame.<BR>&gt;&nbsp;&nbsp; vnl_quaternion(T theta_X, T 
theta_Y, T theta_Z);<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; That is not the order of 
the rotational sequence that you are assuming.<BR>&gt; <BR>&gt; <BR>&gt; 
<BR>&gt; It is too bad that so many people have grown used to Euler 
angles.<BR>&gt; They are one of the *worst things* that have made their way 
in<BR>&gt; computer graphics. They are clumsy and provide a very poor<BR>&gt; 
representation of the SO(3) rotational space<BR>&gt; 
<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><A 
href="http://en.wikipedia.org/wiki/SO%283%29"><FONT face=Arial 
size=2>http://en.wikipedia.org/wiki/SO%283%29</FONT></A><BR><FONT face=Arial 
size=2>&gt; <BR>&gt; Euler angles have impoverished the understanding of 
generations of<BR>&gt; engineers on the nature of rotational space and crippled 
them to<BR>&gt; think in Cartesian schems instead of embracing the natural 
properties<BR>&gt; of the rotational space. That results in uncountable pieces 
of software<BR>&gt; that require "if" conditions when computing rotational 
components.<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; ---------<BR>&gt; <BR>&gt; The 
correct way of composing rotations in space when using<BR>&gt; Quaternions is to 
define a quaternion for each one of the<BR>&gt; intermediate rotations and then 
use the Quaternion composition<BR>&gt; method:<BR>&gt; 
<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; vnl_quaternion::operator*()&nbsp;&nbsp; in 
VNL<BR>&gt; <BR>&gt; or<BR>&gt; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; 
itkVersor::operator*()&nbsp;&nbsp; in ITK<BR>&gt; <BR>&gt; <BR>&gt; In your 
case:<BR>&gt; <BR>&gt;&nbsp;&gt; What I do is simply initialize the 
versorRigid3dTransform with a 180°<BR>&gt;&nbsp;&gt; rotation around y-axis and 
-94.55 rotation around z-axis.<BR>&gt; <BR>&gt; <BR>&gt; You should do:<BR>&gt; 
<BR>&gt; typedef itk::Versor&lt;double&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
VersorType;<BR>&gt; typedef VersorType::VectorType&nbsp;&nbsp; AxisType;<BR>&gt; 
typedef VersorType::ValueType&nbsp;&nbsp;&nbsp; ValueType;<BR>&gt; <BR>&gt; 
AxisType axis1;&nbsp;&nbsp; // Rotation Axis = Y<BR>&gt; axis1[0] = 0.0;<BR>&gt; 
axis1[0] = 1.0;<BR>&gt; axis1[0] = 0.0;<BR>&gt; <BR>&gt; ValueType angle1 = 
3.141516...<BR>&gt; <BR>&gt; VersorType versor1;<BR>&gt; versor1.Set( axis1, 
angle1 ); // 180 degrees around Y<BR>&gt; <BR>&gt; <BR>&gt; AxisType 
axis2;&nbsp;&nbsp; // Rotation Axis = Z<BR>&gt; axis2[0] = 0.0;<BR>&gt; axis2[0] 
= 0.0;<BR>&gt; axis2[0] = 1.0;<BR>&gt; <BR>&gt; ValueType angle2 = 3.141516 * ( 
-94.55 ) / 180.0;<BR>&gt; <BR>&gt; VersorType versor2;<BR>&gt; versor2.Set( 
axis2, angle2 ); // -94.55 degrees around Z<BR>&gt; <BR>&gt; 
<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VersorType versor3 = versor2 * 
versor1;<BR>&gt; <BR>&gt; <BR>&gt; The last variable "versor3" will contain the 
correct rotation<BR>&gt; expressed in terms of a unit quaternion.<BR>&gt; 
<BR>&gt; <BR>&gt; Note that most of the time, when people use 
Quaternions,<BR>&gt; what they actually want to use are Versors.<BR>&gt; 
<BR>&gt; Quaternions can represent rotation *and scaling* in space,<BR>&gt; 
while Versors are limited to rotations. Versors are equivalent<BR>&gt; to 
Unit-Quaternions.<BR>&gt; <BR>&gt; <BR>&gt; You may want to read more about 
Quaternions and their properties:<BR>&gt; </FONT><A 
href="http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation"><FONT 
face=Arial 
size=2>http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation</FONT></A><BR><FONT 
face=Arial size=2>&gt; <BR>&gt; and the ITK Quaternion Tutorials:<BR>&gt; 
<BR>&gt; </FONT><A 
href="http://www.itk.org/CourseWare/Training/QuaternionsI.pdf"><FONT face=Arial 
size=2>http://www.itk.org/CourseWare/Training/QuaternionsI.pdf</FONT></A><BR><FONT 
face=Arial size=2>&gt; </FONT><A 
href="http://www.itk.org/CourseWare/Training/QuaternionsII.pdf"><FONT face=Arial 
size=2>http://www.itk.org/CourseWare/Training/QuaternionsII.pdf</FONT></A><BR><FONT 
face=Arial size=2>&gt; <BR>&gt; <BR>&gt;&nbsp;&nbsp;&nbsp; Regards,<BR>&gt; 
<BR>&gt; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Luis<BR>&gt; <BR>&gt; 
<BR>&gt; <BR>&gt; ----------------<BR>&gt; Nic wrote:<BR>&gt;&gt; Hi 
all,<BR>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; I have a strange behaviour I would like 
to correct in my initialisation.<BR>&gt;&gt; I used quaternion for rotation 
initialisation like this, as previously<BR>&gt;&gt; adviced :<BR>&gt;&gt; 
<BR>&gt;&gt; *******************************************************<BR>&gt;&gt; 
double RotX = angleX * vnl_math::pi / 180.0;<BR>&gt;&gt; double RotY = angleY * 
vnl_math::pi / 180.0;<BR>&gt;&gt; double RotZ = angleZ * vnl_math::pi / 
180.0;<BR>&gt;&gt; vnl_quaternion&lt;double&gt; RR(RotX,RotY,RotZ);<BR>&gt;&gt; 
rotation.Set(RR);<BR>&gt;&gt; transform-&gt;SetRotation( rotation );<BR>&gt;&gt; 
<BR>&gt;&gt; [...]<BR>&gt;&gt; // Checking<BR>&gt;&gt; VersorType 
rotationInitiale = transform-&gt;GetVersor();<BR>&gt;&gt; 
vnl_vector_fixed&lt;double,3&gt; anglesEuleriensInitiaux = <BR>&gt;&gt; 
(rotationInitiale.GetVnlQuaternion()).rotation_euler_angles();<BR>&gt;&gt; cout 
&lt;&lt; "Angles d'Euler (initiaux): " &lt;&lt; <BR>&gt;&gt; 
(anglesEuleriensInitiaux*180.0/vnl_math::pi) &lt;&lt; endl;<BR>&gt;&gt; 
<BR>&gt;&gt; 
********************************************************<BR>&gt;&gt; 
<BR>&gt;&gt; What I doesn't understand actually is why by flipping around X or Y 
axis <BR>&gt;&gt; by 180°, I get an "half image" at the beginning of the 
stack<BR>&gt;&gt; Is this behavious linked to the Quaternions ? Is there a 
special case <BR>&gt;&gt; for a pi angle ? Is there a way to avoid this 
behaviour ?<BR>&gt;&gt;&nbsp; <BR>&gt;&gt; Images:<BR>&gt;&gt; </FONT><A 
href="http://itk.fete.ch/perso/Rot_0_0_0.jpg"><FONT face=Arial 
size=2>http://itk.fete.ch/perso/Rot_0_0_0.jpg</FONT></A><BR><FONT face=Arial 
size=2>&gt;&gt; </FONT><A href="http://itk.fete.ch/perso/Rot_0_180_0.jpg"><FONT 
face=Arial size=2>http://itk.fete.ch/perso/Rot_0_180_0.jpg</FONT></A><BR><FONT 
face=Arial size=2>&gt;&gt; </FONT><A 
href="http://itk.fete.ch/perso/Rot_180_0_0.jpg"><FONT face=Arial 
size=2>http://itk.fete.ch/perso/Rot_180_0_0.jpg</FONT></A><BR><FONT face=Arial 
size=2>&gt;&gt;&nbsp; <BR>&gt;&gt; <BR>&gt;&gt; <BR>&gt;&gt; 
------------------------------------------------------------------------<BR>&gt;&gt; 
<BR>&gt;&gt; _______________________________________________<BR>&gt;&gt; 
Insight-users mailing list<BR>&gt;&gt; </FONT><A 
href="mailto:Insight-users@itk.org"><FONT face=Arial 
size=2>Insight-users@itk.org</FONT></A><BR><FONT face=Arial size=2>&gt;&gt; 
</FONT><A href="http://www.itk.org/mailman/listinfo/insight-users"><FONT 
face=Arial 
size=2>http://www.itk.org/mailman/listinfo/insight-users</FONT></A><BR><FONT 
face=Arial size=2>&gt;</FONT> </BODY></HTML>