2012-02-17 43 views
0

我得到点序列 我需要办理后续规则定的多边形:多边形平滑的条件

  • 角度必须180,90,45度;
  • if lines parallel then distanse beetwen the lines greater minVayue;
  • 多边形的方向是水平的和垂直的。

(如果最接近于一个特定的问题,然后我找到OpenCV的物体的轮廓,那么就应该是很好的借鉴)

我需要做财产以后这样的: Example

+0

那么你的问题是什么? – 2012-02-17 08:02:53

+0

这是怎么回事?或者我可以找到答案? – Famos 2012-02-17 08:30:17

回答

0

你所问的问题似乎不是微不足道的,也不是很清楚。需要更多的上下文。

我会尝试两种方法:

  • 覆盖多边形方形网格,并保持被充分地填充平方。

  • 骨骼形状(http://en.wikipedia.org/wiki/Topological_skeleton),清理,并将骨架分为大部分水平/垂直部分;然后用真正的水平/垂直笔画替换这些片段。

+0

我想骨骼化,但我现在不知道它是如何调用的。谢谢你会尝试 – Famos 2012-02-17 09:57:10

2

我会用DP点减少来解决这个问题。这个例程有几种不同的风格,最常见的不是最适合你想要做的,但最终这种方法将导致最好的质量。

传统的DP操作需要一组点,它们形成一条多边线并移除任何不会超出特定因子破坏形状的点。这个因素是基于你的数据的度量单位,所以在你的情况下它可能会以像素为单位。正如你可以想象的那样,选择这个因子是使用DP最困难的部分,除非你只是想从多边形中删除点,你可以很容易量化并不重要。

在你的情况下,我的很多时间,你想要删除最有助于多边形形状的点。您应该能够采用DP的典型递归示例,并在第一次迭代后通过这些点将它断开,以便一次删除一个点。然后你会得到你的形状,看看它是否符合你的要求。如果它没有得到完美的成绩,你可以删除另一个成绩并重新打分直到成绩或者你只剩下三分。如果没有完美的分数,你可以采用最佳分数的形状,也许有第二种算法,迫使它满足要求。

http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm

+0

非常感谢,我不知道这个算法 – Famos 2015-03-01 13:24:24