Vessel tree centerline branch extraction using VMTK

Hi, the output of this (a) “Preview” button network extraction seems to be a more robust and comprehensive representation of the vessel data than when we run the (b) full computation.
The full computation is very sensitive to the seed points and I cannot find a combination of seed points that recovers the result from the “Preview” functionality. Is there any functionality to enforce similar results for the “Preview” and “Start” full computation (Using Slicer 4.10.2 still)? Otherwise is there a general rule of thumb to debug these differences ? I think I saw on a tutorial that some points on the Voronoi Model are better than other?

You see the straight lines if path cannot be found to a point. It is almost always happens because the endpoint is on the surface mesh, while the full centerline extraction searches along the Voronoi diagram, which is inside the mesh.

You can fix the error easily by moving the endpoints inside the mesh. It would be easy to automate this by snapping the endpoint to the closest point on the Voronoi surface. It would be great if you could implement this and send a pull request.

2 Likes

Since I do see these straightened centerline segments often, could you please elaborate on how to move endpoints into the mesh?
In this example I see the connecting lines are not even passing through the endpoints

Thank you.

Hi @fuentesdt
I felt the same pain as you did.
Now here’s my work-around: basically I converted the model to segmentation, then use “Margin” to grow the segmentation by 1 pixel (remember, 1 is enough), so the segmentation will look fuller. Additional step could be to use “Island” to keep largest island. Then use this grown segmentation in the “Extract Centerline” module as input, followed by automatic Endpoint identification, etc. So far in my case, it has been performing wonder (i.e. no more weird centerlines)!

Hope it helps!

3 Likes