【问题标题】:satellite images in matlabmatlab中的卫星图像
【发布时间】:2013-02-09 19:34:52
【问题描述】:

我有一张 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,...

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

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

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

【问题讨论】:

  • 你解决问题了吗?
  • @Masi 我想我确实解决了这个问题。鉴于现在已经三年多了,我将不得不研究我为解决它所做的工作。我会在几天后发布解决方案。

标签: matlab satellite-image


【解决方案1】:

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

这很可能是一个错误的文件名 ('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]});

【讨论】:

    【解决方案2】:

    去掉文件名中的 .bsq

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2012-05-21
      • 1970-01-01
      • 2010-12-28
      相关资源
      最近更新 更多