我有一张dicom
我读到的图片matlab
:
I=dicomread('xyz.dcm');
在显示它时,我使用了以下命令:
imshow(I,[])
我想问的是,我怎样才能写出来imwrite
,这样我才能得到使用上述imshow
命令看到的图像?
我例如尝试过这个:
imwrite(I,'xyz.png','png');
但是,得到一个黑暗的图像。
有什么想法吗?
谢谢。
似乎 dicom 图像具有 16 位深度,比通常的 8 位大。
验证这确实是案例类型
>> class( I )
我希望输出是uint16
.
如果是这样,请尝试:
imwrite( I, 'xyz.png', 'bitdepth', 16 );
当您阅读图像时,请同时获取颜色图
[I, map]=dicomread('xyz.dcm');
现在当你保存它时,也给 imwrite 颜色图。
imwrite(I,map,'xyz.png','png');
顺便说一句,通常不需要最后一个 png。MATLAB 将看到 .png 扩展名并知道将其保存为 png。
嘿,我遇到了同样的问题,似乎其中一种解决方案非常简单。只需检查您是否将字符串作为目标文件的文件名传递。
我正在传递 fullfile 函数的输出(这个输出一个单元格)。imwrite 函数解析输入(vargins)并查找第一个具有 char 类型的变量会发生什么。它使用此索引来查找指定数据类型的参数并因此定义颜色图。如果你的文件路径是一个单元格,它会得到错误的索引并输出奇怪的错误。
我希望这有帮助