python 二值化细化_Python - 图像的细化(骨架抽取)

本文介绍了图像细化的概念,特别是针对二值图像的骨架抽取。细化算法主要分为基于烈火模拟和最大圆盘的方法,其中查表法是一种常用的细化技术。通过建立映射表,判断像素点周围8个点的值来决定是否删除该点,从而得到图像的骨架。此外,文章还提供了Python代码示例,展示如何实现图像细化过程。在实际应用中,需要多次迭代以消除细化过程中的问题,如细化结果不理想时会出现直线变为横线。
摘要由CSDN通过智能技术生成

1、简介

图像的细化主要是针对二值图而言。

所谓骨架,可以理解为图像的中轴,一个长方形的骨架,是它的长方向上的中轴线。

圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。

2、骨架的获取

骨架的获取主要有两种方法:

(1)基于烈火模拟

设想在同一时刻,将目标的边缘线都点燃,火的前沿以匀速向内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的结合就是骨架。

(2)基于最大圆盘

目标的骨架是由目标内所有内切圆盘的圆心组成。

5d3da8d7dcaa19ab1374e493685184c0.png

我们来看看典型的圆形的骨架(用粗线表示)。

细化的算法有很多种,但比较常用的算法是查表法。

细化是从原来的图中去掉一些点,但仍要保持原来的形状。

实际上是保持原图的骨架。

判断一个点是否能去掉是以8个相邻点(八连通)的情况来作为判断依据的,具体判断依据为:

1.内部点不能删除

2.鼓励点不能删除

3.直线端点不能删除

4.如果P是边界点,去掉P后,如果连通分量不增加,则P可删除

509ba06d559deb1f0fe8b80e62fa31a0.png

看看上面那些点,就是3*3矩阵中的中心点:

第一个点不能去除,因为它是内部点

第二个点不能去除,它也是内部点

第三个点不能去除,删除后会使原来相连的部分断开

第四个点可以去除,这个点是骨架

第五个点不可以去除,它是直线的端点

第六个点不可以去除,它是直线的端点

对于所有的这样的点,我们可以做出一张表,来判断这样的点能不能删除

310b898e4fcb1aed51e27a6f0cefc3a6.png

我们对于黑色的像素点,对于它周围的8个点,我们赋予不同的价值,若周围是黑色,我们认为其价值为0,为白色则取九宫格中对应的价值。对于前面那幅图中第一个点,也周围的点都是黑色,所以它的总价值是0,对应于索引表的第一项,前面那幅图中第二点,它周围有三个白色点,它的总价值为1+4+32=37,对应于索引表中第三十八项。

我们用这种方法,把所有点的情况映射到0-255的索引表中

我们扫描原图,对于黑色的像素点,根据周围八点的情况计算它的价值,然后查看索引表中对应项来决定是否要保留这一点。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值