基于matlab读取envi格式高光谱图像数据
1关于光谱:
电磁波按波长大小分为射线,可见光,近红外(780nm-2526nm),无线电等。
波长:一个振动周期内传播的距离。
什么是光谱:复色光色散后按波长大小排列的图案。
什么是高光谱:1光谱信息丰富的光谱信息2光谱分辨率足够高。
什么叫光谱信息丰富:区分光波段范围足够细。
光谱分辨率足够高:1在一固定波长内波段越多的光谱,分辨率越高。2波段越小,分辨率越高。
什么是半高全宽:看分辨率有多高,波段有多宽。
高光谱遥感数据光谱特征的三层体系
高光谱遥感影像是一个空间-光谱数据立方体。
每一层为一个波段,每一个像元各波段的属性值都构成一个光谱向量
通过对光谱向量的分析,可以提取许多对分类、信息提取都用的信息
高光谱数据格式之一:标准envi格式是两个文件,一个HDR一个DAT。
2基于matlab简单读取函数
function [image]=freadhyperspectraldata(fname)fid=fopen(fname);%打开冰箱
image=fread(fid);%放进大象
fclose(fid); %关上冰箱门
%%简单的读取函数,得到一个一维结果。1*161200000.
将高光谱文件每一个数值进行读取,输出一个一维数组。
3按头文件,将上述数组reshape
我们无法处理上述一维数据,所以需要把高光谱数据变成三维矩阵,以便矩阵运算。
我们需要处理矩阵行数,列数,通道数(波段数),数据类型,这四个值在头文件有标明。
所以reshape之前使用基本语句读取到上述四个值,得到一个三位矩阵(表示高光谱数据尺寸)和一个数据类型。
clc
clear
fname='G:\轻工大学\1高光谱\高光谱数据\T1\1\capture\1-1'
rfid = fopen(strcat(fname,'.hdr'),'r'); %打开头文件%strcat是连接字符串,rfid是指定头文件
while 1tline = fgetl(rfid);%fget是读取每一行并去掉换行符if ~ischar(tline), break, end[first,second]=strtok(tline,'=');%将=作为分割节点,%=前为first,=后为second
d={'bit8' 'int16' 'int32' 'float32' 'float64' 'uint16' 'uint32' 'int64' 'uint64'};switch first%获取头文件中samples,lines,bands的值,即行数、列数、波段数信息case 'samples '[f,s]=strtok(second);p(1)=str2num(s);first% a=1case 'lines '[f,s]=strtok(second);p(2)=str2num(s);case 'bands '[f,s]=strtok(second);p(3)=str2num(s);endend
t='uint16'%本次实验为了加快进度未设置如何搜索数据类型,直接赋值
fname='G:\轻工大学\1高光谱\高光谱数据\T1\1\capture\1-1.dat'
fid=fopen(fname);
image=fread(fid,t);
image=reshape(image,[p(1),p(2),p(3)]);
fclose(fid);
运行结果:image:1024*948*224
p指光谱数据矩阵尺寸,image指reshape后的光谱数据已经被读取并转换为三维矩阵。
ps:envi标准高光谱数据格式分为两个文件:1头文件 hdr文件2数据文件dat(有一点不懂为什么记事本打开dat文件全是乱码而不是数字矩阵,按头文件说的应该uint16。如果不是数字那么matlab里的image三维矩阵又是什么呢。)
今天学习了元数据的读取和数据整理,下一次我们可以看看这些数据如何在matlab里显示和修改。
基于matlab读取envi格式高光谱图像数据相关推荐
- MATLAB读取HDF格式的SST数据
利用MATLAB读取HDF格式的SST数据是比较简单的,MATLAB中有专门用于读取HDF的函数hdfread()与hdfinfo()就能很好的读取HDF文件.我们可以在读取文件的时候,通过显示文件中 ...
- matlab编程读取导航文件文件,基于Matlab读取标准RINEX格式的GPS星历数据
[实例简介] 基于Matlab读取标准RINEX格式的GPS星历数据,采用Matlab直接读取Rinex文件 张妮,等基于 Matlab读取标准 RINEX格式的GPS星历数据 navdata(i). ...
- 读取BIL格式高光谱数据——C/C++
在上一篇博客中,我们提到如何读取头文件.这篇博客将要谈到如何进一步读取高光谱数据本身,这里以BIL格式为例. 什么是BIL呢?BIL的全称为Band Interleave by Line,连续保存的是 ...
- matlab 多个波段,MatLab读取ENVI图像统计多波段图像信息
在ENVI统计遥感多波段图像中每个波段的均值.方差.最大值.最小值是比较容易办到的,但是如果要处理多批的数据就没有那么方便了,这里转载一个MatLab读取ENVI图像(img+hdr)的程序,并且计算 ...
- MATLAB处理高光谱图像数据
以下内容主要包括四个方面: (1)显示第2到5条光谱反射率和波长的关系(折线图): (2)显示前四条叶绿素值的条形图 (3)显示叶绿素与各个波段的相关性折线图 (4)计算植被指数NDVI与叶绿素对应的 ...
- las文件matlab,基于Matlab的LAS格式数据解析与显示.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > matlab 基于Matlab的LAS格式数据解析与显示.pdf ...
- Matlab中的dyna,基于 MATLAB 读取 LS-DYNA 的计算结果文件
LS-DYNA 的输出文件包含两类,分别为二进制文件和 ASCII 文件,分别由如下的控制命令输出. 二进制文件 *DATABASE_BINARY_OPTION ASCII 文件 *DATABASE_ ...
- c++读取图片_Pytorch读取,加载图像数据(一)
Pytorch读取,加载图像数据(一) 在学习Pytorch的时候,先学会如何正确创建或者加载数据,至关重要. 有了数据,很多函数,操作的效果就变得很直观. 本文主要用其他库读取图像文件(学会这个,你 ...
- matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......
如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...
最新文章
- Linux软件安装包中devel与非devel包之间的区别
- 11.2 计算机保护条例解读
- java和python的比较-Python和Java就业前景对比
- TCP/IP网络中专有名词注解
- python 打包文件
- 2.安装号mysql后当重启Linux服务器之后发现进入不了的解决方案
- iOS平台快速发布HT for Web拓扑图应用
- 洪学海(1967-),男,博士,中国科学院计算技术研究所研究员,信息技术战略研究中心常务副主任。...
- 51单片机定时器问题总结
- 【Python】fastapi框架之Web部署机器学习模型
- Element-Ui 双重el-tabs组件选中第二层时,刷新导致第一层选中样式丢失问题以及解决方法
- OPA277/OPA2277/OPA4277 High Precision Operational Amplifiers 高精度运放
- java自动填充_java 如何自动填充网页上的用户名和密码?
- linux can 总线socket接口测试使用
- 移植facenet pb模型到android
- Line营销机器人2019版
- 使用FFmpeg进行屏幕录像和录音
- 阿里开源消息中间件MetaQ(RocketMQ)简介
- android pak文件_android 文件读写I/O 大集合 (持续更新)
- 如何让自己的网站快速被搜索引擎找到