我正在处理tiff格式的显微镜图像(在Matlab中),通常是uint8或uint16 . 基本上我读它们,把它们放在一个单元格数组中进行处理,然后以tiff格式将它们导出为图像序列或堆栈(分别使用imwrite和imwrite的'overwrite'或'append'writemode属性) . 到目前为止一切都运作良好 .
我遇到的问题如下:
当我用ImageJ打开图像时,它们不是真彩色“RGB”颜色模式,而是复合模式 . 例如,ImageJ将数据读取为8位,但它不会将图像作为真彩色打开(很抱歉,我不知道正确的术语 . 因此,我必须手动将3个通道组合在一起,这对于大型数据集来说是很麻烦的 .
这是一个屏幕截图解释 . 在左边是我想要的,即 . 如果我直接用ImageJ打开图像,我得到的是右边是我用Matlab保存图像并用ImageJ打开它后我目前所拥有的,这是我不想要的 .
我用来导出图像序列的代码如下 . “FinalSequenceToExport”是包含图像的单元格数组 .
for i = 1:SliceNumber
ExportedName = sprintf('%s%s%d.tiff',fileName,'Z',i);
imwrite(FinalSequenceToExport{i},ExportedName,'tif','WriteMode','overwrite','Compression','none');
end
-
例如,如果我向Matlab询问FinalSequenceToExport {1}的大小,它会给出512 x 512 x 3 .
-
如果我在命令窗口中打开一个给定的图像,然后使用与上面相同的代码保存它,它会按照我想要的方式执行我想要的结果图像 . 因此,我的猜测是问题来自使用单元阵列,但我不明白如何 .
我希望我已经足够清楚了 . 如果没有,请询问更多详情 . 谢谢您的帮助!
2 回答
你需要指定'ColorSpace'
试试这个
在重新审视这个问题之后,由于来自@Ashish的提示,我发现以下内容有效:
转换为uint8后,我只需要除以255 .