OCTAVE - ind2rgb:X必须是索引图像

时间:2013-07-15 20:38:07

标签: matlab octave

我正在尝试使用以下行绘制并将一些气象数据保存到png图像文件中。

imag = data2image(flipud(vari'));
imag = gray2ind(imag);
imwrite(imag,colormap('jet'),'PSFC_RIO_im.png','png');

其中data2image是一个自定义函数,用于重新缩放图像函数可以使用的数据。

function image = data2image(data)
    HIGH = max(data(:));
    LOW = min(data(:));
    image = (data - LOW)/(HIGH-LOW);
end

不幸的是,imwrite抱怨以下错误:

error: ind2rgb: X must be an indexed image
error: called from:
error:   /usr/local/share/octave/3.6.4/m/image/ind2rgb.m at line 44, column 5
error:   /usr/local/share/octave/3.6.4/m/image/imwrite.m at line 176, column 16
error:   /home/tufts/Documents/Octave/geomat.m at line 53, column 1

第53行是上面代码中的imwrite。这个错误对我来说完全没有意义,因为图像被转换为​​带有gray2ind函数的索引图像。我还通过使用imshow进行绘图测试了这一点。

编辑 - 想象的类:

octave:9> class(imag)
ans = double

1 个答案:

答案 0 :(得分:0)

我会意外地回答我自己的问题,在一个无关的问题中,弄清楚如何。

MATLAB中的索引图像的最小值为1.我的函数获取数据的最小值,并使其等于0.

注意这一点,然后解决问题