【发布时间】:2013-08-06 03:46:31
【问题描述】:
我正在做一些工作(解释起来太复杂了),我的任务之一是我需要将平滑多边形的光栅图像转换为骨架。所以我需要做这样的事情:
我有光栅图像(在左侧),我想要一个由点和边(在右侧)组成的图形来表示图像。
我读过有关算法的文章,尤其是 Steven Skiena 的一本书,他在书中告诉使用“刷火”算法,他将其解释为“每个循环,遍历边缘上的每个点,用于碰撞的边缘在骨架上添加一个点并删除剩余的点,继续下一个循环,直到只剩下骨架”但是我可以在网上找到的关于这个算法的所有信息都是关于机器人的一些寻路算法,我不明白如何应用它在这里(如果我只有填充/空白像素的坐标,基本上我怎么知道“边缘”)。
我查看了 CGAL 库和它的骨架演示,但是当多边形有很多顶点时效果不佳,因此只需将边界上的每个顶点转换为多边形的顶点,然后将其提供给算法即可不会产生好的结果。
我希望这一定是一个通用算法,因为该任务似乎很基本,但我不想发明轮子,我找不到任何关于该主题的内容(可能是因为我不知道正确的关键字)
【问题讨论】:
-
您应该尝试二进制图像骨架化,然后通过霍夫变换进行线检测。例如,如果您使用 opencv 会更容易,但也可以实现这些。