不规则点到网格python

不规则点到网格python,python,grid,2d,transform,interpolation,Python,Grid,2d,Transform,Interpolation,在Python中将2D不规则点转换为网格时,我遇到了一些麻烦 作为一个背景,我计算了眼球跟踪数据的平均x,y位置,并试图设计一些(高阶/多项式)函数,将这些点转换为空间中具有“真实”位置的网格。在下图中,我尝试获取眼球跟踪数据的平均x,y位置(以黑色显示),并尝试将它们投影到网格的“已知”x,y位置(以红色显示) 原始数据值如下所示: AvgX = [5.9249217363378444, 29.400090125634197, 189.88137522082039, 10.635691487

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

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

原始数据值如下所示:

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]
根据我的理解,我需要应用某种多项式函数将平均数据映射到已知网格。然而,我不知道该怎么做

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

在本例中,1。红色点是目标位置2。黑点是平均位置3。蓝色点是四舍五入时的变换。橙色箭头表示平均点如何随舍入5移动。绿色箭头是我试图改变数据的方式


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

如果你的网格是规则的,为什么不四舍五入到最接近的100或任何间距


由于网格由两个数字表示——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)
其中:


谢谢!当平均点(蓝色)靠近目标栅格点(红色)时,此选项有效。但是,当平均点比实际目标网格点更接近任意网格点时,这不起作用。以整个平均网格下移为例!。在本例中,1。红色点是目标位置2。黑点是平均位置3。蓝色点是四舍五入时的变换。橙色箭头表示平均点如何随舍入5移动。绿色箭头是我试图改变数据的方式。我想我的问题是这些数据代表校准。最后,我想输入一些随机点(原始数据),并对该点应用一些函数,以将其重新定位到给定校准点的“实际”位置。我猜我需要在每一行和每一列点上应用一些样条曲线或高阶多项式函数来生成一些轮廓,以插值我给出这个函数的原始数据输入。