[SciPy-User] Arbitrary max-intensity projection

Christoph Gohlke cgohlke@uci....
Mon Sep 12 14:59:40 CDT 2011



On 9/8/2011 3:29 PM, Chris Weisiger wrote:
> I have a 3D volume of image data. I want to do a max-intensity
> projection of that data along an arbitrary axis (that is, not
> necessarily orthogonal). For example, projecting along the axis<1, 0,
> .5>  would generate results like looking at the data a bit from above.
> Basically we're faking 3D views of our data.
>
> OpenGL 3D textures don't work due to the size of the image data in
> question (e.g. 512x512x60). Someone suggested reimplementing
> Amanatides&  Woo, which is a fairly simple voxel raytracer. However,
> that doesn't mean it's trivial to implement, and I'd rather not
> reinvent and optimize the wheel if at all possible. Does anyone have
> any suggestions for known solutions to this problem?
>
> -Chris


An alternative to using a 3D raycaster, VTK, or OpenGL is the 
"Shear-Warp" algorithm:

<http://www.ncbi.nlm.nih.gov/pubmed/11948730>
<http://graphics.stanford.edu/papers/shear/shearwarp.pdf>
<http://graphics.stanford.edu/papers/lacroute_thesis/>

Two implementations in C, which could possibly be wrapped for Python:

<http://www.mathworks.com/matlabcentral/fileexchange/21993-viewer3d>
<http://www-graphics.stanford.edu/software/volpack/>

The algorithm looks simple enough to be implemented in numpy and 
ndimage. See the appendix of the first paper for a start.

Christoph


More information about the SciPy-User mailing list