Find 3d branch points - Remove smaller branches

8 次查看(过去 30 天)
Hello all,
I want to remove small branches from this skeleton of a vessel, and to be left with just the main binary centerline. To do this I want to set a minimum branch length on the centrelines. But to do this I need to find the branch points...
BWMORPH works in 2D to find branch point/ end point locations, but this is a 3D skeleton...
Many thanks,
Will

采纳的回答

Sean de Wolski
Sean de Wolski 2015-3-17
I don't have time right now to implement it, but you should be able to use bwlookup with a 3x3x3 lookup table to identify the branch points.
The algorithm would be: is the middle pixel connected two more than three or more pixels on the periphery of the 3x3x3 box. If it is, then it's a branch point.
  2 个评论
William
William 2015-3-17
编辑:William 2015-3-17
Not sure how to define a lookup table... something like...?
f = @(x) (sum(x(:)) >= 3);
lut = makelut(f,3)
branch_point = bwlookup(skeleton, lut)
William
William 2015-3-31
Found a premade function called Skel2Graph3D which you can define a threshold branch length and then convert it back into a skeleton with Graph2Skel3D.

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by