Image 使用真彩色CData重新调整图像上的colobar限制(caxis)

Image 使用真彩色CData重新调整图像上的colobar限制(caxis),image,matlab,colorbar,Image,Matlab,Colorbar,我需要显示一个真彩色图像,用imread获得,用imshow显示,还有一个明显不相关的颜色条。我打电话: figure imshow(my_image) colorbar colormap(cool(200)); caxis([0 15]); 使用测试映像,它看起来如下所示: 正如您所见,caxis对颜色栏没有影响。Colorbar最大值将保持200,这是我的colormap中的行数。caxis的文档中正确地描述了这一点,即: 它不影响使用真彩色CData或将CData映射设置为direct的

我需要显示一个真彩色图像,用imread获得,用imshow显示,还有一个明显不相关的颜色条。我打电话:

figure
imshow(my_image)
colorbar
colormap(cool(200));
caxis([0 15]);
使用测试映像,它看起来如下所示:

正如您所见,caxis对颜色栏没有影响。Colorbar最大值将保持200,这是我的colormap中的行数。caxis的文档中正确地描述了这一点,即:

它不影响使用真彩色CData或将CData映射设置为direct的曲面、面片或图像

有什么解决办法吗?
我尝试了一些奇怪的东西,比如在一边对图像进行子拼接,在另一边对颜色条进行子拼接,但是在第二面我得到了一个空白的绘图,并且有太多的空白;我尝试过绘制零,然后是colorbar和caxis,然后用imshow替换零,但是colorbar会相应地刷新。有什么帮助吗?

正如您在文档中注意到的,这是一种正常行为

真彩色图像有三个通道,而彩色贴图只有一个通道。。。因此,您要做的类似于在单个轴上映射三维数据。存在不确定性,Matlab不知道如何处理,因此根本无法处理

我看到的唯一解决方法是将数据减少到单个通道,例如使用rgb2gray。彩色贴图非常适合灰度图像

编辑

如果您想保持图像的真实颜色和不相关的颜色映射,有几种解决方案

请注意,在我的计算机R2015a上,您发布的代码是有效的,即颜色条轴在caxis[0 15]之后映射到[0 15]。也许升级到最新版本可以解决您的问题

尽管如此,正如您所说,它不适用于您的版本,您仍然可以修改颜色栏标记的标签,使其看起来像您想要的:

hcb = colorbar;
set(hcb,'YTick',linspace(1,200,4));
set(hcb,'YTickLabel',linspace(0,15,4));
。。。但这既是一个非常丑陋的解决办法,也是一个相当危险的做法


最好的,我明白了。但是,如果我需要原样的图像,带有原始颜色和一个不相关的色条,该怎么办?这怎么可能呢?我脑子里想的最好的事情就是分图。我在R2014a上运气不好。我会尽快尝试你的解决方法,谢谢。效果很好。为什么会有危险?显示与附近的绘图完全无关的颜色栏是危险的。如果某个地方有错误,最终用户很容易被愚弄。谢谢你,其实这不是无关的,我正在根据200、15和其他东西给图像上色。但是,是的,它没有链接。