# Tools for 3D shape analysis

I have a 3D shape in a 3D binary image. Therefore, I have a list of all of the x,y,z points. If I am to analyze this shape for various identification, such as "sphericity", volume, surface area, etc., what are some of the choices do I have here?

• Can you be more specific? Your problem domain will often inform good features/descriptors. – bjoernz Feb 10 '12 at 16:38
• I want to check the following features against the shape that I got: sphericity, smoothness, compact, volume, and surface area. Something like this. For instance, checking for sphericity. A perfect sphere shape should yield 100% sphericity value, while some other random shapes will yield other values < 100%. Does that explain a bit? ^^; – Karl Feb 10 '12 at 17:08
• Does it have noise or the only error is discretization? – mirror2image Feb 12 '12 at 16:15
• In this question, assume that all noises do not exist. – Karl Feb 14 '12 at 4:59

To approximate the volume ($V_{counted}$) you need to count all the voxels.

To roughly approximate the surface area ($A_{approx}$) count all the voxels that have an "empty" voxel as a neighbor. (Have a look at Marching cubes or Marching tetrahedrons for more inspiration and a more detailed discussion on how to determine a surface element).

In order to determine the sphericity I would calculate the minimal bounding box$^1$, take the largest axis and regard it as the diameter: $V_{calc} = \frac{4}{3}\pi r^3$

Since your features ($f_{vol}$, $f_{area}$, $f_{sphere}$, $\dots$) should be in the interval $[0, 1]$ (or 0% - 100%) you simply need to divide the smaller value by the larger value:

$f_{vol}(V_{counted}, V_{ref}) = \frac{\min(V_{counted}, V_{ref})}{\max(V_{counted}, V_{ref})}$

$f_{area}(A_{approx}, A_{ref})$ and $f_{sphere}(V_{counted}, V_{calc})$ accordingly.

$f_{compactness} \tilde{=} f_{sphere}$, since a sphere is the most compact volume.

I hope you can understand, what I am trying to say, and hopefully the answer you are looking for is somewhere in here.

$^1$ if your data is not aligned, you may have to align it first (PCA).