Matlab - 修复DICOM堆栈上的白噪声

时间:2013-01-20 04:38:21

标签: matlab dicom

我按照this dicom stack of images上的说明加载了this tutorial video

我写了以下代码

 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

我得到了堆栈的这种嘈杂的可视化:

enter image description here

如何修复它以显示正确的对比度?

1 个答案:

答案 0 :(得分:1)

看起来像是用一些任意值(0,100)使图像强度饱和。而不是

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

写:

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

通常这些类型的图像具有比100或甚至332更高的最大强度,因此请仔细检查max(mri(:))