matlab中的卫星图像

时间:2013-02-24 16:20:20

标签: matlab satellite-image

我有一个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

我在MATLAB上检查了 parseInputs 的代码,但我没有任何区别。

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

2 个答案:

答案 0 :(得分: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,...

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

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

答案 1 :(得分:-2)

删除文件名中的.bsq