[vtkusers] vtkVolume - Is there a way to use clipping planes on it?
Sean McInerney
seanm at nmr.mgh.harvard.edu
Thu Nov 18 15:50:03 EST 2004
Hi Ramzy,
I suggest also trying vtkVolumeRayCastIsosurfaceFunction with a
vtkVolumeRaycastMapper to interactively explore the surface at various
isovalues. However, I think that you may have to be more clever than the
facilities of vtkVolume and vtkVolumeMapper allow ... clipping planes
ain't gonna cut it if all you want is brain.
Make sure that you are using anatomical MR data. fMRI data is going
to look like mush unless you perform statistics through a time series of
images. Luckily, you get great signal from soft tissue with MR and
almost none from bone or areas where there is an air-tissue interface.
Unfortunately, areas outside of the brain can have signal values similar
to those within the brain. You'll have to do some filtering prior to
display or get *very* clever by developing your own skull stripping
algorithm. Probably the easiest approach is to use vtkContourFilter to
get a PolyData surface that includes the region of interest (ROI). Next
use vtkPolyDataConnectivityFilter to extract only the surface(s)
containing the ROI. I you're lucky, the above mentioned lack of bone
signal, combined with the fact that the brain is encased in bone, should
leave you with with a separate surface corresponding to the brain.
Additionally, you could manually segment or mask the image data prior to
contouring to obtain a more refined result.
Good luck!
-Sean
Ramzy Darwish wrote:
> Hello All,
> I have been using VTK in school for a little more than a year now, and I am having some problems.
>
> Don't worry, I am not asking anyone to do my homework.
>
> I am doing an independent study continuing some work with medical volume rendering using the bruce gooch data set: http://www.cs.utah.edu/~bgooch/BruceBrain.html
>
>
> Now, the data file he gives out is a simple list of densities.
> I was not allowed to use any vtkReaders, so I loaded the data in by hand, swapping byte-order and all that good stuff.
>
> So I got a rendering of the head, but because I had no other information other than density, I was only able to somewhat get the brain isolated was by using the vtkVolume object with texture mapping.
>
> This produced some nice (although not greatly useful) images, but I have always wanted to get the brain by itself.
>
> I tried using the vtkContourFilter, which didn't seem to want to work right. Instead of leaving values all through the head in my ranges, it left sections of the entire head (i.e. I would get from the neck/chin to the nose instead of the whole head with only say, the skin removed).
>
> I tried using a combination of vtkClipPolyData with scalar values and implicit planes, but this didn't work because after cutting, the resulting geometry would be full of holes. I think I was using it wrong.
>
> So I went back to the drawing board and I have decided to look at the densities in the file and ignore those outside of the brain wherever possible. So now I have a range of values within to use, but I still have some extraneous (sp) pieces laying about that I might be able to remove, but I can't figure out how. Is there a way to remove chunks out of a volume? Not by scalar though. I could use a sphere or other builtin implicit function if necessary, but it seems that the other methods of doing stuff like this are not set up to work with vtkVolume's (as they are derived from vtkProp).
>
> Can anyone point me in the direction of some more objects that I can use to interact with or modify vtkVolume objects?
>
> Sorry this was so long, this is my first post here.
>
> thanks,
> ramzy
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at: <http://www.vtk.org/Wiki/VTK_FAQ>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
More information about the vtkusers
mailing list