2017-02-15 153 views
3

我有一系列属于单个病人的matlab图像。我在网上发现了一些代码,但它播下了一些错误。我想要这样的,Image在matlab中将dicom图像转换为特定格式

这是我的代码。

% Preallocate the 256-by-256-by-1-by-20 image array. 
X = repmat(int16(0), [256 256 1 20]); 
% Read the series of images. 
for p=1:20 
filename = sprintf('brain_%03d.dcm', p); 
X(:,:,1,p) = dicomread(filename); 
end 
% Display the image stack. 
montage(X,[]) 

我发现这个代码从这里: https://www.mathworks.com/company/newsletters/articles/accessing-data-in-dicom-files.html

Error using montage>validateColormapSyntax (line 339) 

的索引图像可以是UINT8,UINT16,双,单,或逻辑。

Error in montage>parse_inputs (line 259) 
    cmap = validateColormapSyntax(I,varargin{2}); 

    Error in montage (line 114) 
    [I,cmap,mSize,indices,displayRange,parent] = parse_inputs(varargin{:}); 

    Error in Untitled2 (line 9) 
    montage(X,[]); 
+0

而错误是......什么? – excaza

+0

@excaza'Untitled2错误(第9行) 蒙太奇(X,[]);' 我用这个例子以及他们给定的数据集。 –

+0

请[edit] * full *错误信息和堆栈跟踪到你的问题。 – excaza

回答

2

来调用montage函数的语法已经改变,因为这些代码样本写(2002年回来了!)。正如File Exchange submission for the sample DICOM data files的注释部分指出,新的正确的语法是这样的:

montage(X, 'DisplayRange', []); 

,因为新的语法解释你都拿到这个错误montage(X, []);仿佛X是索引彩色图像(这是不允许根据错误是一个有签字的int16类型),带有一个空的颜色图[]

+0

它的工作。然而,我有问题在以下行 'filename = sprintf('brain_%03d.dcm',p);' 如何更改文件夹中的随机文件名?我的意思是它将一系列图像命名为'brain_01d.dcm'到'20',但是我对每个dcm文件都有不同的名称。我该怎么办? –

+0

请帮我用这个 –

+0

@MuhammadUsman:由于我不知道你的文件是如何存储或命名的,我不能给予具体的帮助。你应该首先检查['dir'](https://www.mathworks.com/help/matlab/ref/dir.html)函数。 – gnovice