У меня есть трехмерный массив данных, полученных с микроскопической картины, размеры (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)
Есть ли какой-нибудь простой способ оценки моей интерполяционной функции в тонкой трехмерной сетке?