使用matlab将double转换为12位

时间:2011-10-05 19:00:00

标签: matlab

我正在尝试在matlab中使用名为metamorph的成像软件实现颜色组合功能。我有三个uint16位文件(R,G和B)。我需要将它们转换为12位然后将它们组合成RGB图像.metamorph将16位文件转换为12位,然后从三个12位文件创建RGB图像。我的代码如下。我不太清楚如何将16位图像文件转换为12位位。

    C1 = imread('metamorph/R.tif',3);
    C2 = imread('metamorph/G.tif',3);
    C3 = imread('metamorph/B.tif',3);

    R=mat2gray(C1);
    G=mat2gray(C2);
    B=mat2gray(C3);

    rgb1=cat(3,R,G,B);
    imshow(rgb1)

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

我认为MATLAB不具有12位的数据类型(每个像素的每种颜色为1.5个字节)。当然,您可以扩展双倍数据以适应12位整数:

rgb12= round(rgb1/max(rgb1(:))*(2^12-1)); %# scale & round image values to 12 bit

......但真正的问题是这样做有什么好处:

  • 您要导出为某种12位RGB文件格式吗? imwrite显然可以做12bit JPEG,但我不确定每种颜色是12位。
  • 或者您想在MATLAB中保存RAM吗?在这种情况下,我不确定是否有合理的方法来做到这一点。