0

这是 matlab 数据,我正在尝试修改 dicom 图像像素。

dicom 图像是 4D 的,Rgb 图像是 3d 的,其他维度代表着名。我拍摄每一帧并修改一些特定的像素值,并尝试将它们保存为原始格式的整个 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);
4

2 回答 2

0

使用 dmtk 不需要原始数据:“ dcmodify 是一个允许在 DICOM 文件中修改、插入和删除标签和项目的工具。

此外,原始数据在极少数和特定情况下是可取的,因为文件中的一些元数据说明那里有什么以及它是如何存储的,这在程序必须读取信息时有很大帮助。

我从未使用过 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] 指定您如何更改文件。

于 2013-02-21T14:14:16.423 回答
0

您可能想看看gdcmimg和/或gdcmraw取决于您真正想做的事情

于 2013-02-27T15:34:53.890 回答