gpt4 book ai didi

python - 不规则点到网格python

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:50 25 4
gpt4 key购买 nike

我在尝试将 2D 不规则点转换为 Python 中的网格时遇到了一些麻烦。

作为一点背景知识,我计算了眼睛跟踪数据的平均 x,y 位置,并尝试设计一些(高阶/多项式)函数将这些点转换为空间中具有“真实”位置的网格。在下图中,我尝试获取眼动追踪数据的平均 x,y 位置(以黑色显示),并尝试将它们投影到网格的“已知”x,y 位置(以红色显示)

Averaged Data (Black), Desired Grid Points (Red)

原始数据值如下:

AvgX = [5.9249217363378444, 29.400090125634197, 189.88137522082039, 10.635691487603076, -156.27020696966224, 125.03659193723372, -168.39555447902086, 186.62552891024129, 111.90418423429169, 100.57725103088637, -76.716438908489465, 6.5688214489253474, 146.18743315136786, -77.676030038490595, 175.21590859125735, -55.931989461463523, -175.71204466459488, 97.750258696640429, 4.4562688886630015, -71.385022755147517, 191.47832859030729, -83.713605575394325, 100.81203864776603]
AvgY = [168.67521806680125, 19.421198111140864, -221.60630388937381, 79.730784050599141, 195.43389670921019, 98.926386207770904, -85.356440304228784, -39.574253598391287, 175.70610514354374, -113.76915782872061, -187.40510724928777, -86.989048811265221, -118.46908736453032, 8.054366530368533, 51.680353870737072, -81.628307614654986, 18.393403891381649, -23.678128041659768, -193.94235177110983, 100.69985383522851, 145.38153797528696, 190.0494081938453, -202.22859560880681]
GridX = [0.0, 0.0, 185.635467529, 0.0, -185.635467529, 92.8177337646, -185.635467529, 185.635467529, 92.8177337646, 92.8177337646, -92.8177337646, 0.0, 185.635467529, -92.8177337646, 185.635467529, -92.8177337646, -185.635467529, 92.8177337646, 0.0, -92.8177337646, 185.635467529, -92.8177337646, 92.8177337646]
GridY = [188.696807861, 0.0, -188.696807861, 94.3484039307, 188.696807861, 94.3484039307, -94.3484039307, 0.0, 188.696807861, -94.3484039307, -188.696807861, -94.3484039307, -94.3484039307, 0.0, 94.3484039307, -94.3484039307, 0.0, 0.0, -188.696807861, 94.3484039307, 188.696807861, 188.696807861, -188.696807861]

根据我的理解,我需要应用某种多项式函数将平均数据映射到已知网格。但是,我不知道该怎么做。

当平均点(蓝色)接近目标网格点(红色)时,舍入起作用。然而,当平均点比实际目标网格点更接近任意网格点时,这不起作用。以整个平均网格向下移动为例。

Example Image

在此示例中,1. 红点是目标位置 2. 黑点是平均位置 3. 蓝点是舍入时的变换 4. 橙色箭头是平均点在舍入时的移动方式 5. 绿色箭头是我如何尝试转移数据。

最终,我想放入一些随机点(原始数据),并对该点应用一些函数,以将其重新定位到给定校准点的“实际”位置。我猜测我需要在点的每一行和每一列上应用一些样条函数或高阶多项式函数来生成一些轮廓来插值我给这个函数的原始数据输入。

最佳答案

由于您的网格由两个数字(x 中的步长和 y 中的步长)来表征,因此我们可以应用一个简单的转换来对数据进行四舍五入:

import numpy as np

DELTA_X = 92.8177337646
DELTA_Y = 94.3484039307

def gridify(coords, spacing):
coords = np.array(coords)
return np.round(coords / spacing) * spacing

x = gridify(AvgX, DELTA_X)
y = gridify(AvgY, DELTA_Y)

这给出:

enter image description here

关于python - 不规则点到网格python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com