2015-05-14 74 views
1

我有110個CT dicom圖像,它們的名字是隨機數,所以當我使用任何dicom查看器顯示它們時,它們會隨機顯示。因此,我試圖根據圖像編號(0020,0013)或切片位置(0020,1041)重命名這些dicom圖像。我已經開始寫腳本重命名dicom圖像

image_list=dir('*.dcm'); 
for i=1:25 
    img=dicomread(image_list(i).name); 
    imgHdr = dicominfo(image_list(i).name); 
dicomwrite(img, ['T' num2str(i) '.dcm'], imgHdr,'CreateMode','Copy') 
end 

但我不知道如何告訴它檢查InstanceNumber並在新名稱中使用它?

+0

我使用了由MatLab提供的'.dcm'('info = dicominfo('CT-MONO2-16-ankle.dcm')'',並且在'dicominfo'提供的信息中沒有找到'Image Number'。你用'檢查圖像號碼'是什麼意思? –

+0

@il_raffa對不起,我的意思是Matlab中的InstanceNumber(ImageJ中的圖像編號) – Turki

回答

2

InstanceNumber是作爲所述dicominfo輸出結構的元件可訪問的:使用

instancenumber = ImgHdr.InstanceNumber; 

而且我構造的文件名sprintf

outputfilename = sprintf('T%04d', instancenumber); 

有許多格式sprintf鏡像由C++的printf ,我上面使用的打印一個整數('d')與4位數字('4'),零填充('0')。這對文件管理器的自動排序很有用。如果您需要不同的格式,請查看文檔here

+0

感謝xenoclast,您節省了我的時間,再次感謝您 – Turki

+0

歡迎:) – xenoclast

0

我想你只需要下面一行添加到您的腳本:

imgHdr.InstanceNumber = i; 

,並嘗試加載圖像查看器中。

+0

感謝vizhanyolajos的回覆,我試了一下,但是它們又是隨機顯示的 – Turki

+0

我會試試 –

+0

感謝vizhanyolajos,我設法按照xenoclast的建議做到這一點。再次感謝您的幫助 – Turki