3D interpolation with very large data sets

I would like to interpolate quite large 16 bit datasets. However, the code I normally use (see below) requires the input to be at least of type single and during calculation it produces 3 datasets of type double. Is there another solution for interpolation that requires less computer-power at the expense of accuracy?
>>
function [stackOut]=3Dinterpolation(stack,ny,nx,nz)
[y x z]= ndgrid(linspace(1,size(stack,1),ny),linspace(1,size(stack,2),nx),linspace(1,size(stack,3),nz)); stackOut=interp3(stack,y,x,z);
>>
Thank you, Finn

1 件のコメント

Jan
Jan 2013 年 2 月 28 日
Please specify "quite large" exactly. Some users are overwhelmed by 1000 elements already, some can bear billions.

サインインしてコメントする。

回答 (1 件)

Jan
Jan 2013 年 2 月 28 日

0 投票

Inside INTERP3 no magic things happen. I suggest to take a look into the code, copy what you need, and formulate it such that it acceptes your input type.
Btw., what does "16 bit dataset" exactly mean?

1 件のコメント

Finn
Finn 2013 年 3 月 1 日
I am working with 3D image stacks with 1 billion voxels of type uint16. I had a look into the INTERP3 code. Since this seems quite complex (..at least to me) I will stick to the current code and will use another computer for the calculations (64bit).
Best regards, Finn

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeInterpolation についてさらに検索

製品

質問済み:

2013 年 2 月 28 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by