MATLAB: CT image display error.

brain image

I am trying to display CT Dicom slices in a montage and used the code below but I get only some parts of the image read and not all of it. The Images are attached below. I need the actual image to be read using the program. Can anyone help me fix this.
The original images are attached as a zip file "images.zip".
clear %no variables
close all %no figures
clc %empty command window
ff = fullfile(pwd, '2.16.840.114421.80674.9357820679.9389356679');
files = dir(fullfile(ff, '*.dcm'));
fname = {files.name};
info = dicominfo(fullfile(ff, fname{1}));
voxel_size = [info.PixelSpacing; info.SliceThickness];
rd = dicomread(fullfile(ff,fname{1}));
sz = size(rd);
num_image = length(fname);
ct = zeros(info.Rows, info.Columns, num_image, class(rd));
for i=length(fname):-1:1
fname1 = fullfile(ff, fname{i});
ct(:,:,i) = uint16(dicomread(fname1));
end
montage(reshape(uint16(ct), [size(ct,1), size(ct,2), 1, size(ct, 3)]), 'DisplayRange', []);
set (gca, 'clim', [0,100]);
im = ct(:, :, 200);
maxl = double(max(im(:)));
imt = imtool(im, [0, maxl]);
Original Image:
Read Image:

Best Answer

CT scans contain negative values, but you are using uint16() which will set all negative values to 0.