我的问题与this帖子中的问题类似。
我有一个灰度图像,我在上面绘制点。为了绘制我使用colormap('jet')
的点,但是因为我希望图像是灰度的,在绘制点之后我重置了色图,colormap('gray')
。
但我想展示一个颜色条!并且颜色条以灰度绘制,而不是“喷射”。 我怎么能这样做?
修改 我想要一个显示点颜色的Colorbar!
答案 0 :(得分:5)
您应该将相同的数据转换为R-,G-和B-通道(这将是灰度RGB图像),从而将图像转换为RGB。 MatLab中的Colormap不适用于RGB图像,仅适用于索引的图像。然后使用您喜欢的色彩图在图像上绘制点。
答案 1 :(得分:2)
正如here所述,有几种方法:
如果您有图像处理工具箱,请使用subimage
创建带有单独色彩图的独立图像。然后绘制图像,您的点,并使用linkaxes
将它们合并为一个。
使用文件交换中的freezeColors(或multiple colormaps,我从未亲自测试过)。这是一种非常简单的方法来创建更大的色彩映射,并自动选择色彩映射的右侧部分以显示图像和色条。
正如anandr所说,将灰度图像转换为RGB; Matlab不对RGB图像使用色彩映射,这使您可以自由地绘制点并显示独立于图像的颜色条。
(3)的示例代码:
I = imread('cameraman.tif');
imshow(cat(3,I,I,I))
hold on
x = @() round(size(I,1) * rand(50,1));
y = @() round(size(I,2) * rand(50,1));
plot(x(), y(), 'r.')
plot(x(), y(), 'g.')
plot(x(), y(), 'b.')
colormap('jet')
colorbar
结果: