Hi Dan,<br>That&#39;s very helpful, especially the paper link.. Thank you!<br>-Isaiah<br><br><div class="gmail_quote">On Fri, Jul 1, 2011 at 2:42 AM, Dan Mueller <span dir="ltr">&lt;<a href="mailto:dan.muel@gmail.com">dan.muel@gmail.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 Isaiah,<br>
<br>
I have used elastix for histology stack registration:<br>
    <a href="http://elastix.isi.uu.nl/" target="_blank">http://elastix.isi.uu.nl/</a><br>
It does not support this &quot;out-of-the-box&quot;, but it has all the required<br>
components which you can assemble with as simple control program<br>
calling the elastix executable.<br>
<br>
In theory, ITK also has all required components, but you must have a<br>
good knowledge of C++ (or one of the wrapped languages e.g. python).<br>
<br>
The general approach I recommend is as follows:<br>
<br>
(1) downsample all images<br>
(I use a similar size to you, namely 2K x 2K images)<br>
<br>
(2) choose a fixed image<br>
(I would suggest either the first slice or somewhere in the middle of the stack)<br>
<br>
(3) for each image next to the previously aligned slice<br>
<br>
    (a) set the initial transform to the transform of the previously<br>
aligned slice<br>
         if the previously aligned slice is the fixed image, use the<br>
identity transform<br>
<br>
    (b) execute the registration<br>
<br>
    (c) apply the resultant transform to this slice,<br>
         remember the transform when aligning the next slice,<br>
         write the transform to disk<br>
<br>
    (d) repeat until no more slices<br>
<br>
(at this point you have a transform per image)<br>
(4) apply the corresponding transform to each high-resolution image<br>
(you will need to employ either streaming (not sure if this is works),<br>
or use a x64 machine with lots of RAM)<br>
<br>
I should point out that I have never done step 4, as I always apply<br>
the transform on-the-fly when viewing, see here:<br>
     <a href="http://dx.doi.org/10.1016/j.compmedimag.2011.06.006" target="_blank">http://dx.doi.org/10.1016/j.compmedimag.2011.06.006</a><br>
<br>
For step 3b I used an elastix parameters file similar to below:<br>
(FixedInternalImagePixelType &quot;float&quot;)and Paraview also ship<br>
(MovingInternalImagePixelType &quot;float&quot;)<br>
(FixedImageDimension 2)<br>
(MovingImageDimension 2)<br>
(UseDirectionCosines &quot;false&quot;)<br>
(HowToCombineTransforms &quot;Compose&quot;)<br>
(DefaultPixelValue 0.0)<br>
(WriteResultImage &quot;true&quot;)<br>
(ResultImagePixelType &quot;float&quot;)<br>
(ResultImageFormat &quot;mha&quot;)<br>
(Resampler &quot;DefaultResampler&quot;)<br>
(FixedImagePyramid &quot;FixedSmoothingImagePyramid&quot;)<br>
(MovingImagePyramid &quot;MovingSmoothingImagePyramid&quot;)<br>
(NumberOfResolutions 5)<br>
(Registration &quot;MultiMetricMultiResolutionRegistration&quot;)<br>
(Transform &quot;BSplineTransform&quot;)<br>
(AutomaticScalesEstimation &quot;true&quot;)<br>
(AutomaticTransformInitialization &quot;true&quot;)<br>
(FinalGridSpacingInVoxels 8)<br>
(Metric &quot;NormalizedCorrelation&quot; &quot;TransformRigidityPenalty&quot;)<br>
(Optimizer &quot;AdaptiveStochasticGradientDescent&quot;)<br>
(MaximumNumberOfIterations 400)<br>
(Interpolator &quot;Linear&quot;)<br>
(ResampleInterpolator &quot;FinalLinear&quot;)<br>
(ImageSampler &quot;Random&quot;)<br>
<br>
Good luck!<br>
<br>
Regards,<br>
<font color="#888888"><br>
Dan Mueller<br>
Senior Software Designer, Ph.D.<br>
Philips Digital Pathology, Healthcare Incubator<br>
Email: dan[dot]mueller[at]philips[dot]com<br>
Web: <a href="http://www.philips.com/digitalpathology" target="_blank">http://www.philips.com/digitalpathology</a><br>
</font><div><div></div><div class="h5"><br>
On 29 June 2011 21:13, Isaiah Norton &lt;<a href="mailto:isaiah.norton@gmail.com">isaiah.norton@gmail.com</a>&gt; wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; I&#39;m looking for a tool to co-register a stack of microscope histology<br>
&gt; sections to create a 3D volume. Sections are sliced roughly parallel, taken<br>
&gt; in pairs with a 10 micron gap, followed by ~70-100 micron gap between each<br>
&gt; pair, and H&amp;E stained. The raw images are  ~28k*28k pixels and ~150mb but I<br>
&gt; have down-sample to roughly 2500*2500 for the registration step.<br>
&gt;<br>
&gt; I&#39;ve tried the register_pair/list tool in Farsight Toolkit but it threw some<br>
&gt; itk memory exceptions, and in any case it seems geared to build adjacency<br>
&gt; mosaics rather than z-stacks. Also looked at GoFigure2 and V3D but didn&#39;t<br>
&gt; see this functionality in the release builds (apologies if I missed<br>
&gt; something, please let me know).<br>
&gt;<br>
&gt; I noticed this discussion a while back:<br>
&gt; <a href="http://itk-insight-users.2283740.n2.nabble.com/Constructing-3D-stack-from-2D-image-series-with-registration-td3832165.html" target="_blank">http://itk-insight-users.2283740.n2.nabble.com/Constructing-3D-stack-from-2D-image-series-with-registration-td3832165.html</a><br>

&gt;<br>
&gt; Is this idea implemented anywhere now? I&#39;d appreciate any suggestions, and<br>
&gt; am happy to build from source...<br>
&gt;<br>
&gt; Thanks,<br>
&gt; -Isaiah<br>
</div></div></blockquote></div><br>