寻找左上和右下点(C ++)

时间:2012-11-22 07:16:28

标签: c++ polygon

我正在寻找一些我正在进行的项目的帮助。

我正在做的是多边形近似算法。我已经获得了边界的所有点,但是为了启动算法,我需要从点集中找到左上角和右下角。所有点都存储在具有每个点的x和y坐标的结构数组中。有什么想法可以简单地循环遍历点阵列?

非常感谢任何帮助。如果您需要更多信息,请询问,我会尽我所能。

2 个答案:

答案 0 :(得分:2)

根据您的评论,左下角为min(x+y),右上角为max(x+y)

左上角:min(x+max(y)-y)

右下角:max(max(x)-x+y)

内部max是常数。

虽然这可能并不总能给出与您的眼睛一致的结果。

可以根据物体边界框角落的距离或距离的平方等构建替代指标。

另一种技术是围绕原点转换多边形,然后左上角是距离原点最远的点,但是在左上象限......这给出了关于放置(0,0)的位置的整堆选择可以是所有的平均值,可以是基于某些规则的加权平均值等。如果你选择的方式有很多变化,如果多边形来自眼睛会选择多边形,则每个结果可能会给出非常小的数字。

最后,你总是可以训练一个神经网络来挑选答案....这可能会导致一些事情(插入训练中的置信限制)%可能给出你同意的答案......但你和我可能不同意

答案 1 :(得分:0)

左上:min(x + max(y)-y)

右下:min(max(x)-x + y)

内部最大值是常数。