Unification Ct Scan Voxel Size By Using Interpolation In Python
I have used
interp2 in Matlab, such as the following code, that is part of @rayryeng's answer in: Three dimensional (3D) matrix interpolation in Matlab:
d = size(volume_image) [X,Y] = meshgrid(1:1/scaleCoeff(2):d(2), 1:1/scaleCoeff(1):d(1)); for ind = z %Interpolate each slice via interp2 M2D(:,:,ind) = interp2(volume_image(:,:,ind), X, Y); end
Example of Dimensions:
The image size is 512x512 and the number of slices is 133. So: volume_image(rows, columns, slices in 3D dimenson) : 512x512x133 in 3D dimenson X: 288x288 Y: 288x288 scaleCoeff(2): 0.5625 scaleCoeff(1): 0.5625 z = 1 up to 133 ,hence z: 1x133 ind: 1 up to 133 M2D(:,:,ind) finally is 288x288x133 in 3D dimenson
Aslo, Matlabs syntax for size: (rows, columns, slices in 3rd dimenson) and Python syntax for size: (slices in 3rd dim, rows, columns).
However, after convert the Matlab code to Python code occurred an error,
ValueError: Invalid length for input z for non rectangular grid:
for ind in range(0, len(z)+1): M2D[ind, :, :] = interpolate.interp2d(X, Y, volume_image[ind, :, :]) # ValueError: Invalid length for input z for non rectangular grid
What is wrong? Thank you so much.
interp2 has as arguments:
result = interp2(input_x, input_y, input_z, output_x, output_y)
You are using only the latter 3 arguments, the first two are assumed to be
input_x = 1:size(input_z,2) and
input_y = 1:size(input_z,1).
scipy.interpolate.interp2 is quite different: it takes the first 3 input arguments of the MATLAB function, and returns an object that you can call to get interpolated values:
f = scipy.interpolate.interp2(input_x, input_y, input_z) result = f(output_x, output_y)
Following the example from the documentation, I get to something like this:
from scipy import interpolate x = np.arange(0, volume_image.shape) y = np.arange(0, volume_image.shape) f = interpolate.interp2d(x, y, volume_image[ind, :, :]) xnew = np.arange(0, volume_image.shape, 1/scaleCoeff) ynew = np.arange(0, volume_image.shape, 1/scaleCoeff) M2D[ind, :, :] = f(xnew, ynew)
[Code not tested, please let me know if there are errors.]
- → What are the pluses/minuses of different ways to configure GPIOs on the Beaglebone Black?
- → Django, code inside <script> tag doesn't work in a template
- → React - Django webpack config with dynamic 'output'
- → GAE Python app - Does URL matter for SEO?
- → Put a Rendered Django Template in Json along with some other items
- → session disappears when request is sent from fetch
- → Python Shopify API output formatted datetime string in django template
- → Shopify app: adding a new shipping address via webhook
- → Shopify + Python library: how to create new shipping address
- → shopify python api: how do add new assets to published theme?
- → Access 'HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT' with Python Shopify Module