当前位置:文档之家› MATLAB中高光谱图像处理

MATLAB中高光谱图像处理

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。

相关主题