Поэлементная оценка функции для 3d-интерполяции в Python - PullRequest
0 голосов
/ 27 мая 2019

У меня есть трехмерный массив данных, полученных с микроскопической картины, размеры (16,24,20).Я хочу интерполировать изображение в более мелкую сетку, как вы сделали бы в Matlab с

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq)

Я пробовал следующее:

# Get the dimensions of the picture
   x_length, y_length, z_length=np.shape(im)

# Create a mesh with the same dimensions and spacing

   MainGrid_x=np.arange(0, x_length, 1)

   MainGrid_y=np.arange(0, y_length, 1)

   MainGrid_z=np.arange(0, z_length, 1)

   X,Y,Z=np.meshgrid(MainGrid_y,MainGrid_x,MainGrid_z)

# Create a 3D interpolating function

   from scipy.interpolate import RegularGridInterpolator as rgi

   interp_fun= rgi((MainGrid_x,MainGrid_y,MainGrid_z), im)

# And define a finer grid, where I can evaluate the function

   interp_factor=2

   FineGrid_x=np.arange(0, x_length, 1/interp_factor)

   FineGrid_y=np.arange(0, y_length, 1/interp_factor)

   FineGrid_z=np.arange(0, z_length, 1/interp_factor)

   Xx,Yy,Zz=np.meshgrid(FineGrid_y, FineGrid_x, FineGrid_z)

Однако, когда дело доходит до оценки, кажется, не существует простого способа сделать это

InterpIm=interp_fun(FineGrid_y, FineGrid_x, FineGrid_z)

возвращает ошибку " call () принимает от 2 до 3 позиционных аргументов, но 4 было дано"

и так же

InterpIm=interp_fun(Xx,Yy,Zz)

Есть ли какой-нибудь простой способ оценки моей интерполяционной функции в тонкой трехмерной сетке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...