graphics - 计算平均网格大小

标签 graphics statistics computational-geometry

我正在尝试计算以下一组点的平均像元大小,如图所示: grid 。图片是使用gnuplot生成的:

gnuplot> plot "debug.dat" using 1:2

这些点几乎在矩形网格上对齐,但不完全对齐。沿着 X 或 Y 似乎存在 10-15% 的偏差(抖动?)。如何有效地计算瓦片中的适当分区,以便每个瓦片实际上只有一个点,大小将表示为 (瓷砖,瓷砖)。我实际上使用这个词是因为 10-15% 的偏差可能已经移动了另一个相邻图块中的一个点。

仅供引用,我已经手动排序(希望正确)并提取了前 10 个点:
 -133920,33480
 -132480,33476
 -131044,33472
 -129602,33467
 -128162,33463
 -139679,34576
 -138239,34572
 -136799,34568
 -135359,34564
 -133925,34562

只是为了澄清,根据上述描述的有效磁贴是 (1435,1060),但我真的在寻找一种快速的自动化方式。

最佳答案

让我们仅对 X 坐标执行此操作:

1)对X坐标进行排序

2) 查看两个后续 X 坐标之间的增量。这些增量将分为两类 - 它们对应于两列之间的空间,或者对应于同一列内交叉之间的空间。您的目标是找到一个阈值,将长空间与短空间分开。这可以通过找到一个阈值来完成,该阈值将增量分为两组,其均值相距最远(我认为)

3)一旦你有了阈值,把点分成几列。一列以与您之前测量的阈值相对应的增量开始和结束

4) 计算每个检测列的平均位置

5) 在后续列之间取增量。现在,问题是您可能会得到一个会破坏您的列的杂散点。使用中位数来消除杂散。

6) 你应该对你的 gridX 有一个可靠的估计

例如,使用您的数据,查看 X 轴:

-133920 -132480 -131044 -129602 -128162 -139679 -138239 -136799 -135359 -133925

排序 + 增量:
5 1434 1436 1440 1440 1440 1440 1440 1442

在这里你可以看到小 (5) 和大 (1434 及以上) delta 之间有一个非常明显的阈值。 1434将在这里定义您的空间

将点拆分为列:
-139679|-138239|-136799|-135359|-133925 -133920|-132480|-131044|-129602|-128162
       1440   1440    1440    1434      5    1440    1436    1442    1440

几乎所有的点都是单独的,除了两个-133925 -133920。

平均网格线位置为:
-139679 -138239 -136799 -135359 -133922.5 -132480 -131044 -129602 -128162

排序的增量:
1436.0 1436.5 1440.0 1440.0 1440.0 1440.0 1442.0 1442.5

中位数:
1440

这是您的小数据集的正确答案,恕我直言。

关于graphics - 计算平均网格大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27228180/

相关文章:

graphics - 开罗路径上的 bool 运算?

r - 如何在 R 中使用线性回归和置信区间?

r - 使用 rlm 计算稳健回归的 r 平方是否合适

javascript - 计算几何Javascript

math - 是否存在凸多边形的周长大于其边界框的周长的情况?

graphics - 线段或边相交查找算法的时间复杂度

c# - 在 c# winforms 中使用 paint 方法时如何防止闪烁?

javascript - 如何在街机游戏中实现环绕效果?

c++ - 简化四面体网格的库

R - 如何根据同一行另一列的值从一列中获取值