1

我有一张 BSQ 格式的卫星图像。我最初使用 ENVI 处理它。现在,我正在尝试使用 Matlab 的multibandread函数读取图像。

这是与我要加载的图像有关的数据

samples = 911

lines   = 3191

bands   = 196

header offset = 0

data type = 2

interleave = bsq

byte order = 0

这是我为加载图像而编写的代码。

I = multibandread('QUAC.bsq',[3191,911,196], ...
     'int16','0','bsq','ieee-le',{'Band','Direct',[29,23,16]});

我收到以下错误:

Error using multibandread>parseInputs (line 311)
Unable to open QUAC.bsq for reading.

Error in multibandread (line 112)
info = parseInputs(filename, dims,...

我在这个网站http://www.ehu.es/ccwintco/uploads/d/dc/LoadHypercubesMatlab.pdf上查找了 multibandread 函数的格式

我在 MATLAB 上检查了parseInputs的代码,但我无法做出任何改变。

我在尝试加载图像时犯了什么错误?

4

2 回答 2

3

这个问题有点老了,但其他人知道答案可能会有用。

这很可能是一个错误的文件名('QUAC.bsq'),或者该文件不在当前的 MATLAB 工作目录中。

参数列表中还有另一个错误,使用有效文件名,在 Matlab 2015b 中返回此错误:

Error using multibandread>parseInputs (line 337)
Expected input to be one of these types:

double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64

Instead its type was char.

Error in multibandread (line 111)
info = parseInputs(filename, dims,...

在 multibandread 参数中用 0 替换 '0' 应该可以解决问题,对我有用。正确的语法是:

I = multibandread('QUAC.bsq',[3191,911,196], ...
 'int16',0,'bsq','ieee-le',{'Band','Direct',[29,23,16]});
于 2016-10-22T21:45:59.007 回答
-2

去掉文件名中的 .bsq

于 2013-10-17T11:25:06.710 回答