计算多边形的最小面积矩形
我需要计算多边形周围的最小区域矩形( 最小可能的矩形 )。
我唯一的输入是多边形中的点数。
我也有积分的坐标。
将旋转卡尺算法用于凸多边形,否则使用凸包。 您当然需要多边形中点的坐标,而不仅仅是点的数量。
这称为最小边界框 ,它是OCR包中使用的最基本算法。 您可以使用OpenCV包中的Rotating Calipers找到实现。 获得源代码后,请查看此文件,
cv/src/cvrotcalipers.cpp
您需要的方法是cvMinAreaRect2()
。
首先进行格拉姆扫描并获得该组点的凸包 。 然后你可以使用这里讨论的最小矩形
请遵循以下算法
- 将多边形旋转到XY平面上
- 选取1条边并将此边与X轴对齐(使用arctan)。 使用min / max x,y查找边界矩形。 计算区域并存储在列表中
- 对剪切多边形中的剩余边缘执行相同操作。
- 选择具有最小面积的矩形。
- 旋转边界矩形背面,用于步骤1和步骤2的共面反向旋转
有关详细信息,请检查链接Minimum-Area-Rectangle
显然,你需要点的坐标才能得到答案。 如果矩形与X和Y aces对齐,那么解决方案是微不足道的。 如果你想要任何角度的最小矩形,那么你需要做一些优化过程。