<br>Hi Luis et al.,<br><br>See comments below (stay tuned for a follow-up after exploring the suggestions).  Thanks for your attention to this interesting problem.<br><br>Best,<br>Darren<br><br><br><div class="gmail_quote">
On Tue, Oct 20, 2009 at 9:50 AM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Darren,<br>
<br>
<br>
This is a very interesting problem.<br>
<br>
As you already verified, there is no straight forward way of concatenating<br>
(or composing) two BSplineDeformableTransforms in ITK.<br>
<br></blockquote><div><br>Is it a function addition or composition?<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
However,<br>
you could easily write a &quot;GroupTransform&quot; that derives from the<br>
itkTransform and that holds an array of SmartPointers to Transforms<br>
<br>
typedef std::vector&lt; typename TransformType::Pointer &gt;   TransformArrayType;<br>
TransformArrayType   m_TransformArray;<br>
<br>
<br>
That you could populate with a method:<br>
<br>
AddTransform( const TransformType * t )<br>
{<br>
this-&gt;m_TransformArray.push_back( t );<br>
}<br>
<br>
<br>
Then implement the TransformPoint() method as<br>
<br>
<br>
TransformPoint( const PointType &amp; p )<br>
{<br>
PointType q = p;<br>
TransformArrayType::const_iterator TransformIterator;<br>
TransformIterator titr = this-&gt;m_TransformArray.begin();<br>
TransformIterator tend = this-&gt;m_TransformArray.end();<br>
while( titr != tend )<br>
  {<br>
  q = titr-&gt;TransformPoint( q );<br>
  ++titr;<br>
  }<br>
return q;<br>
}<br>
<br>
<br>
and finally, use this GroupTransform as the transform<br>
that you connect to the ResampleImage Filter for resampling<br>
all the Microscopy slices to the coordinate system of the first<br>
slice.<br>
<br></blockquote><div><br><br>It would be great if the ResampleImageFilter contained methods like AddTransform or ComposeTransform (they don&#39;t appear in ITK 3.16 doxygen).  A quick search in the 3.16 headers doesn&#39;t pull it up, i.e.:<br>
<br><span style="font-family: courier new,monospace;">[ dweber@weber-mbp ~ ]$ grep -l -r -E -e &#39;AddTransform&#39; /opt/local/include/InsightToolkit</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/IO/itkTransformFileWriter.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Review/itkTransformFileWriterWithFactory.h</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">[ dweber@weber-mbp ~ ]$ grep -l -r -E -e &#39;ComposeTransform&#39; /opt/local/include/InsightToolkit</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">[ dweber@weber-mbp ~ ]$ grep -l -r -E -e &#39;Compose&#39; /opt/local/include/InsightToolkit</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/BasicFilters/itkCompose2DCovariantVectorImageFilter.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/BasicFilters/itkCompose2DVectorImageFilter.h</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/BasicFilters/itkCompose3DCovariantVectorImageFilter.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/BasicFilters/itkCompose3DVectorImageFilter.h</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/BasicFilters/itkComposeRGBImageFilter.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkAffineTransform.h</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkAffineTransform.txx</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkEuler3DTransform.txx</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkMatrixOffsetTransformBase.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkMatrixOffsetTransformBase.txx</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkRigid2DTransform.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkRigid2DTransform.txx</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkRigid3DTransform.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkRigid3DTransform.txx</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkScaleTransform.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkScaleTransform.txx</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkSimilarity2DTransform.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkTranslationTransform.h</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkTranslationTransform.txx</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Common/itkVersor.h</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/Review/itkComposeRGBAImageFilter.h</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/SpatialObject/itkSpatialObject.txx</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">/opt/local/include/InsightToolkit/SpatialObject/itkSpatialObjectTreeNode.h</span><br style="font-family: courier new,monospace;">
<br><br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
....<br>
<br>
As you progress with your registration, down the slices stack,<br>
you add the new pair-wise resulting transform to the Group<br>
Transform, and have the &quot;equivalent&quot; to the composed transform.<br>
<br></blockquote><div><br>That sounds like an efficient way to do it.  The pair-wise accumulation would be faster than throwing an entire series of transforms into an addition or composition method every time through the loop over the image series.<br>
<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Drinking the proper brand of Coffee, this probably can be coded<br>
in one afternoon.  We will be happy to assist you if you find any<br>
problem.<br>
<br></blockquote><div><br>Ah, the search for the elixir of life ;-)<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
And... of course, you are strongly encouraged to submit this<br>
transform to the Insight Journal:<br>
<br>
<br>
mmmm.<br>
and of course,...<br>
after checking the IJ, it happens that<br>
<br>
Stephan Klein and Marius Staring<br>
already contributed a similar class to the Insight Journal:<br>
<a href="http://www.insight-journal.org/browse/publication/91" target="_blank">http://www.insight-journal.org/browse/publication/91</a><br>
&quot;Combining Transforms in ITK&quot;<br>
<a href="http://hdl.handle.net/1926/197" target="_blank">http://hdl.handle.net/1926/197</a><br>
<br>
In particular, you may want to look at their class:<br>
<br>
            itkBSplineCombinationTransform.<br>
<br>
<br>
I just added it to the list of classes to move into ITK 3.18.<br>
<a href="http://www.itk.org/Wiki/ITK_Release_Schedule#Insight_Journal_papers_to_Move_for_ITK_3.18" target="_blank">http://www.itk.org/Wiki/ITK_Release_Schedule#Insight_Journal_papers_to_Move_for_ITK_3.18</a><br>
<br>
<br></blockquote><div><br>Looks like it handles two transforms.  Perhaps it needs a modification to handle a vector of transforms, as indicated above.<br><br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

----------------------------<br>
<br>
Note however, that after hundreds of compositions,...<br>
things may start cumulating errors...<br>
<br></blockquote><div><br>Absolutely!  Aside from numerical computing issues, there are a few registration &quot;failures&quot; in the series (i.e., the registration optimization has poor quality input data at some points in the series).  Without any QA, even one &quot;failure&quot; will introduce a &#39;rift&#39; in the volume reconstruction of the series, which would propagate through the rest of a series.   The image quality varies considerably in the series and there must be some QA work to get this working.  It is a good case for a GUI to step through each of the image registrations before &#39;accepting&#39; the result into a volume composition.  The idea of using pair-wise registrations and then using composition of the transforms (without pair-wise resampling) is to (a) provide automation for calculating all the pair-wise registrations required, and (b) avoiding cumulative interpolation through the series of transforms from img002 to imgN.  This assumes that every image in the series will be a part of a composed volume.  If any of the images are discarded, a new pair-wise registration is required (e.g., say img005 is discarded, then a pair-wise registration is required for img006 to img004, which replaces the previous pair-wise registration from img006 to img005; all the pair-wise registrations from img006 to imgN remain useful).<br>
<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
When you say that you have &quot;thousands&quot; of slices....<br>
did you mean that they are really about one thousands slices<br>
stacked one on top of each other ?<br></blockquote><div><br><br>About 1800 slices, about 0.5 microns thick (z = 0.5; in-plane resolution is about 0.05 microns; order of magnitude anisotropy!).<br><br><br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>
or are you counting some level of side-by-side mosaicing<br>
as well ?<br>
<br>
<br>
<br>
     Please let us know,<br>
<br>
<br>
             Thanks<br>
<br>
<br>
                   Luis<br>
<br>
<br>
<br>
---------------------------------------------------------------------------------------<br>
On Fri, Oct 16, 2009 at 8:43 PM, Darren Weber<br>
<div class="im">&lt;<a href="mailto:darren.weber.lists@gmail.com">darren.weber.lists@gmail.com</a>&gt; wrote:<br>
&gt;<br>
</div><div><div></div><div class="h5">&gt; I don&#39;t see a Compose method for the bspline transform class, only a<br>
&gt; SetBulkTransform.<br>
&gt;<br>
&gt;<br>
&gt; Some code is able to read a series of transforms and report the content of<br>
&gt; the transforms, i.e.:<br>
&gt;<br>
&gt;<br>
&gt; *****************************************<br>
&gt; section0181_w1<br>
&gt;<br>
&gt;<br>
&gt; section0181_w1 :<br>
&gt; /Volumes/data/plastic_imgproc/n2_04d/w1/tif/section0179_w1.tif<br>
&gt; section0181_w1 :<br>
&gt; /Volumes/data/plastic_imgproc/n2_04d/w1/bw_align/section0179to0178_w1_bspline.xfm<br>
&gt; Number of transforms = 1<br>
&gt; bspline transform parameters:<br>
&gt; [-0.00101862, -0.000136816, 0.0428942, -0.0173411, -0.0012381, 0,<br>
&gt; -0.0152427, -0.0829083, 0.562787, 0.0513636, 0.00563827, 0, -0.0978897,<br>
&gt; 0.17254, -0.187553, 0.132699, 0.118559, 0, -0.0423971, 0.0390156, -0.254502,<br>
&gt; -0.211898, 0.0186821, 0, 0.000965728, 0.0209634, 0.0971252, 0.0268716,<br>
&gt; -0.00159635, 0, 0, 0, 0, 0, 0, 0, -0.000822122, -0.0595562, -0.106872,<br>
&gt; 0.0393177, 0.00243043, 0, 0.0182722, -0.183968, 0.136984, 1.16236, 0.064037,<br>
&gt; 0, 0.0551541, 0.37945, -0.741088, 0.394497, 0.0657694, 0, -0.0302881,<br>
&gt; -0.371698, 0.340337, 0.463057, -0.00263912, 0, -0.00393346, -0.00450752,<br>
&gt; 0.209972, 0.0928676, -0.000414552, 0, 0, 0, 0, 0, 0, 0]<br>
&gt; bspline transform fixed parameters:<br>
&gt; [6, 6, -5.7771, -6.41285, 5.74946, 6.38521, 1, 0, 0, 1]<br>
&gt; bspline bulk transform name:<br>
&gt; IdentityTransform<br>
&gt; bspline bulk transform parameters:<br>
&gt; [-59.7311]<br>
&gt; bspline bulk transform fixed parameters:<br>
&gt; [-2.00001]<br>
&gt;<br>
&gt; section0181_w1 :<br>
&gt; /Volumes/data/plastic_imgproc/n2_04d/w1/tif/section0180_w1.tif<br>
&gt; section0181_w1 :<br>
&gt; /Volumes/data/plastic_imgproc/n2_04d/w1/bw_align/section0180to0179_w1_bspline.xfm<br>
&gt; Number of transforms = 2<br>
&gt; bspline transform parameters:<br>
&gt; [-0.00167702, 0.0400107, 0.163826, 0.0494486, 0.000260499, 0, -0.112263,<br>
&gt; -0.962398, 0.382706, 0.0468105, 0.000545406, 0, -0.013627, 0.032147,<br>
&gt; 0.303242, -0.248178, 0.0577727, 0, 0.0310104, 0.0608204, -0.450371,<br>
&gt; 0.0761785, 0.0396465, 0, -0.00145428, -0.0748339, -0.142132, -0.0117953,<br>
&gt; 0.00109538, 0, 0, 0, 0, 0, 0, 0, -0.000739103, 0.0115463, -0.233451,<br>
&gt; -0.151604, -0.00148716, 0, -0.124814, -0.51848, -0.0427284, -1.13778,<br>
&gt; -0.0332992, 0, -0.22645, -1.40995, 1.29008, -0.406795, -0.0169783, 0,<br>
&gt; -0.014309, 0.492513, -0.433653, -0.484105, 0.0174839, 0, 0.00246247,<br>
&gt; 0.100723, 0.0245804, -0.038708, 0.000375209, 0, 0, 0, 0, 0, 0, 0]<br>
&gt; bspline transform fixed parameters:<br>
&gt; [6, 6, -5.7771, -6.32993, 5.74946, 6.30229, 1, 0, 0, 1]<br>
&gt; bspline bulk transform name:<br>
&gt; IdentityTransform<br>
&gt; bspline bulk transform parameters:<br>
&gt; [-2.00001]<br>
&gt; bspline bulk transform fixed parameters:<br>
&gt; [-59.7206]<br>
&gt;<br>
&gt; section0181_w1 :<br>
&gt; /Volumes/data/plastic_imgproc/n2_04d/w1/tif/section0181_w1.tif<br>
&gt; section0181_w1 :<br>
&gt; /Volumes/data/plastic_imgproc/n2_04d/w1/bw_align/section0181to0180_w1_bspline.xfm<br>
&gt; Number of transforms = 3<br>
&gt; bspline transform parameters:<br>
&gt; [0.00301806, -0.00652163, -0.144203, 0.0245637, 0.00424984, 0, -0.00674302,<br>
&gt; 0.435562, -0.00178908, 0.420808, -0.021262, 0, -0.0294096, -0.355242,<br>
&gt; -0.005834, -0.0189256, -0.160569, 0, 0.0709158, 0.736917, -0.210242,<br>
&gt; -0.212069, -0.0294319, 0, 0.00253275, 0.0315866, -0.071481, -0.0291887,<br>
&gt; 4.053e-05, 0, 0, 0, 0, 0, 0, 0, 0.00207632, -0.0583709, 0.109967, 0.12651,<br>
&gt; -0.00259079, 0, 0.0616846, 0.0246376, 0.113406, 0.439344, -0.066714, 0,<br>
&gt; 0.032752, 0.475236, -0.645249, 0.255606, -0.0351145, 0, -0.0414853,<br>
&gt; -0.154973, 0.331845, 0.634161, 0.0229426, 0, -0.00318072, -0.070252,<br>
&gt; -0.195498, -0.0416054, 0.000584519, 0, 0, 0, 0, 0, 0, 0]<br>
&gt; bspline transform fixed parameters:<br>
&gt; [6, 6, -5.88766, -6.46814, 5.86002, 6.4405, 1, 0, 0, 1]<br>
&gt; bspline bulk transform name:<br>
&gt; IdentityTransform<br>
&gt; bspline bulk transform parameters:<br>
&gt; [-2.00001]<br>
&gt; bspline bulk transform fixed parameters:<br>
&gt; [-59.7214]<br>
&gt;<br>
&gt;<br>
&gt; This is a short report for a series of images from number 178--181 (the<br>
&gt; image files are named &quot;section%04d_w1.tif&quot;).  The idea is to now concatenate<br>
&gt; all the bspline transforms so that image 181 is transformed all the way to<br>
&gt; 178, via 180 and 179.  Is the way to do that something like this:<br>
&gt;<br>
&gt;<br>
&gt; // no bulk transform for bsplineTransform179to178<br>
&gt; bsplineTransform180to179.SetBulkTransform( bsplineTransform179to178 );<br>
&gt; bsplineTransform181to180.SetBulkTransform( bsplineTransform180to179 );<br>
&gt;<br>
&gt;<br>
&gt; Will that effectively concatenate the entire series of transforms to get<br>
&gt; image 180 all the way into the space of image 178?<br>
&gt;<br>
&gt; TIA,<br>
&gt; Darren<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Thu, Oct 15, 2009 at 8:47 PM, Richard Beare &lt;<a href="mailto:richard.beare@gmail.com">richard.beare@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; I think that most of the transform types have a Compose method so you<br>
&gt;&gt; can compute the transform between your first slice and any other.<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Oct 16, 2009 at 2:30 PM, Xiaofeng Z &lt;<a href="mailto:xf10036@hotmail.com">xf10036@hotmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; There must be a way to combine the transformations together before<br>
&gt;&gt; &gt; applying<br>
&gt;&gt; &gt; the combined transformation to the image.  Otherwise, after hundreds of<br>
&gt;&gt; &gt; interpolation, imageN will probably not have much information left.<br>
&gt;&gt; &gt; From: Darren Weber<br>
&gt;&gt; &gt; Sent: Thursday, October 15, 2009 5:20 PM<br>
&gt;&gt; &gt; To: ITK Users<br>
&gt;&gt; &gt; Subject: [Insight-users] Constructing 3D stack from 2D image series<br>
&gt;&gt; &gt; (withregistration)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; We have a series of several thousand 2D microscope images:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; img0001 ... imgN<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; A simple ITK program uses itkImageSeriesReader to stack the sequential<br>
&gt;&gt; &gt; images into a 3D volume for output to a .vtk file.  Without any<br>
&gt;&gt; &gt; coregistration of the image series, the result is a mess (as expected).<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Another ITK program runs registration algorithm(s) on consecutive pairs<br>
&gt;&gt; &gt; of<br>
&gt;&gt; &gt; images in the 2D image series (each pair of images is registered<br>
&gt;&gt; &gt; independently of any other images in the series).  It outputs a<br>
&gt;&gt; &gt; transform<br>
&gt;&gt; &gt; file for each image registration, using file names something like:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; img0002to0001.xfm<br>
&gt;&gt; &gt; img0003to0002.xfm<br>
&gt;&gt; &gt; etc.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; What is an efficient way to combine and apply these transforms using an<br>
&gt;&gt; &gt; ITK<br>
&gt;&gt; &gt; pipeline to &#39;concatenate&#39; the image series into a 3D stack?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; My conception of how this might work, in outline, is:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; a)  begin with img0001<br>
&gt;&gt; &gt; apply transform: none<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; b) add img0002 to the stack<br>
&gt;&gt; &gt; apply transform: img0002to0001.xfm<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; c) add img0003 to the stack<br>
&gt;&gt; &gt; apply transform: img0002to0001.xfm<br>
&gt;&gt; &gt; apply transform: img0003to0002.xfm<br>
&gt;&gt; &gt; (How to concatenate transforms without resampling image data?)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; d) add img0004 to the stack<br>
&gt;&gt; &gt; apply transform: img0002to0001.xfm<br>
&gt;&gt; &gt; apply transform: img0003to0002.xfm<br>
&gt;&gt; &gt; apply transform: img0004to0003.xfm<br>
&gt;&gt; &gt; (How to concatenate transforms without resampling image data?)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; etc.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; In this conception of the problem, the pair-wise registration transforms<br>
&gt;&gt; &gt; are<br>
&gt;&gt; &gt; &#39;concatenated&#39; to propagate the registration through the entire series.<br>
&gt;&gt; &gt; What is the most efficient way to do that in ITK?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Is it possible (or reasonable) to associate a transform object (or file)<br>
&gt;&gt; &gt; with each &#39;element&#39; of an itkImageSeriesReader?  If not, is there<br>
&gt;&gt; &gt; another<br>
&gt;&gt; &gt; convention for creating an ITK filter pipeline or registration pipeline?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; TIA and take care,<br>
&gt;&gt; &gt; Darren<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; ________________________________<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _____________________________________<br>
&gt;&gt; &gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Visit other Kitware open-source projects at<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _____________________________________<br>
&gt;&gt; &gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Visit other Kitware open-source projects at<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; _____________________________________<br>
&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;<br>
&gt; Visit other Kitware open-source projects at<br>
&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;<br>
&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;<br>
&gt; Follow this link to subscribe/unsubscribe:<br>
&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>