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?
-
1$\begingroup$ Can you be more specific? Your problem domain will often inform good features/descriptors. $\endgroup$– bjoernzCommented Feb 10, 2012 at 16:38
-
$\begingroup$ 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? ^^; $\endgroup$– KarlCommented Feb 10, 2012 at 17:08
-
$\begingroup$ Does it have noise or the only error is discretization? $\endgroup$– mirror2imageCommented Feb 12, 2012 at 16:15
-
$\begingroup$ In this question, assume that all noises do not exist. $\endgroup$– KarlCommented Feb 14, 2012 at 4:59
1 Answer
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).