[英]Rename multi-frame dicom images
我有一個包含110張圖像的dicom文件,它們的名字是隨機的。 我試圖根據他們的SliceLocations( n
)重命名它們並用dcm擴展名重寫它們,即n(1).dcm,n(2).dcm,...
任何建議,將不勝感激。
我試過了
image_list=dir('*.dcm');
for i=1:110
img=dicomread(image_list);
imgHdr = dicominfo(image_list(i).name);
for j = size(img,4);
dicomwrite(img(:,:,:,j),['n(' int2str(j) ').dcm'],imgHdr,'CreateMode','Copy');
end
end
切片位置(0020,1041)是圖像平面模塊的可選屬性。 無法保證標簽具有任何價值。 您最好的選擇是使用圖像位置(患者)(0020,0032)屬性。 這將具有圖像的左上角(發送的第一個體素的中心)的x,y和z坐標。 有關進一步說明,請參見DICOM標准PS 3.3 - 2011 (PDF),附錄C.7.6.2.1。
注意: 此答案適用於“框架”,而不適用於“切片”。 這兩個顯然是DICOM文件的不同之處。
如果您不需要在您的問題中使用命名方案,一個方便的選擇是在dicomwrite
函數中使用'MultiframeSingleFile'
選項:
X = dicomread('MultiFrameFile.dcm');
dicomwrite(X,'n.dcm','MultiframeSingleFile',false);
這將生成名為'n_01.dcm'
, 'n_02.dcm'
,...
否則,您可以將一個簡單的for
循環與int2str
結合使用:
X = dicomread('MultiFrameFile.dcm');
for i = size(X,4);
dicomwrite(X(:,:,:,i),['n(' int2str(i) ').dcm']);
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.