MATLAB中高光谱图像处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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