简化凸包

时间:2016-07-16 14:05:37

标签: algorithm opencv

我的问题如下: 我有一个凸起的船体,看起来像这样: Raw convex hull

我想将非常接近的点组合在一起,由某种形式的平均值表示,例如,它可以是均值或中值点。 averaged convex hull

我更专注于如何进行分组。

如何系统地执行此分组?

我理解这似乎是一个非常简单的问题,答案显而易见。我的主要问题是试图解决这个问题我最终会遇到一些极端情况,例如答案会根据我在船体上的起点而改变。例如,如果我从红线开始并按顺时针方向工作,我最终会(如果我没有试图抓住角落的情况):

starting from here enter image description here

我在这方面做了很多次尝试,每当我重新考虑我的想法时,我最终得到了一个感觉笨拙的新角落案例。我习惯于找到解决问题的最不直观的方法,所以我认为最好问一个社区。我现在遇到的问题的一个比较例子是我被要求在排序的数组中找到一个元素,而我最初正在进行线性搜索,我有一种直觉,那里有更好的东西。

我无法找到我想要的研究结果。我发现了船体简化算法,但它改变了船体的形状太多,不符合我的程序目标。

我将在最后添加一条说明,我正在使用OpenCV和C ++在我正在处理的项目上生成凸包。以防这是一个值得细节的事情(以及为什么我将OpenCV添加为标签)。

1 个答案:

答案 0 :(得分:3)

考虑使用Douglas–Peucker algorithm

旨在简化折线,抛弃不太重要的点。

感谢Berriel的补充:它在OpenCV中实现:approxPolyDP

enter image description here