计算多边形的最小面积矩形

时间:2009-08-19 05:56:04

标签: c++ c geometry java

我需要计算多边形周围的最小区域矩形(最小可能的矩形)。

我唯一的输入是多边形中的点数。

我也有这些要点的坐标。

5 个答案:

答案 0 :(得分:8)

这称为Minimum Bounding Box,它是OCR包中使用的最基本算法。您可以使用OpenCV包中的旋转卡尺找到实现。获得源代码后,请查看此文件

cv/src/cvrotcalipers.cpp

您需要的方法是cvMinAreaRect2()

答案 1 :(得分:5)

对凸多边形使用rotating calipers算法,否则使用凸包。您当然需要多边形中点的坐标,而不仅仅是点数。

答案 2 :(得分:1)

首先执行grahm-scan并获取该组点的convex hull。然后你可以使用像minimum rectangle discussed here

这样的东西

答案 3 :(得分:1)

遵循以下算法

  1. 将多边形旋转到XY平面
  2. 选取1条边并将此边与X轴对齐(使用arctan)。使用min / max x,y查找边界矩形。计算区域和存储在列表中
  3. 对剪裁多边形中的剩余边缘执行相同的操作。
  4. 选择具有最小面积的矩形。
  5. 旋转边界矩形向后旋转,用于步骤1和步骤2的共面反向旋转
  6. 了解更多详情,请查看链接Minimum-Area-Rectangle

答案 4 :(得分:-1)

显然,您需要点的坐标才能得到答案。如果矩形与X和Y aces对齐,那么解决方案是微不足道的。如果你想要任何角度的最小矩形,那么你需要做一些优化过程。