分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow
把一个平面区域简化成图(
graph )是一种重要的结构形状表示法。利用细化技术以得到区域的骨架是常用的方法。中轴变换(
medial axis transform,MAT )是一种用来确定物体骨架的细化技术。具有边界
B 的区域
R 的
MAT 是如下确定的。对每个
R 中的点
P ,我们在
B 中搜寻与它最近的点。如果对
P 能找到多于一个这样的点(即有
2 个或以上的
B 中的点与
P 同时最近),就可认为
P 属于
R 的中线或骨架,或者说
P 是
1 个骨架点。理论上讲,每个骨架点保持了其与边界距离最小的性质,所以如果用以每个骨架点为中心的圆的集合(利用适当的量度),就可以恢复出原始的区域来。具体就是以每个骨架点为圆心,以前述最小距离为半径作圆周。它们的包络就构成了区域的边界,填充圆周就得到区域。或者以每个骨架点为圆心,以所有小于和等于最小距离的长度为半径作圆,这些圆的并集就覆盖了整个区域。
由上述讨论可知,骨架是用1个点与1个点集的最小距离来定义的,可写成:
其中距离量度可以是欧氏的、城区的、或棋盘的。因为最近距离取决于所用的距离量度,所以MAT的结果也和所用的距离量度有关。
图6.1给出一些区域和它们的用欧氏距离算出的骨架。由图(a)和图(b)可知,对较细长的物体其骨架常能提供较多的形状信息,而对较粗短的物体则骨架提供的信息较少。注意,有时用骨架表示区域受噪声的影响较大,例如比较图(c)和图(d),其中图(d)中的区域与图(c)中区域只有一点儿差别(可认为由噪声产生),但两者的骨架相差很大。
根据上式求区域骨架需要计算所有边界点到所有区域内部点的距离,因而计算量是很大的。实际中都是采用逐次消去边界点的迭代细化算法。在这个过程中有3个限制条件需要注意:① 不消去线段端点;② 不中断原来连通的点;③ 不过多侵蚀区域。
本文采用下面的方法求二值目标区域骨架。设已知目标点标记为