我正在处理tiff格式的显微镜图像(在Matlab中),通常是uint8或uint16。基本上我读它们,把它们放在一个单元格数组中进行处理,然后以tiff格式导出它们作为图像序列或堆栈(使用imwrite和'覆盖'或者'追加&# 39; imwrite的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
我希望我已经足够清楚了。如果没有,请询问更多详情。 谢谢你的帮助!
答案 0 :(得分:0)
您需要指定'ColorSpace'
试试这个
imwrite(FinalSequenceToExport{i},ExportedName,...
'tif','WriteMode','overwrite','Compression','none', ...
'ColorSpace', 'rgb');
答案 1 :(得分:0)
在重新审视这个问题后,我发现以下内容有效,感谢来自@Ashish的提示:
imwrite(uint8(FinalSequenceToExport{i}/255),...);
转换为uint8后,我只需要除以255。