开发者

2D Interpolation of Large Irregular Grid to Regular Grid

开发者 https://www.devze.com 2023-03-28 10:12 出处:网络
I have 2048x2048 mesh of irregular data zi = f(xi, yi) which are essentially three independent sets of 2048 real values.I n开发者_如何学Pythoneed to smoothly interpolate (perhaps bicubic spline) that

I have 2048x2048 mesh of irregular data zi = f(xi, yi) which are essentially three independent sets of 2048 real values. I n开发者_如何学Pythoneed to smoothly interpolate (perhaps bicubic spline) that into a regular mesh of wi = f(ui, vi) where ui and vi are integer values from 0 to 2047.

I have tried griddata which seems to work well at images less than 1000x1000, but blows up as you get to 1500x1500 (memory qhull errors for the Delaunay Mesh evidently). I have looked at some of ndimage functions, namely geometric_transform, RectBivariateSpline and map_coordinates, but they all seem to take regularized data as input. I could be missing something and just implementing it wrong though too!

I am trying to use Python/SciPy to do what this Matlab script I have been doing using tformarray and makeresampler. Any suggestions as to what function I can use to process this large data set? Thanks!


I tried to reproduce your errors without success. Are you on a 32 bit system? I had problems with scipy/numpy and large arrays so switched to 64 bit, and have had no problems since then.

Here's the code I used to try to reproduce your error (it will generate nothing useful, but should at least experience the same errors):

y,x=indices([2048,2048],dtype='float64')
z = randn(2048,2048)
yr = y + randn(2048,2048)
xr = x + randn(2048,2048)
zn = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y)
zl = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y,interp='linear')

This works on my machine.

If you can't run a 64 bit version of python (which can be difficult depending on what OS you're using), could you break your 2048x2048 grid into 4 1024x1024 grids?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号