Map points to closest skeleton point

Hey there,

I’m working with eye fundus (retina) images. I segment the vessel tree as a binary image from the fundus image (currently experimenting with Weka). Then I skeletonize the vessel tree to obtain the centerline of the vessels. Then I need to map each point on the vessel tree to the closest skeleton point. I’ve been doing this in a somewhat inefficient, unelegant way by iterating over a square around each point to find the skeleton point that minimizes the distance, but would like to improve on this.

I’m thinking of perhaps using the gradient of the distance map on the vessel tree to walk directly to the closest skeleton point (which would be the ridge of the distance map) or something like that. Does anyone know of some ready made solution/algorithm that can be adapted to do this? I would like to obtain two integer arrays of equal length: a=[index of vessel map points] and b=[index of corresponding skeleton point] (with index=x+y*width). Any ideas?

Thank for any tips!

Why do you need the mapped points? If your ultimate goal is to measure local vessel width, I recommend having a look at AngioTool by Enrique Zudaire (I once tried to convert it to a regular ImageJ plugin here) as well as the Local Thickness plugin (and these slides) by Bob Dougherty.

2 Likes

I would try the EDM (Euclidean distance transform of the inverse of the skeleton, that gives you the distance of the background to the nearest skeleton point. Now if you binarise your vascular tree and AND with the EDM image you will know how far each pixel in the vascular tree is from the skeleton.

1 Like