2013-02-21 103 views
0

这里是我正在尝试修改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); 

回答

0

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

+0

感谢您所说的话,它对于单帧dicom图像已经非常有用,但是我还没有设法使用多帧图像。 – 2013-02-28 15:54:27

+0

您可能希望在gdcmraw和/或gdcmimg之前运行第一个'gdcmconv --raw'。 – malat 2013-03-01 10:46:11

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是您用于保存文件的名称,并在[选项]指定你怎么改变文件。

+0

以何种格式应我保存数据? – 2013-02-21 14:26:10

+0

我把它作为原始数据是因为文档中提到“-if --insert-from-file: dcmodify -if”PixelData = pixel.raw“file.dcm 插入文件'pixel.raw'的内容到'file.dcm'的PixelData元素 ,文件的内容将按原样读取。 OW数据预计是小尾数排序,如有必要将会被 交换。不会进行检查以确保 数据量在其他属性方面是合理的,如 行或列。 “ – 2013-02-21 14:29:55

+0

”如果可能,请亲切地说出我应该如何继续处理此问题。 – 2013-02-21 14:35:40

相关问题