提取图像的骨架(Skeleton)算法

本文介绍了Khalid Sheed的K3M算法,这是一种用于图像细化和骨架提取的方法。该算法通过迭代腐蚀边界,检查3*3邻域内的点,根据特定条件删除或保留点,最终得到图像的骨架。算法包括六个阶段,对不同数量相邻点的点进行处理。测试结果显示了算法的有效性。参考了多个来源以深入理解算法细节。
摘要由CSDN通过智能技术生成

图像的骨架似乎没有严格的数学定义,可认为是图像细化(Thinning)的产物(中轴可以看作一种骨架,其有严格的数学定义)。目前已经有许多细化算法,这些算法得到的骨架可能略有差异。本文实现了Khalid Sheed 的 K3M算法。该算法属于迭代腐蚀边界的一类算法,该类算法的思想是,假定从二值图像中物体的边界处同时开始燃烧,物体就会被逐步细化,但在燃烧过程中要保证满足一定条件的点被保留或者被“烧掉”,以确定燃烧结束后,剩下的最后一像素宽的图像为图像的骨架。这些条件的确定没有统一的标准,各个算法采取了不同的方案。一般来讲,为了满足计算的速度要求和算法的准确,迭代中算法会对图像边界上某点的3*3邻域内进行检查,判断是否满足要求。

K3M算法在每次迭代中需要进行六次检查

Phase 0. 标记出图像的边界,

Phase 1. 如果该点的邻域中有3个点(非零,以下皆如此)相邻,删除该点

Phase 2. 如果该点的邻域中有3或4个点相邻,删除该点。

Phase 3. 如果该点的邻域中有3,4,5个点相邻,删除该点。

Phase 4. 如果该点的邻域中有3,4,5,6个点相邻,删除该点。

Phase 5. 如果该点的邻域中有3,4,5,6,7个点相邻,删除该点。

Phase 6. 剩余的边界点取消标记,如果Phase 5中没有点被修改,停止迭代,否则返回Phase 0。

具体的步骤可以阅读论文:http://matwbn.icm.edu.pl/ksiazki/amc/amc20/amc2029.pdf。论文中算法实现的一个小技巧是,对邻域中的8个点的值看作二进制,即二进制编码,这样不同的值就对应邻域中不同的状态。迭代中通过计算即可判断该点是否满足条件,是否可以删除。具体细节请移步阅读论文。


算法的测试结果如下:


参考:

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值