How to get the centerline of a binary region
31 views (last 30 days)
Show older comments
I have a binarize image below, I am trying to find the centerline of the image such as that in red on the binarize image. I did use the bskel function but get branches. I am hoping to elimated (prone or remove) all branches.
Any suggestions will be most appreciated. Any other way to do this another than using bskel will be great too.
0 Comments
Accepted Answer
DGM
on 17 Oct 2021
There's this.
A = imread('arc.png')>128;
B = bwmorph(A,'skel',inf); % skeletonize
B = imfill(B,'holes'); % get rid of any tiny closed paths
B = bwmorph(B,'skel',inf); % finish skeletonizing
% remove endpoints until only two are left
while true
e = bwmorph(B,'endpoints');
if nnz(e)>2
B = B & ~e;
else
break;
end
end
imshow(B)
0 Comments
More Answers (1)
KSSV
on 17 Oct 2021
You can get the indices of white pixels using find and to the data you can try fitting a line or quadratic equation using polyfit.
[y,x] = find(I) ;
p = polyfit(x,y,2) ;
xi = linspace(min(x),max(x)) ;
yi = polyval(p,xi) ;
plot(X,y,'.k')
hold on
plot(xi,yi,'r')
5 Comments
Woj
on 11 Jan 2023
Hi. Sry for the stupid question, but im very very new to matlab. I have exactly the same problem, but i dont understand how do i find the white pixels?
thank you
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!