Grasshopper

algorithmic modeling for Rhino

# Reconstructing 3d data from CT Scans in Grasshopper

Built a little GH definition to build a 3d mesh up from sequential image layers from a CT scan. relies on millipede, anemone, and human.

Views: 616

Comment

Join Grasshopper

Comment by WT4 on October 19, 2015 at 6:16am

I am interested in being able to display the images on screen and then obtain images of sections through the volumetric space defined by the images.  Many thanks

Comment by Ron Shvartsman on August 17, 2015 at 9:16pm

Andrew,

Thanks for posting this a ways back. Been working on something similar. Thanks for sharing!

Ron

http://www.grasshopper3d.com/forum/topics/isomesh-lung-generated-fr...

Comment by John Abowd on March 15, 2014 at 7:32am

Would you be opposed to sharing this definition? Thanks, John

Comment by Nick Tyrer on January 7, 2014 at 11:12am

Ah ok i think i follow. Thanks for explanation. I wasn't sure why you were using Anemone, but that makes sense and i suppose even if this wouldn't crash it, you can now apply it to more and more complex files. How many vertices are in final mesh?

Just to make sure i'm not doing it wrong, do you find its the generation of the field values to be the computationally hungry element? not the isosurface itself.

For my mesh of 100k vertices the isosurface=500ms but field generation is 1.5minutes.

Comment by Andrew Heumann on January 7, 2014 at 10:40am

Hi Nick -

The beauty of marching cubes (the algorithm at the heart of millipede's isosurface) is that the mesh geometry in any given cubic cell is dictated ONLY by the field values at the vertices immediately around it. This means you can solve it layer after layer, and every subsequent layer will be perfectly continuous with the one adjacent to it. For each layer, I'm sampling two CT scan images at a time, so I have two layers of points to generate one mesh "slice" - and the top points for one layer naturally become the bottom points for the next layer.

I could have obtained the same geometric result by simply feeding the entire 3d grid of points into millipede all at once - but my suspicion was that this would crash my machine given the density at which I was sampling the source images.

Comment by Nick Tyrer on January 7, 2014 at 8:06am

Andrew i have recently starting using Millipede, specifically the isosurface component. Im enjoying using it, but cant understand how you use it this way. Could you please explain the relationship between Anemone and Millipede.

Is the mesh 'closed' after each additional layer? If so is the whole mesh recalculated with each iteration?

Or do you keep the top of the mesh 'open' with maybe the box input, then some how generate next marching cubes layer off that open mesh edge?

Thanks

Comment by Andrew Heumann on January 2, 2014 at 8:23pm

They're both bone scans, taken from this website: http://isbweb.org/data/vsj/

Comment by taz on January 2, 2014 at 6:10pm

what is the object?

Comment by Andrew Heumann on January 1, 2014 at 9:14pm
Yup - using millipede's isosurface component to handle that.
Comment by Aaron M. Ryan on January 1, 2014 at 8:55pm

great....marching cubes?

by Mauricio

• View All

## Videos

• ### Intro to Caddisfly: An Add-on for Grasshopper

Added by Mahdi Soheyli Fard