情况:尝试输出并操作索引图像。
问题:使用ind2rgb(image, colormap(x))
时,我们收到错误消息,指出indexed image contains colors outside of colormap
,其中x
是色彩映射选项。
问题:如何解决这个问题?
其他信息:我使用imshow(image, colormap(x))
,其中我使用Octave上可用的每个色彩图代替x
。
答案 0 :(得分:1)
我相信这是因为你有比colormap中的颜色更多的索引。只需制作更大的色彩图。您可以使用sysntax colormap(x(size_of_cmap))
ind2rgb(image, colormap(viridis(max(image(:))))
或者,创建色图并对其进行插值。注意:由于HSV循环行为,这可能会在颜色中产生伪影。
m=max(image(:));
cm=colormap(x);
hsv=rgb2hsv(cm);
cm=interp1(linspace(0,1,size(cm,1)),hsv,linspace(0,1,m));
cm=hsv2rgb(cm);
ind2rgb(image,cm);
我建议尽可能使用第一种解决方案。