2014-06-18 44 views
0

我使用ndimage插值如下:ndimage map_coordinates蒙面阵列

ndimage.map_coordinates(input_data, coords, output, 2, prefilter=False) 

现在的问题是,我没有在我的整个输入数据的有效测量。所以,我有一个蒙面数组,告诉我哪些数据点是有效的。因此,在进行插值时,我只想使用有效的像素,并相应地调整权重(以确保权重总和为1)。

但是,我看到有没有简单的方法来做到这一点。我想知道是否有人知道这样做的好方法,或者可以指向我可以使用的一些库或代码。我来自C++的背景,所以仍然找到了围绕python的方法。

回答

1

这听起来像你需要专注于数据插值,然后从所需的坐标提取值。对于1D splrep和2D bisplrep是您需要检出的插值函数(A good overview)。这两种功能都可以加权,并且可以对插入的样条函数进行微调控制。

一旦用所需的权重过滤了数据,就可以使用以确定指定坐标处的值。

ndimage.map_coordinates(input_data, coords, output, prefilter=True) 

注意prefilter关键字参数没有必要,因为这是默认值

+0

的问题是,插补数据无法处理蒙面阵列。基本上,我不希望它使用不在掩码中的值。但是,我不知道该怎么做。我在scipy上看到了一些关于这个的门票,但我认为这还没有解决。 https://github.com/scipy/scipy/issues/1682 – Luca

+1

排除数据的一个好方法是将该数据加权为0. – MrAlias

+1

否则,您可以将不需要的值设置为'nan',然后可能执行类似的操作to stackoverflow.com/questions/6518811/interpolate-nan-values-in-a-numpy-array – MrAlias