这是matlab数据,我试图修改dicom图像像素。
dicom图像为4D,3d为Rgb图像,其他维度为fames。我采取每一帧,我修改了一些特定的像素值,我尝试以原始格式保存整个dicom图像数据。
我以原始格式保存它的原因是我想将此数据用作dcmtk的dcmodify命令中的文件。所以,我的第一个问题是,我是否以正确的格式保存原始数据?如果没有,请建议我该怎么做。此外,你知道dcmodify命令dcmtk是否可以像这种情况一样处理4d数据,或者它只能修改一个单独的帧吗?感谢。
clc
clear all
close all
img=dicomread('Bad001_2CH_01_anon.dcm');
%%implay(img);
[rows,columns,colors,frames]=size(img);
for i=1:frames
img(1:25,:,:,i)=0;
disp(i);
figure(1)
imshow(img(:,:,:,i))
end
fid=fopen('image.raw','w+');
cnt=fwrite(fid,img,'uint8');
fclose(fid);
答案 0 :(得分:0)
您不需要原始数据来使用dmtk:“dcmodify is a tool that allows to modify, insert and delete tags and items in DICOM files.”
此外,原始数据在非常少的特定情况下是可取的,因为文件中的一些元数据说明了存在的内容以及存储方式,这在程序必须读取信息时会有很大帮助。
我从未使用过dmkt,但我想你应该用dicomread读取数据(就像你一样),修改它(就像你一样),然后用dicomwrite再次将它保存为DICOM
要保留DICOM中的元数据,您还需要使用dicominfo提取元数据,以便在保存文件时将其恢复。
img = dicomread('originalfile.dcm');
metadata = dicominfo('originalfile.dcm');
% do something with the img
% save altered DICOM with metadata
dicomwrite(img, 'processedFile.dcm', metadata, 'CreateMode', 'copy');
然后你可以打电话:
dcmodify [options] writtenDicomFile
其中 writtenDicomFile 是用于保存文件的名称,[options]指定如何更改文件。
答案 1 :(得分:0)