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:

5 个评论

The images you inserted are PNG images. You need to attach the dicom images with the paper clip icon.
I tried to attach the .dcm but couldn't as it gives an error as follows:
File format is unsupported. Use any of these formats: .bmp, .csv, .fig, .gif, .jpg, .jpeg, .m, .mat, .mdl, .pdf, .png, .txt, .xls, .zip
This is the first and crucial step for me. Any help appreciated. Thanks !
You can zip the image and attach that.
That worked. I've attached the images. Thank you.

请先登录,再进行评论。

 采纳的回答

Walter Roberson
Walter Roberson 2016-6-29

0 个投票

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

5 个评论

I've removed the uint16 and executed the program. I still get the same output.
Did you remove the uint16 in the montage() call as well?
yes I did.
The program I'm presently using
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) = dicomread(fname1);
end
montage(reshape((ct), [size(ct,1), size(ct,2), 1, size(ct, 3)]), 'DisplayRange', []);
% minct = min(ct(:));
% maxct = max(ct(:));
set (gca, 'clim', [0, 100]);
drawnow;
shg;
im = (ct(:, :, 200));
maxl = double(max(im(:)));
imt = imtool(im, [0, maxl]);
imtool close all;
Get rid of the
set (gca, 'clim', [0, 100]);
That tells it to show only values between 0 and 100, but you have values from -1000 to +1132 (over the 4 images that you included in the .zip)
That worked. Thank you. And I appreciate the effort :)

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Medical Physics 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by