中轴变换的实际执行情况?

pic*_*ict 5 language-agnostic algorithm image-processing computer-vision computational-geometry

我已经看到了很多关于算法基于什么的解释,但我似乎无法找到中轴转换本身的任何实际代码(伪代码或某种语言).

对于某些情况(例如具有离散角的多边形),它可以简化为delaunay三角形,但我更关心的是你有一个blob(例如人类被跟踪)并想要计算它的骨架.

这个伪代码会是什么样的?

Dr.*_*ius 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
Run Code Online (Sandbox Code Playgroud)

当然,它使用同一包中的其他功能.

一个例子来自 Mathematica

在此输入图像描述

HTH!