[Insight-users] 3D surface.. / Segmentation
Luis Ibanez
luis . ibanez at kitware . com
Thu, 12 Jun 2003 16:59:34 -0400
Hi Yasser,
Segmenting skin from a data set can be
easily done by thresholding, as you already
verified. This is the reason why you can
simple invoke vtMarchingCubes and get a
reasonable skin surface.
Bad news is that internal organs are not
easy to segment just by threholding.
It is then *very* unlikely that you could
succed to use vtkMarcingCubes for segmenting
any internal organ in a data set.
Segmentation is an ill-defined problem
*very very very ill-defined*.
Up to the point where there is no responsible
way to say when a segmentation is done correctly.
The best that you can do is to apply the engineering
approach of perfoming a segmentation that is 'good
enough' for your final purpose.
One of the reasons why segmentation is ill-defined
is because anatomy itself is ill-defined. For example,
when you mention "bone", do you want to include
cartilage as part of the bone tissue ? do you
consider the trabecular bone to be "bone" ?
Or when you mention "brain", do you want to include
the gray matter, the white matter and the CSF as
part of the brain. Do you want the cerebelum to be
part of the brain ?
Each one of these tissues have completely different
characteristics that are reflected in the intensity
of medical images under different modalities.
So,
start by accepting that segmentation will *never*
be perfect. There will always be sections of an organ
for which segmentation will be obscure even for
clinicians; then get an idea of 'how good' do you
need the segmentation to be for your practical
application versus how much computing time, personal
sacrifices, coffee and midnight cold pizzas are you
willing to invest for obtaining such level of quality.
Then look for a balance point...
Among the many possible approaches for segmentation
you may want to consider the following:
(their details are described in the SoftwareGuide)
http://www . itk . org/ItkSoftwareGuide . pdf
1) Statistical classification
Chapter 9, pdf-page 315
That will give you a good starting point
for segmenting Bone/Gray Matter/White Matter/CSF
However, statistical classification doesn't use
any spatial information. It is done purely on the
basis of pixel intensities. For that reason you
may want to use these techniques only for
defining priors to other segmentation algorithms
that use morphological and spatial information
2) Region Growing methods
Chapter 8, pdf-page 251
These methods are based on the assumption that
the organ to be segmented is identified by a
region with homogeneous intensity levels.
The use one or more seed points provided by the
user in order to find a set of connected pixels.
You may want to take a look at the
RegionGrowingSegmentation application in
InsigthApplications.
3) Watersheds
Section 8.2, pdf-page 262
Again these methods assume that the organ to
be segmented is defined as an homogeneous
region. This methods allows to fuse multiple
regions in order to compose an anatomical
structure. You may want to take a look at the
SegmentationEditor application in InsightApplications
4) LevelSets
Section 8.3, pdf-page 266
These methods represent a contour as the zero set
of an explicit function. The function is made evolve
under the control of a partial differential equation.
(representing some artificial physical model like
anisotropic diffusion)
Many variants of level sets behaviors are available
in ITK, they are based on selecting different forms
of the partial differential equation.
If you are interested in using level sets you may
want to start by using FastMarching (section 8.3.1)
for generating an initial level set, and then using
some of the other level set methods like
- ShapeDetection
- GeodesicActiveContours
- ThresholdSegmentationLevelSet
- CannySegmentationLevelSet
As you can see, there are many segmentation options
available in ITK. They simply reflect the complexity
of the Segmentation task itself.
Please let us know if you have further questions,
Regards,
Luis
-----------------------
yasser salman wrote:
> hi saby..,
>
> in ur skullydoo if i wanna to release the skin from 3D
> surface reconstructed, also bone..how can it comes??
> also i already construct the 3d Surface from single
> .raw format using marching
> cube ..,and the result seems close with ur skullyDOO
> (it's a trevial reffernce for us:) thanx skullyDoo:))
> but i have problem..,
> - i wanna to extracat bone and skin and brain
> indevidualy. in my case all skin and bone and brain
> constructed at the same volume here is my code:
>
>
> vtkRenderer *aRenderer = vtkRenderer::New();
> vtkRenderWindow *renWin = vtkRenderWindow::New();
> renWin->AddRenderer(aRenderer);
> vtkRenderWindowInteractor *iren =
> vtkRenderWindowInteractor::New();
> iren->SetRenderWindow(renWin);
>
>
> vtkImageReader *Reader = vtkImageReader::New();
> Reader->SetFilePrefix ("D:/ImageData/t1");
> Reader->SetFileDimensionality(3);
> Reader->SetFilePattern("%s%.d.raw");
> Reader->SetDataByteOrderToBigEndian();
> Reader->SetDataExtent (0,180,0,216,0,180);
> Reader->SetDataScalarTypeToUnsignedChar();
> Reader->SetDataOrigin(0,0,0);
> Reader->SetDataSpacing(1,1,1);
> Reader->SetDataMask(0x7ff);
> Reader->Update();
>
> vtkMarchingCubes* mc=vtkMarchingCubes::New();
> mc->SetInput(Reader->GetOutput());
> mc->SetValue(0,63);
>
> mc->ComputeGradientsOff();
> mc->ComputeScalarsOn();
> mc->ComputeNormalsOn();
> mc->Update();
> vtkPolyDataMapper* mcmap=vtkPolyDataMapper::New();
> mcmap->SetInput(mc->GetOutput());
> mcmap->ScalarVisibilityOff();
> vtkActor* mcactor=vtkActor::New();
> mcactor->SetMapper(mcmap);
> mcactor->GetProperty()->SetColor(1,1,1);
> vtkCamera *aCamera = vtkCamera::New();
> aCamera->SetViewUp (0, 0, -1);
> aCamera->SetPosition (0, 1, 0);
> aCamera->SetFocalPoint (0, 0, 0);
> aCamera->ComputeViewPlaneNormal();
> aRenderer->AddActor(mcactor);
> aRenderer->SetActiveCamera(aCamera);
> aRenderer->ResetCamera ();
> aCamera->Dolly(1.5);
>
> renWin->SetSize(640, 480);
> iren->SetDesiredUpdateRate(3.0);
> iren->Initialize();
> iren->Start();
> return 0;
>
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Calendar - Free online calendar with sync to Outlook(TM).
> http://calendar . yahoo . com
> _______________________________________________
> Insight-users mailing list
> Insight-users at www . itk . org
> http://www . itk . org/mailman/listinfo/insight-users
>