隔离三维数据点的策略

时间:2015-09-10 20:32:47

标签: python numpy scipy nearest-neighbor convex-hull

我有两组积分,一组来自分析,另一组我将用于分析数据的后处理结果。

黑色的分析数据是分散的。 Scattered analysis data points, viewed from +Z.

用于结果的点是红色的。 Regular grid of result data points.

以下是同一图中的两组: enter image description here

我遇到的问题是:我将插入到红点上,但正如您所看到的那样,红色点落在黑色数据集的空白区域内。插值导致那些点处存在非零值,但在最终数据集中这些值必须为零。

我一直在考虑将这些值设为零的几种策略。以下是几个没有特别的顺序:

  1. 找到一个凸包,其顶点仅包含黑色数据点,并且仅包含凸集内的红色数据点。此外,该船体的面积应该最大化,同时仍然符合这两个标准。
  2. 事实证明这很难实现,主要是因为必须选择从凸包的迭代搜索中排除哪些黑色数据点。

    1. 使用单个值(如1或0)为数据集添加额外维度,因此两者都可以是同一数据集的一部分,但仍可区分。使用kNN(最近邻居)算法仅选择空隙中的红点。基本思想是空洞中的红点将具有最接近的n(6?)个最近邻居,这些邻居属于他们自己的集合。由空边界分隔的红色数据点将具有不同的量,并且最后,从边界移除的至少一个步骤的红点将具有几乎所有黑色数据集邻居。我在这种方法中看到的现有算法返回索引或数组掩码,这两者都是一个很好的解决方案。我还没有尝试过这个。

    2. 从用于创建黑色数据集的SolidWorks模型中手动提取边界点。没有这么多级别。这必须手动完成,z级别按z级别进行,而我显示的图片只代表实际全套的一小部分。

    3. 通过对我在视觉上确认感兴趣的红色数据点子集进行多次细化来手动创建蒙版。还有,没有。除非我的选项用完了。

    4. 如果这是一个明确的解决方案的问题,那么我没有看到它。我希望提议的解决方案2将成为一个解决方案,因为实际看起来它实际上是最有趣的,并且可以看到它的实际效果。无论哪种方式,就像标题所说的那样,我仍然在寻找解决这个问题的策略方向。关于我唯一确定的是Python是正确的工具。

      修改 分析数据包含x,y,z和3电场分量值Ex,Ey和Ez。黑色数据集中的空隙位于金属内部,因此电位没有变化,换句话说,电场值都是零。

      此图像使用scipy的griddata使用Ex组件的线性插值显示单个z层。黑色椭圆是该中心跑道形空隙的空隙边界的粗糙指示器。您可以看到椭圆内部有红色和蓝色(对于x方向上的+和 - E场)。它应该为零(在该图中为绿色)。完成的数据将用于跟踪带电粒子束,因此如果其中一个粒子的路径实际进入空隙,则执行跟踪的软件只能判断电势是否保持不变,即它知道路径穿过坚固的金属,它丢弃了那条路。

      enter image description here

      如果虚空中存在电场,粒子追踪软件并不知道某些结构存在而且发生了不良事件。

0 个答案:

没有答案