MATLAB中高光谱图像处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

165

1. 打开数据文件:datafile1=fopen('Terrain.hsi')。

2. 读入文件头的信息:cur=fread(datafile1,4,'int32')。执行结果为(cur 的四个值:图像宽

度,图像长度,波段数,像素所占字节数):307,500,210,2。

3. cur=fread(datafile1,inf,'int16')。可通过”size(cur)”获得cur 的大小,这里为32235000

(=307*500*210)。

4. 将一维数组变换成210x (307*500)大小的矩阵:array=reshape(cur,210,307*500)。Array

矩阵的每一列代表一个像素点在不同波段的值的大小,每一行为一个波段对应的全部数据。

5. 对每个波段求其标准差。先将包含图像数据的矩阵转换成500*307)x210的矩阵,

使每一列的数据为一波段的全部数据。1.变换矩阵

stdv=reshape(array',500*307,210);2.求方差stdv=std (stdv );3.画出标准差形成的曲线(图1):

050100150200250

050

100

150

200

250

300

350

400

图1

由图像可大致分析出1-22、102-109、137-151、194-210可能为无用数据。

6. 到这里就可以用array 中的数据画出任意波段的图像。例如,选取有用数据20个波

段的图像:a.提取该波段的全部数据并将它转成307x500的矩阵:

pic=reshape(array(175,1:500*307),307,500);b.将矩阵内的数据显示出来:imshow (pic,[])(图2):

图2

7. 求出它对应的直方图:hist(pic)。(画出矩阵的直方图)如图2。

050

100

150

200

250

图3

相关文档
最新文档