[vtkusers] How to extract isosurfaces from a series of 2D slices?

安 继业 an_jiye at hotmail.com
Wed Feb 11 03:59:48 EST 2004


Hi, Mathieu. Thank you very much for you useful information.

I have tried vtkDICOMImageReader in my pipeline, it is really great. By the 
way, does it only come with the release version of vtk 4.4.0? I have not 
seen it before, both in vtk 4.0 and 4.2.

I have a question of vtkContourFilter. During my test, two adjacent regions 
are separated with a circle whose contour value is -900. And the value 
outside the circle is constant 31744. If I pass value -900, 31744 or an 
arbitrary value between them(500 for example) to 
vtkContourFilter::SetValue(0, value), vtk will produce the same 
isosurfaces. I can understand this as vtk does some interpolation if 
needed, is it true?

Thank you in advance.

Jiye An

>From: Mathieu Malaterre <mathieu.malaterre at kitware.com>
>To: ? ?? <an_jiye at hotmail.com>, <vtkusers at vtk.org>
>Subject: Re: [vtkusers] How to extract isosurfaces from a series of 2D 
slices?
>Date: Mon, 9 Feb 2004 22:04:33 -0500
>
>an_jiye,
>
>Hum you seems to be lucky usually DICOM are a pain to read as raw. There 
is a vtkDICOMImageReader that should work for you. Plus it is really to 
output a vtkImageData
>
>vtkDICOMImageReader *reader = vtkDICOMImageReader::New();
>reader->SetDirectoryName("c:/foo");
>reader->Update();
>
>vtkImageData *image = reader->GetOutput();
>
> > 2.The example use vtkContourFilter::SetValue(...) to extract isosurface
> > from the input data. By passing 500 to extract skin and 1150 to extract
> > bone. The my question comes, does it means I must know the exact scalar
> > value of the isosurface I am going to extract?
>
>Yes. Or build a GUI with a slider.
>
> > Since my slice images are from a CT scan, which was stored in 16 bits. 
I am
> > interested some surfaces from the slices, include the body, some 
organs.
> > For example, the outline of the body may be a closed curve in one 
slice.
> > But the scalar value along this curve may not
> > be constant. Then how should I extract these surfaces and display them?
>
>This can sometime be a subject for a PhD :) Have a look a http://itk.org. 
You might need a floodfill or threshold before your marching cubes 
algorithm.
>
> > I have also thinked of the following method. First manually contour 
each
> > slice. To simplify the process, imagining draw two circles inside each
> > slice. Circle A is bigger and circle B is inside A. Then if I do the
> > following work to each slice: assign scalar value zero to the regions
> > outside circle A, assign one to the regions between A and B, and assign 
two
> >
> > to the regions inside B, can I extract the two isosurfaces represent A 
and
> > B from the contoured fake data?
>
>Ask Luis about that. But this is usually a bad idea to work in 2D (slice 
by slice). Not only this is hard to reproduce, but it can lead to errors. 
Always prefer a 3D approach if possible. And again there are a lots of 
filters that can help you for that in the Insight toolkit (http://itk.org). 
This is easy to use both VTK and ITK.
>
> > Any suggestion will be appreciated. Thank you in advance.
>
>A good start for itk is the ITK software guide:
>
>http://www.kitware.com/products/itkguide.html
>
>Mathieu
>
>

_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。  http://www.hotmail.com  




More information about the vtkusers mailing list