0

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

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

wheredata2image是一个自定义函数,它重新缩放数据以供图像函数使用。

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上面代码中的。这个错误对我来说完全没有意义,因为 imag 已使用该gray2ind函数转换为索引图像。我还通过用 绘图来测试这一点imshow,这很有效。

编辑 - 图像类:

octave:9> class(imag)
ans = double
4

1 回答 1

0

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

MATLAB 中的索引图像的最小值为 1。我的函数正在获取数据的最小值,并将其设为 0。

照顾它,你解决问题

于 2013-11-01T15:00:12.920 回答