如何从画线中识别脸部?

时间:2013-10-14 09:07:35

标签: graph line-drawing

线条图类似于图形,但其顶点具有x,y位置。没有交叉边缘。例如,a line drawing like this是一个线条图,其中13个顶点编号为0-12。面是一个没有“内部”路径的循环。该示例中的面孔将是

(0,1,3,2,0), (2,3,5,4,2), (4,5,8,7,4), (7,8,12,11,7) and (0,2,4,7,11,10,9,6,0)

周期(0,1,3,5,4,2,0)不是面孔,因为有一个位于其中的路径,名为(2,3)。周期(0,1,3,5,8,12,11,10,9,6,0)也不是一张脸,因为它里面有一条路径(0,2,4,7,11)。我可以使用什么算法来识别像示例中的面孔?

1 个答案:

答案 0 :(得分:0)

假设所有边都是线段;可以仅使用线段绘制每个平面图。还假设图表已连接。现在算法非常简单:

构造一个有向图,使得顶点与原始图中的相同,并且每个原始边有两个有向边,每个方向一个

从尚未使用的随机(定向)边开始。最后,顺时针选择下一个输出边缘(或逆时针也可以,也一样)。要确定哪个边缘,您必须从平面嵌入中的顶点坐标计算。您最好事先为每个顶点预先计算此边缘顺序。

在选定边的末尾继续这样做,直到到达起始顶点。那时,你已经完成了一张脸。

当没有未使用的边时,您已在图中找到所有面

或者,使用像Boost这样具有efficient implementation此类任务的库