将网格拟合到二维空间中的点

信息处理 图像处理 图像分割 霍夫变换
2022-02-01 17:39:25

我有这个问题,我在 2D 空间中有多个点。这些点的子集构成一个矩形网格。网格的某些点可能会丢失。网格包含的点的形状和数量是已知的。此外,不构成网格的其他点很少。网格的大致位置和旋转也是已知的。但我们不知道确切的位置或旋转。找到这个网格的一个好的、最重要的、有效的方法是什么?

完美的网格:

我们追求的是什么

网格可能会出现如下所示的缺失点:

场景示例 1

或者例如旋转并分成两部分,如下所示:

场景示例 2

在实际问题中,网格较大但始终为矩形,我们也可以假设网格位于数据中心周围。

这些点来自具有等宽文本的图像。缺失点和噪点是由于该图像中的眩光造成的。这些点是(通过预处理)找到的字符的中心(所以不准确)。图像中的文本总是由相同数量的字符和行组成。这个想法是重建这个网格以便能够找到丢失的字符。我们不知道哪些点是字符,哪些点不是,但我知道这可以通过分析我们在图像中找到的“斑点”来近似。

1个回答

您可以用 5 个参数表示网格:

  • (x0, y0) 表示从图像原点到网格原点的偏移量
  • (xs, ys) 表示从图像平面到网格平面的乘法因子。如果您的网格在图像平面上每 100 个像素间隔开一次,则这些值可能是 100,100
  • theta 表示网格的旋转

您可以通过改变这 5 个参数来使网格指向图像,并通过在每一步计算成本函数来优化这些参数。

一个示例成本函数将是已知点和网格点之间的总欧几里得距离。在大多数情况下,最能与给定点重叠的网格参数应该代表最佳解决方案,尤其是在您有多个“正确点”和少数“异常点”的情况下。

为了提高效率,您可以确保您的 x0 值为 [0,xs] 而您的 y0 为 [0,ys]。由于听起来您对网格的大小有所猜测,因此您可以为 xs 和 ys 输入一个不错的猜测,并限制这些值发生太大变化。