0

我想知道是否有人每个试图适合具有固定大小的矩形到给定的一组点。适合固定矩形点集

想象一下,你有一组没有排序的点,并不总是显示一个矩形的完整壳体。下图应显示问题: enter image description here

点集可能会有所不同,点可能会丢失。 我想找到最小二乘法来找到固定边长的最佳拟合矩形。

也许我可以先找到回归线,但接缝可以采取不同的方式。

我会很感激任何一种提示。

+0

矩形是直立的吗? – Aguy

+0

不可以旋转 – GeoGecco

+0

有三个自由度。用一些非线性最小二乘解算器找到解决方案应该不会太难。也许从点的质心和主轴开始作为初始猜测。 –

回答

0

只是解决方案的概要:

  1. 的高度和你的长方形的宽度是固定的,所以你可以用三个参数(X0,Y0,THETA)定义它:说左下角和旋转。
  2. 使用像pnt2line距离函数这里给出http://www.fundza.com/vectors/point2line/index.html
  3. 现在写一个包装函数:对于每个点,从矩形的四边计算距离,并指定distance[i]为最小这四个距离
  4. 使用这distance阵列在scipy.optimize.curve_fit找到你最合适的参数
0

如果有异常值,RANSAC可以成为你的好朋友。要执行一个合适的,你需要从不同侧面取得三分。因此,只需选取三个随机点并假设其中两个属于一侧,另一个属于正交侧。找到姿势参数没有什么大不了的。您可以根据@VBB描述的距离函数来计算拟合误差(每个点采用最短的距离)。

根据您的口味,您可以使用相同的三个点,任意的侧面分配,或尝试不同的任务,并保持最佳状态。

对于最后贴合的内圈,你可以使用一个技巧。

  • 将每个inlier分配给最接近的一边;

  • 将各边的簇集中在其各自的质心上;

  • 将所有其他边的簇旋转90°;

  • 这会产生一个具有单一方向的群集;执行普通线路拟合以获得该方向。

0

定义在位置P的固定大小的矩形R(P)和点Q之间的距离d(R(P),Q)是​​最短直线连接两个的长度。这很容易定义为案例的功能推理。

现在只需使用某种形式的梯度下降来找到最优P *,使得点集中Q的d(R(P *),Q)^ 2的总和最小化。