Hi Dan,<br>That'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"><<a href="mailto:dan.muel@gmail.com">dan.muel@gmail.com</a>></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 "out-of-the-box", 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 "float")and Paraview also ship<br>
(MovingInternalImagePixelType "float")<br>
(FixedImageDimension 2)<br>
(MovingImageDimension 2)<br>
(UseDirectionCosines "false")<br>
(HowToCombineTransforms "Compose")<br>
(DefaultPixelValue 0.0)<br>
(WriteResultImage "true")<br>
(ResultImagePixelType "float")<br>
(ResultImageFormat "mha")<br>
(Resampler "DefaultResampler")<br>
(FixedImagePyramid "FixedSmoothingImagePyramid")<br>
(MovingImagePyramid "MovingSmoothingImagePyramid")<br>
(NumberOfResolutions 5)<br>
(Registration "MultiMetricMultiResolutionRegistration")<br>
(Transform "BSplineTransform")<br>
(AutomaticScalesEstimation "true")<br>
(AutomaticTransformInitialization "true")<br>
(FinalGridSpacingInVoxels 8)<br>
(Metric "NormalizedCorrelation" "TransformRigidityPenalty")<br>
(Optimizer "AdaptiveStochasticGradientDescent")<br>
(MaximumNumberOfIterations 400)<br>
(Interpolator "Linear")<br>
(ResampleInterpolator "FinalLinear")<br>
(ImageSampler "Random")<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 <<a href="mailto:isaiah.norton@gmail.com">isaiah.norton@gmail.com</a>> wrote:<br>
> Hi,<br>
><br>
> I'm looking for a tool to co-register a stack of microscope histology<br>
> sections to create a 3D volume. Sections are sliced roughly parallel, taken<br>
> in pairs with a 10 micron gap, followed by ~70-100 micron gap between each<br>
> pair, and H&E stained. The raw images are ~28k*28k pixels and ~150mb but I<br>
> have down-sample to roughly 2500*2500 for the registration step.<br>
><br>
> I've tried the register_pair/list tool in Farsight Toolkit but it threw some<br>
> itk memory exceptions, and in any case it seems geared to build adjacency<br>
> mosaics rather than z-stacks. Also looked at GoFigure2 and V3D but didn't<br>
> see this functionality in the release builds (apologies if I missed<br>
> something, please let me know).<br>
><br>
> I noticed this discussion a while back:<br>
> <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>
><br>
> Is this idea implemented anywhere now? I'd appreciate any suggestions, and<br>
> am happy to build from source...<br>
><br>
> Thanks,<br>
> -Isaiah<br>
</div></div></blockquote></div><br>