修改dicom图像并将其保存为原始数据?

时间:2013-02-21 11:24:12

标签: matlab dicom

这是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);

2 个答案:

答案 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)

根据您的确想做什么,您可能需要查看gdcmimg和/ gdcmraw