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

Mathieu Malaterre mathieu.malaterre at kitware.com
Wed Feb 11 09:03:35 EST 2004


Jiye An,

安 继业 wrote:
> 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.

It was first added in VTK on the 2003/05/28. So branch 4.0 and 4.2 were
already started at that time.

> 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?

Exactly.

> 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