How to get the centerline of a binary region
31 ビュー (過去 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!