我有点序列给出的多边形 我需要应用以下规则:
(如果最接近特定问题,那么我在OpenCV中找到对象的轮廓,那么它们应该很好画)
我需要做这样的事情:
答案 0 :(得分:2)
我会使用DP点减少来解决这个问题。这个例程有几种不同的风格,最常见的并不是你想做的最好的,但最终这种方法会带来最好的质量。
经典的DP操作采用一系列点形成一条多义线,并删除任何不会破坏形状超出某个因素的点。此因子是基于您的数据的度量单位,因此在您的情况下,它可能以像素为单位。您可以想象,选择因子是使用DP最困难的部分,除非您只想从多边形中删除可以轻松量化的点并不重要。
在你的情况下,并且花了很多时间,你想要删除对多边形形状有贡献的点。您应该能够获取DP的典型递归示例,并在第一次迭代通过点后使其中断,以便一次删除一个点。然后,您将对您的形状进行评分,看它是否符合您的要求。如果它没有得分完美,你移除另一个点并重新得分,直到它或你只剩下三个点。如果没有完美的分数,你可以采用最佳分数的形状,并且可能有第二种算法迫使它满足要求。
http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm
答案 1 :(得分:0)
你所要求的东西似乎是微不足道的,并没有那么明确。需要更多背景信息。
我会尝试两种方法:
在多边形上叠加一个方格,并保持足够填充的方格。
对形状进行骨架化(http://en.wikipedia.org/wiki/Topological_skeleton),清理并将骨架分成大部分水平/垂直线段;然后用真正的水平/垂直笔画替换这些片段。