We are working on a project where we glue spherical markers onto a tissue, and 3D scan both the tissue and the markers to capture the initial position. Then, we apply a force to deform the tissue and perform a second scan. The goal is to measure the deformation using these markers.
Is there a way in 3D Slicer (or elsewhere) where we can click on the markers, and the software detects the spherical shape and returns the centroid? When I use simple markup in 3D Slicer, it doesn’t necessarily return the centroid of our markers.
I’ve done a project like this in the past by making a “virtual” scan of the sphere and registering it to each of the real spheres. As long as your scanned spheres are a different density from the surrounding tissue this can be very robust and accurate.
In that particular case I looked at the (mostly uniform) intensity of the spheres in the real scan and then programmatically made a shere of the same intensity and size with a little background intensity border around it. I also blurred it a bit. Then I just did a simple optimizer that, given a reasonable starting point, just kept tweaking the center of the sphere to minimize the summed intensity differences. I started from a user click near the target, but it would also be possible to do an exhaustive search for things that look like spheres. In my case the optimizer converged very quickly.
Of course there are many possible complications, like poor resolution, artifacts, or the tissue looking similar to the spheres in some way.