我如何实现 Medial Axis Transform将第一张图像转换为第二张图像的算法?
(来源:algorith at www.cs.sunysb.edu)
(来源:algorith at www.cs.sunysb.edu)
C++/C# 中的哪些库支持中轴变换?
最佳答案
在互联网上有很多中轴变换的实现(我个人不使用 OpenCV 库,但我确信它有一个不错的实现)。但是,您可以轻松地自己实现它。
为了进行中轴变换,我们只需要定义一个术语:简单点。 点 (P) 是简单点,当且仅当删除 P 不会影响前景或背景的连通分量的数量。所以,你必须决定 connectivity (4 或 8)用于背景和前景 - 为了工作,为两者选择不同的一个(如果您对原因感兴趣,请在 google 上查找 Jordan property)。
可以通过依次删除简单点来实现内侧变换轴。如果没有更多的简单点,您将得到最终的骨架。如果您只有端点或非简单点,您会得到弯曲的骨架(我不知道它的英文名称很少见 - 请纠正我)。您在问题中提供了后者的示例。
使用 morphological operators 可以很容易地找到简单的点或查找表。提示:当且仅当在 3x3 局部窗口中背景中的连通分量数为 1 且前景中的连通分量数为 1 时,点是单点。
关于algorithm - 中轴变换实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7156080/