2017-02-15 159 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