[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