Centerline estimation using pointlist

211 views
Skip to first unread message

Anne Sofie Korsager

unread,
Aug 5, 2016, 3:14:45 AM8/5/16
to vmtk-users

Hi VMTK users,


I am working on CT scans of blood vessels in a born placenta and need to analyze e.g. the distance between branches, and number of branches. I think that maybe VMTK can help me with this. I have made an initial segmentation using fuzzy c-means in Matlab and this segmentation is then used as input to vmtklevelsetsegmentation.


The attached image shows my result after I have applied a connected component analysis (vmtksurfaceconnectivity).


Then I would like to find the centerline of this segmentation and since it is a quite complex structure and would like to do this automatically. I have a script in c which can give me all end-points, curve junctions points (and more) in image coordinates (it take a binary image of the segmentation as input). I once believed that I could just give this to vmtkcenterlines like this: vmtkcenterlines -ifile SEGCONNECTED.vtp -ofile OUTPUT.vtp -seedselector pointlist -sourcepoints x1 y1 z1 x2 y2 z2 … (all curve junction points) -targetpoints x1 y1 z1 x2 y2 z2 (all end-points in the image coordinate system) and then I would have a centerline made by vmtk. That definitely does not work! But I guess that it should be surface coordinates? Is there a relationship between surface coordinates and image coordinates?  I get errors like “Generic Warning: In /home/orobix/Desktop/vmtk-build/VTK/Common/Core/vtkMath.cxx, line 548” Unable to factor linear system

It does give me an output but the centerline is very off. Is there another way to find the centerline if I already have an initial centerline (in e.g. .nii)?


I am sorry for the long mail but I hope that my problem was clear.

 

Best regards,

Anne

ScreenshotSegmentationResult.png

Luca Antiga

unread,
Sep 6, 2016, 2:47:01 AM9/6/16
to vmtk-users
Hi Anne,
indeed the surface is very complex. The centerline code can fail when it can’t decide what is inside and what is outside, or when the surface degenerates in a sheet, for instance.

Try saving the Voronoi diagram extracted from vmtkcenterlines (use the option -voronoidiagramfile voronoi.vtp) and look if the diagram lies within the surface (vmtkrenderer --pipe vmtksurfaceviewer -ifile surface.vtp -opacity 0.4 --pipe vmtksurfaceviewer -ifile voronoi.vtp); if it doesn’t then it’s a surface orientability issue.

The alternative is for you to use vmtknetworkextraction, which is less accurate than vmtkcenterlines but it does find endpoints automatically and it’s not so sensitive to the surface topology. In order to make it work, you have to clip the surface open at some location (e.g. the inlet) using vmtksurfaceclipper before feeding it to vmtknetworkextraction.
If the script doesn’t complete successfully, try fiddling with the -advancementratio parameter (it must be greater than one, e.g. 1.01, 1.05, 1.1)

Hope this helps,


Luca


--
You received this message because you are subscribed to the Google Groups "vmtk-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vmtk-users+...@googlegroups.com.
To post to this group, send email to vmtk-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
<ScreenshotSegmentationResult.png>

Reply all
Reply to author
Forward
0 new messages