How to get the centerline of a binary region
조회 수: 25 (최근 30일)
이전 댓글 표시
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
채택된 답변
DGM
2021년 10월 17일
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
추가 답변 (1개)
KSSV
2021년 10월 17일
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
Woj
2023년 1월 11일
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
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!