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):
0 50 100 150 200 250
0
50
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):
评论3