Search code examples
matlabimage-processingsignal-processing3d-modellingmultidimensional-array

resizing 3D matrix (image) in MATLAB


I have a 3D matrix (MxNxK) and want to resize it to (M'xN'xK') (like imresize in matlab). I am using image pyramid, but its result is not very accurate and need a better one. Any solution?


Solution

  • You could use interp3 (since you want to interpolate 3D data):

    im=rand(2,3,4); %% input image
    ny=3;nx=3;nz=5; %% desired output dimensions
    [y x z]=...
       ndgrid(linspace(1,size(im,1),ny),...
              linspace(1,size(im,2),nx),...
              linspace(1,size(im,3),nz));
    imOut=interp3(im,x,y,z);