How can I use 3d interpolation on Dicom images to resize them?

5 views (last 30 days)
I have used interpolation for 3D-matrix of the images. Because I want to resize the images with the size of 512x512 to 288x288 and the slices from 133 to 265. As an example in the below code:
% 3D interpolation
d = size(volume_image);
X = 1:1/scaleCoeff(1):d(1);
Y = 1:1/scaleCoeff(2):d(2);
zi= 1:1/scaleCoeff(3):d(3);
[Xn, Yn, Zin] = ndgrid(X, Y, zi);
MFinal = interpn(volume_image, Xn, Yn, Zin);
Example:
volume_image = (rows=512, columns=512, slices in 3rd dimenson=133)
scaleCoeff = [0.56250, 0.56250, 2]
X = 1x288
Y = 1x288
zi = 1x265
Xn = 288x288x265
Yn = 288x288x265
Zin = 288x288x265
MFinal = 288x288x265 , so that, (rows=288, columns=288, slices in 3rd dimenson=265)
However, there is a problem with it. When the new slices create, they are not as good as the original slices. So that, They look like a combination of their previous and next slices. Does everyone have an idea to apply 3D interpolation on Dicom images to resize them (to unification)?
  2 Comments
Bruno Luong
Bruno Luong on 1 Nov 2018
'When the new slices create, they are not as good as the original slices. So that, They look like a combination of their previous and next slices'
Hmm that exactly a (linear) interpolation supposes to do.
If you don't want that effect, might by 'nearest' interpolation s suitable, it's just like replicate you images denser, but then it will have to jump to the next image at some point.
elham
elham on 1 Nov 2018
Edited: elham on 1 Nov 2018
@Bruno Luong: Yes, That's right. The 'nearest' interpolation is suitable. Thanks.

Sign in to comment.

Answers (1)

John Kearns
John Kearns on 14 Jun 2021
Hey Mate,
Don't know if this is still an issue for you. But if you're limiting yourself to 3D data, you may also try to resize it using the image toolbox. Specifically, try the function imresize3().
Cheers,

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!