Interpolating along the 2-D image slices

Sequentialrant picture Sequentialrant · Jul 21, 2011 · Viewed 9.9k times · Source

I have a set of 100 2-D image slices of the same size. I have used MATLAB to stack them to create a volumetric data. While the size of the 2-D slices is 480x488 pixels, the direction in which the images are stacked is not wide enough to visualize the volume in different orientation when projected. I need to interpolate along the slices to increase the size for visualization.

Can somebody please give me an idea or tip about how to do it?

Edit: Anotated projected microscopy-images

Looking at a face

General view

The figure 1 is the top-view of the projected volume.

The figure 2 is the side-view of the projected volume.

When I change the rotation-angle, and try to visualize the volume in different orientation, e.g. side-view (figure 2), is what I see as in figure 2.

I want to expand the side view by interpolating along the image slices.

Answer

Amro picture Amro · Jul 21, 2011

Here is an adapted example from the MATLAB documentation on how to visualize volumetric data (similar to yours) using isosurfaces:

%# load MRI dataset: 27 slices of 128x128 images
load mri
D = squeeze(D);       %# 27 2D-images

%# view slices as countours
contourslice(D,[],[],1:size(D,3))
colormap(map), view(3), axis tight

%# apply isosurface
figure
%#D = smooth3(D);
p = patch( isosurface(D,5) );
isonormals(D, p);
set(p, 'FaceColor',[1,.75,.65], 'EdgeColor','none')
daspect([1 1 .5]), view(3), axis tight, axis vis3d
camlight, lighting gouraud

%# add isocaps
patch(isocaps(D,5), 'FaceColor','interp', 'EdgeColor','none');
colormap(map)

contourslice isosurface_isocaps