代码之家  ›  专栏  ›  技术社区  ›  user9315861

矩形多边形的正则化或规范化算法

  •  0
  • user9315861  · 技术社区  · 8 年前

    假设墙是直的(不是弯曲的)。大多数角落都是由相互成直角的墙壁形成的,但在某些情况下可能不是。

    根据用户对相机的精确程度,我为角点导出的(x,y)坐标可能超出实际角点,或者在实际相机的前面,或者不太可能是在左侧或右侧。显然,在这种情况下,当我把这些点连接起来时,我会得到奇怪的平行四边形或菱形。参见示例。

    我最初的尝试是找到彼此“接近”的角度的线段,将它们调整到相同的角度,然后重新计算顶点。然而,该算法被证明是不稳定的。

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  0
  •   Ripi2 user10587824    8 年前

    没有唯一的解决方案。

    例如,取一条边的中点到两条相邻边的垂线。这将给你两个新的角落。

    或者从一条边的端点到另一条边的垂线。

    或者计算边缘端点的角度平均值。使用此平均值和边的中点计算新的角点。

    或者。。。

    要获得最忠实的遵从性,请捕获(或计算)从每个角到其他三个角的距离。用这些距离建立三角形。然后使用从2个或3个三角形计算的角点坐标的平均值。
    生成的角度不会正好是90度,但多边形将公平地表示房间。