Matlab提取二值图像骨架、骨骼

文章介绍了在Matlab中使用bwskel()和bwmorph()函数对二值图像进行骨架提取的方法,包括二值化、骨架化以及去除毛刺的过程。通过示例代码展示了如何利用MinBranchLength参数消除毛刺,并对比了两种方法的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇文章对Matlab提取二值图像骨架的方法进行总结:

方法一:bwskel()

(1) 首先需要读取待处理图像,并对其进行二值化处理。

I = imread('2.jpg');
I=rgb2gray(I);%图像灰度化
figure;imshow(I)
title('原始图像','FontSize',14)
%骨架化二值图像:为了使原始图像适合于骨架化,对图像进行反转,以使对象变亮而背景变暗。 然后,将结果图像二值化。
Icomplement = imcomplement(I);
BW = imbinarize(Icomplement);
figure;imshow(BW)
title('二值图像','FontSize',14)

 (2) 使用bwskel执行二值图像的骨架化

out = bwskel(BW);
figure;imshow(out)
title('骨架图像1','FontSize',14)

 

 可以看到上图红框部分存在突出的毛刺部分,可以使用MinBranchLength参数消除面积小于指定大小的毛刺。

out2 = bwskel(BW,'MinBranchLength',50);
figure;imshow(out2)
title('骨架图像2','FontSize',14)

方法二:bwmorph()

(1) 首先需要读取待处理图像,并对其进行二值化处理。方法如上。

(2) 使用bwmorph的‘skel’参数进行二值图像的骨架化,可以看到有许多的毛刺。

bw_skel=bwmorph(BW,'skel',Inf);
figure;imshow(bw_skel)
title('骨架图像3','FontSize',14)

 (3) 使用bwmorph的‘thin’参数进行二值图像的骨架化。

% result1 = bwmorph(BW,'thin',10);
result2 = bwmorph(BW,'thin',Inf);
figure;
imshow(result2)
title('骨架图像4','FontSize',14)

 

 以上就是matlab提取二值图像骨架的方法。如果有不懂的小伙伴儿,欢迎评论留言或者私信,代码订制也可私信博主。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xloserbin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值