中轴变换实施

时间:2011-08-23 03:51:52

标签: algorithm image-processing computer-vision ocr

如何实现Medial Axis Transform算法将第一张图像转换为第二张图像?

thinning-L.gif http://www.cs.sunysb.edu/~algorith/files/thinning-L.gif thinning-R.gif http://www.cs.sunysb.edu/~algorith/files/thinning-R.gif

C ++ / C#中的哪些库支持Medial Axis Transform?

2 个答案:

答案 0 :(得分:5)

互联网上有许多中轴转换的实现(我个人不使用OpenCV库,但我确信它有一个不错的实现)。但是,您可以自己轻松实现它。

为了执行中轴变换,我们只需要定义一个术语:简单点。 如果去除P不影响前景或背景的连通分量的数量,则点(P)是简单的点。所以,你必须为背景和前景决定connectivity(4或8) - 为了工作选择不同的两者(如果你感兴趣的原因,在谷歌上查找Jordan属性)。< / p>

Examples for simple and non-simple points

可以通过后续删除简单点来实现中间变换轴。如果没有更简单的点,你会获得最终的骨架。如果你只有端点或非简单点,你会得到弯曲的骨架(我不知道它的英文名称,这是罕见的 - 请纠正我)。您在问题中提供了后者的示例。

使用morphological operators或查找表可以轻松实现查找简单点。提示:如果背景中连接组件的数量为1,并且前景中连接组件的数量在3x3本地窗口中为1,则点是简单点。

答案 1 :(得分:0)

此C库中提供了一个中轴转换:http://www.pinkhq.com/ 还有很多其他相关的功能。 查看此功能:http://www.pinkhq.com/medialaxis_8c.html