[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