How to get the centerline of a binary region

31 ビュー (過去 30 日間)
Sam Ade
Sam Ade 2021 年 10 月 17 日
コメント済み: Woj 2023 年 1 月 11 日
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.

採用された回答

DGM
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)

その他の回答 (1 件)

KSSV
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 件のコメント
Matheus Ferreira
Matheus Ferreira 2022 年 6 月 8 日
Great, thank you! Worked perfect!
Woj
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeImages についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by