1
votes

I loaded this dicom stack of images following the instructions on this tutorial video.

I wrote the following code

 clear all; close all; clc; imtool close all; 

  %loads the full dicom stack
  fileFolder = fullfile (pwd, 'dicom_test'); %se debe estar al mismo nivel de la carpeta 
  files = dir (fullfile(fileFolder, '*.dcm'));
  fileNames = (files.name);

  %%examine file header (metadata, from DICOM stack)
  info = dicominfo (fullfile (fileFolder, fileNames)); %%fileNames{1} or fileName[1] both fail

  %extract size info from metadata
  voxel_size = [info.PixelSpacing; info.SliceThickness]';

  %read one file to get size
  I = dicomread(fullfile(fileFolder, fileNames));
  classI = class(I);
  sizeI  = size(I);
  numImages = length (fileNames);

  %read slice images; populate 3D matrix
  bWaitBar = waitbar (0, 'reading DICOM files');

  %create array to store the images
  mri = zeros(sizeI(1), sizeI(2), numImages, classI);

  %load the images into the mri array 
  for i=length(fileNames): -1:1
      fname = fullfile(fileFolder, fileNames);
      mri(:,:,i) = uint16(dicomread(fname));
      waitbar((length(fileNames)-i+1)/length(fileNames));
  end


  delete (bWaitBar);


  %explore dataset as a montage
  % imtool close all
  minMRI = min(mri(:)); %min is 0 %%variables no usadas
  maxMRI = max(mri(:)); %max is 332 %%variables no usadas
  montage (reshape(uint16(mri),[size(mri,1), size(mri,2), 1, size(mri,3)]));
  set (gca, 'clim', [0,100]); % got this value by call to imcontrast

I got this noisy visualization of the stack:

enter image description here

How can I fix it to show proper contrast?

1

1 Answers

1
votes

looks like you are saturating the image intensity with some arbitrary values (0,100). instead of

set (gca, 'clim', [0,100]); 

write:

set (gca, 'clim', [minMRI ,maxMRI ]);

Usually these type of images have a much higher max intensity than 100 or even 332, so double check max(mri(:)) value