我已经看到了很多关于算法基于什么的解释,但我似乎无法找到中轴转换本身的任何实际代码(伪代码或某种语言)。
对于某些情况(例如具有离散角的多边形),它可以简化为delaunay三角形,但我更关心的是你有一个blob(例如人类被跟踪)并想要计算它骨架。
这个伪代码看起来像什么?
答案 0 :(得分:5)
Here
您拥有pymorph library
的代码:
基本上是:
def mmskelm(f, B=None, option="binary"):
from string import upper
from Numeric import asarray
if B is None: B = mmsecross()
assert mmisbinary(f),'Input binary image only'
option = upper(option)
k1,k2 = mmlimits(f)
y = mmgray(mmintersec(f, k1),'uint16')
iszero = asarray(y)
nb = mmsesum(B,0)
for r in range(1,65535):
ero = mmero( f, nb)
if mmisequal(ero, iszero): break
f1 = mmopenth( ero, B)
nb = mmsedil(nb, B)
y = mmunion(y, mmgray(f1,'uint16',r))
if option == 'BINARY':
y = mmbinary(y)
return y
当然它使用同一个包中的其他功能。
的示例
HTH!