如何根据点坐标创建遮罩?

问题描述 投票:0回答:1

从这个情况开始:enter image description here

我想创建一个布尔掩码,其中所有外部点都被视为 True,而所有内部点都被视为 False。像这样的东西:

enter image description here

目标是创建一个包含外部点索引的数组。 这次我什至不知道从哪里开始......所以我的问题是:“这可能吗?”

如果是这样,您将如何解决这个问题(无论形状的方向和大小如何?) 我也想知道我们如何从数学角度解决这个问题?

python math matrix subset numpy-slicing
1个回答
0
投票

假设您只处理矩形和均匀分布的点,则纯数学方法如下:

  1. 将第一个网格向量
    v1
    计算为
    points[1] - points[0]
  2. 迭代点,始终计算当前点与上一个点之间的差异。将该差异与步骤 1 中的网格向量进行比较,如果不同,则您会命中新行。
  3. 获得第二行的起点后,计算第二个网格向量
    v2
    作为该起点与点列表的第一个点之间的差。
  4. 当您拥有两个网格向量时,您可以通过计算四个点
    point + v1
    point - v1
    point + v2
    point - v2
    来检查某个点是否位于边缘。如果这四个点中的任何一个不在您的列表中,则该点位于边缘。

请注意,只有当所有数字都可以准确表示时,这才有效,例如当你有整数坐标时。

© www.soinside.com 2019 - 2024. All rights reserved.