任意多边形中的最大内接矩形

Posted

技术标签:

【中文标题】任意多边形中的最大内接矩形【英文标题】:largest inscribed rectangle in arbitrary polygon 【发布时间】:2015-02-25 11:00:20 【问题描述】:

我使用 OpenCV Stitching 已经有一段时间了。现在我想做拼接的最后一步:裁剪图像。这导致在一般多边形中找到最大的内接轴平行矩形。

我已经用谷歌搜索并找到了一些答案 (How do I crop to largest interior bounding box in OpenCV?)。尽管程序运行缓慢(裁剪图像需要 15 秒,将 36 张 1600x1200 图片拼接成 1 张全景图只需要 47 秒),但输出图像的质量还是不错的,因为使用的算法时间复杂度很差(对于轮廓中的每个点,它扫描同一行/列中的所有点)。

有什么办法可以改善吗?谢谢。

P/S:我也找到了这本书:

在多边形中找出面积最大的平行轴矩形

Karen Daniels 和 Victor Milenkovicz Dan Rothx 哈佛大学,

应用科学部,

计算技术研究中心,

剑桥,马萨诸塞州 02138。

1995 年 6 月

但我不知道将理论实现到代码中:v

【问题讨论】:

我想在类似的问题中指出this 解决方案。 【参考方案1】:

您可能不想实现该算法;这将需要相当长的时间,而且我怀疑您会对性能感到失望,尽管有大 O 限制。

听起来好像您正在使用栅格,因此您可以在二进制矩阵中使用linear-time algorithm for finding the largest rectangle of zeros。

【讨论】:

可以找到一个可能的解决方案here。感谢您的链接!【参考方案2】:

也许看看这个largest interior rectancle implementation。它使用this paper 中描述的算法。一个示例图像是

目前我正在将裁剪功能实现到opencv stitching tool

【讨论】:

以上是关于任意多边形中的最大内接矩形的主要内容,如果未能解决你的问题,请参考以下文章

在其他多边形中找到最大空矩形的算法

OpenCV中的四边形运算(一)——最小外接矩形

最小外接矩形的简介

如何寻找已知轮廓的最大内接圆

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

UVA - 11277 Cyclic Polygons(二分)