<div dir="ltr">Hey Matt, that&#39;s a handy way to find sample code, thanks very much.<div><br><div style>I modified itkTimeVaryingBSplineVelocityFieldImageRegistrationTest very slightly to be able to run it outside the ITK testing framework (just renaming the function &quot;itkTimeVaryingBSplineVelocityFieldImageRegistrationTest&quot; to &quot;main&quot; was sufficient). I&#39;m having it register two 3D images and it&#39;s currently taking over 14 GB&#39;s of memory! (though thankfully it is continuing to run without anything horrible happening). Is this normal? I am using all the default parameters:</div>

</div><div style>learningRate: 0.5</div><div style>iterations per level: 10, 20, 11</div><div style><br></div><div style>Each image is quite large, 320x320x160 array of short ints. I guess as long as it finishes, I can&#39;t really complain. Still though, it doesn&#39;t seem normal to be using so much memory. Perhaps I&#39;ve done something horribly wrong?</div>

<div style><br></div><div style>Thanks,</div><div style>andrew</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, May 7, 2013 at 7:48 AM, Matt McCormick <span dir="ltr">&lt;<a href="mailto:matt.mccormick@kitware.com" target="_blank">matt.mccormick@kitware.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Andrew (CC&#39;ing the mailing list -- please remember to reply-to-all),<br>
<br>
The tests for the class are also a useful reference.  To see the tests,<br>
<br>
ctest -R TimeVarying -N<br>
<br>
which yields:<br>
<br>
<br>
  Test #478: itkTimeVaryingVelocityFieldTransformTest<br>
  Test #479: itkTimeVaryingVelocityFieldIntegrationImageFilterTest<br>
  Test #480: itkTimeVaryingBSplineVelocityFieldTransformTest<br>
  Test #1782: itkTimeVaryingVelocityFieldImageRegistrationTest<br>
  Test #1783: itkTimeVaryingBSplineVelocityFieldImageRegistrationTest<br>
<br>
The code for the tests can be found in<br>
Modules/Registration/RegistrationMethodsv4/test/<br>
<br>
HTH,<br>
Matt<br>
<div class="HOEnZb"><div class="h5"><br>
On Mon, May 6, 2013 at 7:56 PM, Andrew Ho &lt;<a href="mailto:andrewkennethho@gmail.com">andrewkennethho@gmail.com</a>&gt; wrote:<br>
&gt; Hey Matt,<br>
&gt; Thanks for the pointer, it sounds like this might be just what I need. Is<br>
&gt; there any documentation, examples, or papers for this method (or class of<br>
&gt; methods) beyond the doxygen generated ones?<br>
&gt;<br>
&gt; Also, are there any limitations on the metric and optimizer which can be<br>
&gt; used with this method? Sorry if these are dumb questions, I&#39;m really new to<br>
&gt; ITK and image registration in general.<br>
&gt;<br>
&gt; Thanks,<br>
&gt; andrew<br>
&gt;<br>
&gt;<br>
&gt; On Mon, May 6, 2013 at 10:28 AM, Matt McCormick &lt;<a href="mailto:matt.mccormick@kitware.com">matt.mccormick@kitware.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Andrew,<br>
&gt;&gt;<br>
&gt;&gt; You may find this class useful:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; <a href="http://www.itk.org/Doxygen/html/classitk_1_1TimeVaryingVelocityFieldImageRegistrationMethodv4.html" target="_blank">http://www.itk.org/Doxygen/html/classitk_1_1TimeVaryingVelocityFieldImageRegistrationMethodv4.html</a><br>


&gt;&gt;<br>
&gt;&gt; HTH,<br>
&gt;&gt; Matt<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Apr 26, 2013 at 7:29 PM, Andrew Ho &lt;<a href="mailto:andrewkennethho@gmail.com">andrewkennethho@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; Hi there,<br>
&gt;&gt; &gt; I&#39;m wondering if there is a suitable set of tools in ITK for my purpose:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I have high-resolution 4D CT data of the human upper airway during<br>
&gt;&gt; &gt; swallowing. I&#39;d like segment the upper airway and use it as the moving<br>
&gt;&gt; &gt; boundaries in a physics simulation. The dataset is large, but it&#39;s not<br>
&gt;&gt; &gt; too<br>
&gt;&gt; &gt; much to ask to manually segment it (frame by frame). The problem is that<br>
&gt;&gt; &gt; some interpolation is required in time. For this, it seems like a good<br>
&gt;&gt; &gt; approach would be to register sequential time frames and use the<br>
&gt;&gt; &gt; resulting<br>
&gt;&gt; &gt; deformation field to move a mesh. Then interpolation can be performed on<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; deformation field in order to advance the airway structure in time.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; There are a few approaches that I am considering, some of which I<br>
&gt;&gt; &gt; gleaned<br>
&gt;&gt; &gt; from searching the mailing list:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 1) Perform 3D deformable registration between time frames (using the raw<br>
&gt;&gt; &gt; image data) and acquire deformation fields. Use the deformation field to<br>
&gt;&gt; &gt; move a mesh which is segmented from the first time frame. -- The problem<br>
&gt;&gt; &gt; here is that the registration problem is difficult because of the<br>
&gt;&gt; &gt; rapidly<br>
&gt;&gt; &gt; moving bolus (the fluid being swallowed). There is also poor contrast<br>
&gt;&gt; &gt; between some structures as they close the airway during the sequence.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 2) Perform 3D manual segmentation on two sequential frames. Generate<br>
&gt;&gt; &gt; meshes<br>
&gt;&gt; &gt; from the segmented surfaces and register these two meshes. Use the<br>
&gt;&gt; &gt; resulting<br>
&gt;&gt; &gt; deformation field to move one mesh to the next time frame. -- The<br>
&gt;&gt; &gt; problem<br>
&gt;&gt; &gt; here (not really a problem) is that I don&#39;t know if a mesh to mesh<br>
&gt;&gt; &gt; registration (such as ICP) can be used to generate a deformable field.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 3) Perform manual segmentation of the airway in frame 1 and use it as<br>
&gt;&gt; &gt; input<br>
&gt;&gt; &gt; to a simplex registration method on frame 2 (suggested here, way back in<br>
&gt;&gt; &gt; 2004:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/pipermail/insight-users/2004-November/011080.html" target="_blank">http://www.itk.org/pipermail/insight-users/2004-November/011080.html</a>)<br>
&gt;&gt; &gt; -- The problem here is that I&#39;m not sure if the segmentation will be<br>
&gt;&gt; &gt; able to<br>
&gt;&gt; &gt; handle the low-contrast areas when closure occurs. Another problem<br>
&gt;&gt; &gt; (again,<br>
&gt;&gt; &gt; not really a problem) is that the files seem to have changed and I&#39;m not<br>
&gt;&gt; &gt; sure if the listed examples are still relevant<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Any suggestions and insight (sorry for that) would be much appreciated!<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks,<br>
&gt;&gt; &gt; andrew<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; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</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;<br>
&gt;<br>
</div></div></blockquote></div><br></div>