[Insight-users] Mesh segmentation

Luis Ibanez luis.ibanez at kitware.com
Thu, 22 Jan 2004 14:48:05 -0500


Hi Bjorn,

The itk::Mesh is mostly used as a helper
class for segmentation methods rather than
as a input data to be segmented.

However, if object-simplification is what you
are looking for, here are some options that you
may want to consider:


A) From the mesh generate a binary image
    with zero values outside the mesh and
    constant values inside the mesh.
    (assuming the mesh is a closed surface)

    If you get there, you could use the
    fourth order level set methods in ITK.
    These methods are quite powerful for
    smoothing surfaces (represented as level
    sets) and still conserve the main shape
    features.


B) Perform registration between you
    Mesh and a number of geometric primitives
    from the itkSpatialObject family.

    For example you could use primitives
    such as

      itkTubeSpatialObject
      itkEllipsoidSpatialObject
      ...
      (more on Insight/Code/SpatialObject...)

    initialize them close to the size an
    orientation of the main features in
    your mesh and then register them against
    the surface.

    You could perform this registration by
    doing Mesh to SpatialObject registration
    using the IterativeClosestPoint algorithm
    implemented in ITK, or you could also do
    Image to SpatialObject registration using
    the image generated in (A).  Model to image
    registration is described in the Software
    Guide

    http://www.itk.org/ItkSoftwareGuide.pdf

    Section 8.14, pdf-page 328.


C) A mix of (A) and (B) is to use the
    image in (A) and use the BlobSpatialObjects
    which implements the notion of Gaussian
    blobs in space. With them you could
    perform image-to-image registration.



D) Use the Blox "core" analysis tools in order
    to decompose the image from (A) into main
    features.





Beware that in all of these cases,
a significant amount of coffee will
be required.



Regards,


    Luis



--------------------------
Bjorn Hanch Sollie wrote:

> Hi all,
> 
> I have a question regarding mesh segmentation and whether such
> capabilities are implemented in ITK.  Specifically, what I'm looking
> for is a way to anayze a large and decompose/segment it into more
> basic geometric substructures, (such as boxes, cylinders and spheres
> for example).
> 
> For example, assume that you have a model of a flagstaff, basically
> consisting of a very tall cylindrical object with a spherical object
> on top of it and with a box at its foot.  Assume that this flagstaff
> is represented as a single combined mesh.  I am wondering whether ITK
> provides any tools to analyze the geometric properties of this object
> and break it down into its three basic compounds, namely the box, the
> cylinder and the sphere.  When this is done, appropriate
> optimizations/parameters, such as reducing the number of polygons in
> each object, could be applied to these basic objects in order to save
> rendering time later and increase frame rates.
> 
> Was that explanation clear and consistent enough for you to get an
> idea of what I'm looking for?  Does ITK provide the tools to do this?
> 
> Thanks in advance for any help!
> 
> -Beorn