解决此问题的一种方法是使用所需的颜色映射对图像进行实际编码,然后使用逻辑索引将原始图像中的每个位置设置为最终结果中的0到白色.
因此,给定2D图像,实际创建一个版本,使用ind2rgb映射到喷射颜色映射.之后,在原始图像中搜索0值,然后将最终颜色结果中的这些位置设置为白色.你问题的最后一点非常有意义.如果您的值介于这么小的范围之间,然后值也为0,则最终颜色映射中的颜色将偏向颜色映射的最末端.因此,我可以建议的另一件事是将原始图像的原始图像的值设置为非零范围内的值,以使其不会使颜色映射饱和.一旦您最终使用建议的颜色映射转换图像,我们就可以手动将这些像素设置为白色.
假设您的图像存储在im中,请执行以下操作:
cmap = colormap('jet'); % standard 64 colors jet colormap
cmap = flipud(cmap);
im2 = im;
ind = im == 0; %// Find locations that are zero in the original image
im2(ind) = max(im(:)); %// Make a copy of the original image where 0 pixels are set to the maximum of the image
rgb = ind2rgb(im2, cmap); %// Create pseudo-coloured image
rgb(repmat(ind, [1 1 3])) = 1; %// Set corresponding locations to white
如果您有图像处理工具箱,则可以使用imshow,也可以使用图像来显示结果(即imshow(rgb)或image(rgb)).
小建议
我建议你改变cmap = colormap(‘jet’);到cmap = jet;相反,因为如果你还没有一个打开的话,colormap(‘jet’)会产生一个空的数字窗口. cmap = jet;会给你相同的结果.