我正在尝试使用MATLAB更改DICOM图像中的CT编号(或Hounsfield单位,HU),即将CT编号从-1000到-500插入到一个值(-750)。
任何帮助都将不胜感激。
答案 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