我有一个自定义颜色图cmap
,用于显示X
包含负值的矩阵。我用显示
image(X, 'CDataMapping', 'scaled');
colormap(cmap);
axis normal;
效果很好,但现在我想将矩阵另存为具有相同颜色映射的图像。
当我尝试以下内容时:
imwrite(X, cmap, 'test.tif');
我得到全黑图像。我知道tiff希望将它们映射到0到1或0到2 ^ 16的空间,所以我尝试做
X = X - min(X(:));
X = (X/max(X(:)))*(2^16);
X = uint16(X);
但是,当我尝试使用保存X
时cmap
,文件已损坏,无法打开。我尝试使用0到2 ^ 16-1的新比例重新生成自定义颜色图,但是由此创建的图像也不可读。
关于如何实现的任何想法?
这是我最终解决的方法:
除了修改矩阵外,我还必须将颜色映射标准化为0到1的空间。我还必须乘以颜色图的长度,而不是2 ^ 16。
这就是最终的样子:
cmap = cmap - min(cmap(:));
cmap = cmap/max(cmap(:));
N = size(cmap, 1);
X = X - min(X(:));
X = (X/max(X(:)))*N;
X = uint16(X);
imwrite(X, cmap, 'test.tif');
我希望这可以省去一些给我带来的麻烦!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句