MATLAB Answers


Remove the spurious edge of skeleton

Asked by Hong
on 26 Sep 2013
Latest activity Answered by Aykut Kaplan
on 23 Jan 2017

Recently, I've had an object to get it's skeleton,and then simplified the skeleton

but my problem is how to remove the edge of the skeleton for simplified the skeleton

here is my few steps:

First,I've got the skeleton from my object with bwmorph(ima,'skel',Inf)

here is the object which has been filled and the skeleton below:

filling the object:

the skeleton:

Second,for the skeleton, I've mark the branch points and end points

to mark the branch points and end points,I use bwmorph(skel, 'branchpoints') and

bwmorph(skel, 'endpoints');

here is the figure that I marked the points below:

the reds are branch points

the blues are end points

and the last step,

from the above figure, I want to remove the edges between branch point and end point (here I call the edge is spurious edge)

here is the resulting figure that I want

my problem is how can I remove the spurious edges

I've referenced this article

and the suggestions are set the threshold of the distance

but in my situation,the lengths of the spurious edges may have too long or too short...


Log in to comment.


No products are associated with this question.

4 Answers

Answer by Teja Muppirala
on 26 Sep 2013
 Accepted answer

I think there must be a more efficient way to do it, but this at least works. BWDISTGEODESIC starts at a given point, and then calculates the distance as you travel along the path. Start at a endpoint, start walking and find all pixels that are closer than the nearest branchpoint. Then remove those pixels.

skel= bwmorph(ima,'skel',Inf);
B = bwmorph(skel, 'branchpoints');
E = bwmorph(skel, 'endpoints');
[y,x] = find(E);
B_loc = find(B);
Dmask = false(size(skel));
for k = 1:numel(x)
    D = bwdistgeodesic(skel,x(k),y(k));
    distanceToBranchPt = min(D(B_loc));
    Dmask(D < distanceToBranchPt) =true;
skelD = skel - Dmask;
hold all;
[y,x] = find(B); plot(x,y,'ro')


Log in to comment.

Answer by Hong
on 30 Sep 2013

thanks to Teja Muppirala

this solution is really help me a lot

as your method, it could worked ^^

thanks to you again :")


Log in to comment.

Answer by Liana Norazmi
on 7 May 2015

May i know how to remove the lines of this image

become like this?


Log in to comment.

Answer by Aykut Kaplan
on 23 Jan 2017

Hello how do you remove the lines of this image? braches of skeleton?


Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!