2

我有一张dicom我读到的图片matlab

I=dicomread('xyz.dcm');

在显示它时,我使用了以下命令:

imshow(I,[])

我想问的是,我怎样才能写出来imwrite,这样我才能得到使用上述imshow命令看到的图像?

我例如尝试过这个:

imwrite(I,'xyz.png','png');

但是,得到一个黑暗的图像。

有什么想法吗?

谢谢。

4

3 回答 3

2

似乎 dicom 图像具有 16 位深度,比通常的 8 位大。
验证这确实是案例类型

>> class( I )

我希望输出是uint16.
如果是这样,请尝试:

imwrite( I, 'xyz.png', 'bitdepth', 16 );
于 2013-07-30T13:23:53.777 回答
1

当您阅读图像时,请同时获取颜色图

[I, map]=dicomread('xyz.dcm');

现在当你保存它时,也给 imwrite 颜色图。

imwrite(I,map,'xyz.png','png');

顺便说一句,通常不需要最后一个 png。MATLAB 将看到 .png 扩展名并知道将其保存为 png。

于 2013-06-21T20:00:26.920 回答
1

嘿,我遇到了同样的问题,似乎其中一种解决方案非常简单。只需检查您是否将字符串作为目标文件的文件名传递。

我正在传递 fullfile 函数的输出(这个输出一个单元格)。imwrite 函数解析输入(vargins)并查找第一个具有 char 类型的变量会发生什么。它使用此索引来查找指定数据类型的参数并因此定义颜色图。如果你的文件路径是一个单元格,它会得到错误的索引并输出奇怪的错误。

我希望这有帮助

于 2017-03-21T10:58:28.073 回答