你所问的是进行图像的pseudo colouring。在MATLAB中这样做实际上非常简单。您可以使用灰度强度作为色彩图的索引,并且每个强度都会生成唯一的颜色。首先,您需要做的是创建一个长度为256个元素的彩色贴图,然后使用ind2rgb
根据图像的灰度强度/索引创建彩色图像。
在MATLAB中有许多不同的颜色贴图。下面是在MATLAB当前可用的彩色地图,而不最近补充说,在R2014推出Parula彩色地图:

如何彩色地图的工作是低指数/灰度值有向左移动颜色光谱的一侧和较高的索引/灰度值具有向光谱右侧移动的颜色。
如果您想创建一个包含256个元素的彩色地图,只需将这些彩色地图中的任何一个作为函数,并将256指定为输入参数,即可为您生成256个元素的彩色地图。例如,如果你想使用HSV彩色地图,你会在MATLAB做到这一点:
cmap = hsv(256);
现在,在MATLAB的工作空间给你的灰度图像存储在imageArray
,只需使用ind2rgb
这样:
colourArray = ind2rgb(double(imageArray)+1, cmap);
第一个参数是想要伪彩色的灰度图像,第二个输入是由MATLAB的任何一种颜色映射函数产生的彩色图。 colourArray
将包含您的伪彩色图像。请注意,我们偏移的灰度图像减1和转换为double
。原因是因为MATLAB是1索引编程语言,所以我们必须从1开始索引到数组/矩阵。因为你的强度范围从[0,255]
,我们想用它来索引色彩图,我们必须使这从[1,256]
去允许索引。另外,您最有可能使用uint8
图片,因此将0123加上uint8
将只会使已经达到255至255的值饱和。我们将无法达到256.因此,您需要将图片暂时调整为double
,这样我们就可以提高图像的精度,然后加1以使图像在适用的情况下达到256。
下面是使用作为图像处理工具箱一部分的cameraman.tif
图像的示例。这是什么样子:

因此,我们可以说图像在MATLAB加载像这样:
imageArray = imread('cameraman.tif');
接下来,我们可以用上面的图像,产生HSV彩色图则pseudocolour图像:
cmap = hsv(256);
colourArray = ind2rgb(imageArray+1, cmap);
我们得到:

留意,你不有使用任何MATLAB提供了彩色地图的。事实上,你可以创建你自己的色彩地图。您只需创建一个256 x 3矩阵,其中每列表示每个强度的红色(第一列),绿色(第二列)和蓝色(第三列)值的比例。因此,第一行给出了映射到强度0的颜色,第二行给出了映射到强度1的颜色,依此类推。此外,您需要确保强度为浮点数,范围从[0,1]
。例如,这些都是上面生成的第10行中的HSV彩色地图的:
>> cmap(1:10,:)
ans =
1.0000 0 0
1.0000 0.0234 0
1.0000 0.0469 0
1.0000 0.0703 0
1.0000 0.0938 0
1.0000 0.1172 0
1.0000 0.1406 0
1.0000 0.1641 0
1.0000 0.1875 0
1.0000 0.2109 0
然后,您可以使用此自定义颜色映射到ind2rgb
到pseudocolour你的形象。
祝你好运,玩得开心!
我不是这方面的专家,但我发现了一个[文件交换](http://www.mathworks.com/matlabcentral/fileexchange/8214-gray-image-to-color-image-conversion) 。 – patrik