I have a binary volume consisting of a number of disconnected objects. (coming from a noisy, anatomic dataset)

However, some of the objects are 'somewhat' connected. Picture a big cylinder and a small cylinder with a few streamers connecting them.

Is there a relatively computationally inexpensive way to measure 'how connected' the big cylinder and the small cylinder are? I've looked, but may not know the right vocabulary.

A possible measure would be the average number of completely distinct paths to every other pixel in the volume.

Another alternative would be applying morphological operations and seeing what magnitude of, eg, erosion, results in the volumes being disconnected.

  • $\begingroup$ I don't know of anything formal. However, if you already know the boundaries of objects A and B, one measure of their "connectedness" could be the volume of the connected cluster that is neither A nor B. This would, however, not necessarily indicate how robust the connectedness is (imagine a thin streamer with a big lump attached). I suspect the answers will be very different depending on what you care about - if what you are asking is whether the connection likely fail under erosion, you probably need to simulate the erosion. $\endgroup$
    – AJK
    Commented Aug 26, 2014 at 22:41
  • $\begingroup$ Unfortunately, I only know the boundary of A+B+streamers. $\endgroup$ Commented Aug 27, 2014 at 13:21
  • $\begingroup$ Um. I should practice the edit comment thing. I know that object A is well-connected (blocky) and surrounded by streamers (basically filtered bubbles). Object B may or may not be irregularly shaped. I'm mostly interested in identifying the boundary of object A. $\endgroup$ Commented Aug 27, 2014 at 13:43

1 Answer 1


Apply a connected component labeling to the binary volume (resolve the equivalence classes). Call this step the connection. Every different labeling is now your cluster. The next step is to apply erosion. Perform a connection + erosion + union (merge voxels into a single equivalence class) iteratively until you create new clusters. Note that new clusters emerge after the connection step.

Now, the number of iterations which is required to separate A from B as new clusters would be your measure of connectedness.

Note: You could decide wheather A and B are separated by checking the areas of the newly formed clusters. If they are big enough this means you have separated.

MATLAB is a good software to implement all those.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.