0
$\begingroup$

My current problem:

  • I have an input 3D binary image (a 3D matrix that has only 0 and 1) that consists of random numbers of sphere with radius r.
  • We do not know how many spheres are there in the image.
  • All spheres have the same radius r, but we do not know radius r.
  • Spheres are all over the place in the image and can overlap each other.
  • example image is given below.

My requirement:

  • what is the radius r?

Currently, I simply just flatten the image to get rid of the z axis and perform edge detection and I am trying Hough Transform using: http://rsbweb.nih.gov/ij/plugins/hough-circles.html

However, with Hough Transform, I see that the variables minimum radius, maximum radius, and number of circles have to be specified. I have tried a few attempts below:

known radius

unknown radius

Given the correct parameters, Hough Transform can detect the circles just fine. But in the real application, I do not know how many spheres are there, and making the program attempting to guess minimum and maximum radius seems not feasible. Are there other ways to accomplish this?

Cross-link: https://stackoverflow.com/questions/9653291/finding-radius-r-of-the-overlappable-spheres-in-3d-image

  • 0
    In theory, it suffices to analyze a small arc of a circle, since the curvature uniquely determines the radius. However, you might also imagine that you have all circles that are tangent to a given point. The resulting figure is a circle with double the radius that you seek, so in extreme cases, the problem is unsolvable.2012-03-11

1 Answers 1

1

A simpler solution and much more computationally efficient when compared to Hough Transform is to use the distance transform:

  • Find the surface of your spheres (i.e. the pixels that have value 1 and have at least one neighboring 0 pixel);
  • Compute the distance transform with respect to the spheres surface, but constrain the computation only to pixels that are internal to the spheres. The output will be a distance map;
  • The radius will be exactly the maximum value in your distance map.

Another advantage of this solution when compared to Hough transform is that it provides a much more precise value for the radius.