前言
个人感觉骨架提取提取的就是开运算过程的不可逆。
一.算法步骤
1.算法步骤
首先上一下比较官方的算法步骤:
1.获得原图像的首地址及图像的宽和高,并设置循环标志1
2.用结构元素腐蚀原图像,并保存腐蚀结果
3.设置循环标志为0,如果腐蚀结果中有一个点为255,即原图像尚未被完全腐蚀成空集,则将循环标志设为1.
4.用结构元素对腐蚀后的图像进行开运算(消除小的白色区域),并求取腐蚀运算与开运算的差(得到消除的白色区域)
5.用[4]中求得的结果与之前求得的骨架进行并集运算,以获得本次循环求得的骨架
6.把本次循环中保存的腐蚀结果赋值给原图像
7.重复步骤[2]-[6],直到将原图像腐蚀成空集为止。
最终求得的骨架就是结果。
2.分析
作者的理解是这样的:
输入:img(二值图)
输出:out(和img一样shape的图像,初始化是全0)
while img中有像素值为255(在这个循环里面,一直腐蚀我们的二值图,直到全部为黑色):
腐蚀img图像
对img开运算
img2=开运算前的图像减去开运算后的图像
out+=img2
输出out
首先说一下开运算,就是对图像先做腐蚀再做膨胀。上面一个核心点就是这一步(img2=开运算前的图像减去开运算后的图像),在这里为什么说个人感觉骨架提取提取的就是开运算过程的不可逆呢?我们对这个开运算过程分析一下ÿ