Thread Subject: Maximum point spread in point cloud

Subject: Maximum point spread in point cloud

From: Brett

Date: 23 Feb, 2009 18:24:02

Message: 1 of 7

I have a 3D image stack from which I segment a body of interest. From here, I find the perimeter of each slice (also interested in the surface area). What I would like to do is take the coordinates from the perimeters,and find the three largest orthogonal dimensions of the object. Can anyone suggest a slick way of doing this?
 I thought of using minboundsphere from John D'Erico, using the diameter for the major axis, and finding the maximum orthogonal points from that line. Maybe that's the best way?

Subject: Maximum point spread in point cloud

From: Image Analyst

Date: 23 Feb, 2009 19:38:03

Message: 2 of 7

Brett :
Sounds like you're wanting to crop out the segmented object from the entire 3D volume. Is that what you're going to do? If so, why not just keep track of xmin, xmax, ymin, ymax, zmin, and zmax as you scan through the slices? This will give you a 3D rectangular prism. This is trivial and a heck of a lot easier than, say, getting the length of the major axis and then the longest axis perpendicular to that major axis (which will be at an angle that you'll need to figure out) and then the axis in the other perpendicular direction (which is determined/fixed by the vectors of the first two axes). If you really need some oddball-shaped thing, then how about the convex hull, which is a shape like you wrapped a stretchy balloon around your object?
Regards,
ImageAnalyst

Subject: Maximum point spread in point cloud

From: Brett

Date: 23 Feb, 2009 19:58:01

Message: 3 of 7

 Will a convex hull give me the major and minor axes?

Subject: Maximum point spread in point cloud

From: ImageAnalyst

Date: 23 Feb, 2009 21:35:18

Message: 4 of 7

Brett:
Not directly. You give it a list of coordinates and it gives you back
only those that are needed to define the convex hull. Other points,
like those that describe nooks and crannies that go inward are not
returned. For example, you give it x,y,z points that describe a
dumbbell and it gives you back points that are just on the ends, so
that a convex hull of a dumbbell is a cylinder with rounded ends (the
rounded ends of the dumbbell). You could then scan those to find
distances between pairs, and the one with the greatest distance will
be the major axis.

But you still haven't given me a convincing reason why you need that,
if you're cropping, and/or why just regular min and max of x,y, and z
won't work for you. What are you going to do after you get this
information? That's the key question.

There's also a bit of non-intuitiveness about the major axis. For
example you might expect that the major axis is a line going between
the two farthest points (a reasonable assumption) but if your object
is a very long, very skinny rectangle, you might expect that the major
axis is the length of the rectangle (also a fairly reasonable
assumption) but according to the farthest distance rule, the major
axis would be along a diagonal, not along the length (and with a
perfect rectangle there could be two major axes).
Regards,
ImageAnalyst

Subject: Maximum point spread in point cloud

From: Brett

Date: 23 Feb, 2009 21:49:03

Message: 5 of 7

What I am after is a morphological descriptor of a cell in 3D (length, width, height). Though the cell may be oriented primarily in the xy axis, it may also have a significant z component.
You are right, the major axis could be defined in two ways. The ends of cells usually have some curvature, so I think that the two points furthest from each other adequately describes the major axis. Cells also often have projections, which will effect the width measurement. So what I am trying to accomplish is to describe the shape of the cell and how it changes in a very simplistic manner.

Subject: Maximum point spread in point cloud

From: John D'Errico

Date: 23 Feb, 2009 22:04:06

Message: 6 of 7

"Brett " <bjbell@purdue.edu> wrote in message <gnupk2$kj4$1@fred.mathworks.com>...
> I have a 3D image stack from which I segment a body of interest. From here, I find the perimeter of each slice (also interested in the surface area). What I would like to do is take the coordinates from the perimeters,and find the three largest orthogonal dimensions of the object. Can anyone suggest a slick way of doing this?
> I thought of using minboundsphere from John D'Erico, using the diameter for the major axis, and finding the maximum orthogonal points from that line. Maybe that's the best way?

minboundsphere might work, but better for this would
seem a bounding ellipsoid. I think there is now one
on the file exchange. Maybe start here:

http://www.mathworks.com/matlabcentral/fileexchange/9542

John

Subject: Maximum point spread in point cloud

From: ImageAnalyst

Date: 24 Feb, 2009 01:55:20

Message: 7 of 7

Brett:
There are lots of ways to describe shape. The lengths of the axes is
one way. And maybe fitting an ellipse is another good way. You could
also think up many other ways, such as:
1) summing the perimeters over all slices
2) calculating the sphericity of the object, which is the ratio of the
actual surface area to the surface area of a sphere with the same
volume. Similar to circularity in 2D.
3) Calculating the Equivalent Spherical Diameter (diameter the volume
would have if it were a perfect sphere). (Similar to ECD in 2D.)
4) Ratio of volume to volume of convex hull. Similar to "solidity"
that regionprops() has.
5) the simple surface area (fairly similar to #1)
6) the simple volume
7) fractal dimension
8) (Possibly) SIFT (Shape Invariant Feature Transform,
http://en.wikipedia.org/wiki/Scale-invariant_feature_transform#3D_scene_modeling.2C_recognition_and_tracking)
9) the Level Set Method (http://en.wikipedia.org/wiki/
Level_set_method)

And all this is just shape information. You can get a bunch more
metrics if you choose to look at the intensity inside the volume.

Which of these is best depends on your use. The simpler the better.
If you have something that works for your specific needs, then it's a
good method. I just brought up some other ideas in case simple ones
don't work for you.
Good luck,
ImageAnalyst

Tags for this Thread

Everyone's Tags:

Add a New Tag:

Separated by commas
Ex.: root locus, bode

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Tag Activity for This Thread
Tag Applied By Date/Time
bound Brett 23 Feb, 2009 13:25:05
point cloud Brett 23 Feb, 2009 13:25:05
maximum distance Brett 23 Feb, 2009 13:25:05
rssFeed for this Thread

Contact us at files@mathworks.com