使用MATLAB更改DICOM图像中的CT编号

时间:2014-02-23 21:49:03

标签: matlab dicom

我正在尝试使用MATLAB更改DICOM图像中的CT编号(或Hounsfield单位,HU),即将CT编号从-1000到-500插入到一个值(-750)。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

首先读入图像数据和标题:

fileName = 'image000.dcm';
img = dicomread(fileName);
imgHdr = dicominfo(fileName);

修补强度:

img(img>=-1000 & img<=-500) = -750;

保存新文件:

[~,base,ext] = fileparts(fileName);
dicomwrite(img,[base '_patched.dcm'],imgHdr,'CreateMode','Copy')

假设您有几个要修补的范围:

upperVals = [-500     0  500];
lowerVals = [-1000 -500    0];
newVals =   [-750  -250  250];

您可以将bsxfun与小于或等于,大于或等于运算符一起使用:

masks = bsxfun(@ge,img(:),lowerVals(:).') & bsxfun(@le,img(:),upperVals(:).');
for i=1:numel(newVals), img(find(masks(:,i))) = newVals(i); end