介绍高光谱图像的基本知识,便通过MATLAB对高光谱图像进行基本的处理。

文章目录

  • 前言
  • 一、高光谱图像
  • 二、MATLAB高光谱图像处理
    • 1.加载.MAT文件数据
    • 2.图像的显示
    • 3.图像维度变换
  • 总结

前言

高光谱图像是一个立方体结构,维度为M x N x B,M为水平方向像素数量,N为垂直方向像素数量,B为每个像素对应的波段数量。

实验数据集:
http://www.ehu.eus/ccwintco/index.php?title=Hyperspectral_Remote_Sensing_Scenes#Pavia_Centre_and_University

数据集介绍:
每一个数据包含两个文件,为.mat 格式文件,M x N x B格式的数据为高光谱数据,M x N 格式的文件数据为标签数据。


一、高光谱图像

1.1 高光谱图像包含很多波段,每个波段有其自己的波长范围和空间分辨率。遥感图像标准格式多为.tif、.img、.hdr格式,存储类型包括BSQ、BIL、BIP三种。

1.2 MATLAB中用于多波段图像读写的函数包括 multibandread和multibandwrite

1.3 以ENVI数据格式hdr读取为例,文件读取和现实的代码如下:

hdrfilename = 'file.hdr';
fid = fopen(hdrfilename ,'r');
info = fread(fid,'char=>char');
info = info';% 转置为行向量
fprintf(info);% 打印输出
fclose(fid);

二、MATLAB高光谱图像处理

1.加载.MAT文件数据

以KSC数据为例, 读取高光谱图像数据,便显示部分数据,以及进行相关的图像处理。

数据包含KSC_gt.mat和KSC.mat两文件,通过如下命令加载数据;加载完后,可以看到工作区有两个数据,一个三维,一个二维,分别为图像数据和标签数据,标签数据用在监督学习中。

load("KSC.mat");
load("KSC_gt.mat");

通过变量名称获取数据,

X = KSC;
L = KSC_gt;

2.图像的显示

2.1 显示单个波段的图像,需要使用uint8将数值转化为0 ~ 255的整型,才能显示。或者选取三个波段作为R,G,B三个分量,来合成图像,便显示。

通过如下命令来获取某个波段的图像数据;

r = uint8(KSC(:,:,1));
imshow(r);


2.2 获取三个波段,来合成图像,cat函数来合成;

g = uint8(KSC(:,:,100));
b = uint8(KSC(:,:,175));
% 通过cat函数来合成
img = cat(3,r,g,b);
imshow(img);

2.3 显示高光谱波段信息,通过如下代码显示。
先获取数据的维度,在对数据进行维度变换,然后通过plot函数来显示波段曲线。

[width,height,band] = size(X);
N = width * height;
data = reshape(X,N,band);
figure;
hold on;
% 选择几个波段进行显示
plot(data(1,:));
plot(data(100,:));
plot(data(150,:));
plot(data(50,:));
plot(data(end,:));
hold off;

3.图像维度变换

将三维图像数据和二维标签数据进行变换,用于相关处理。

[width,height,band] = size(X);
data = reshape(X,width * height,band);
label = reshape(L,width * height,1);

总结

在MATLAB中对数据进行处理的时候,经常需要使用reshape()函数对数据的维度进行变换。因此,需要注意数据的流动过程中的维度变化。

MATLAB高光谱图像处理基础相关推荐

  1. matlab处理asd高光谱,hyperspectral toolbox for matlab - 高光谱图像处理工具

    [实例简介] 非常好用的高光谱图像处理工具,可以直接使用,也可以在此基础上进行二次开发.好东西啊. [实例截图] [核心代码] matlab_hyperspectral_toolbox_v0.07 ├ ...

  2. Matlab数字图像处理基础【7】

    实例:二维几何图形的描绘-圆形,正方形,直角三角形 clc; clear;%定义图像规模并生成全1白色图像 A1 = ones(800, 800);%以点(101,101)为起点,画边长为200的正方 ...

  3. Matlab图像处理基础(1):图像表示,点处理

    目录 0. 概要 1. 图像表示 Image Representation 1.1 图像格式 Image format 1.2 图像分辨率 resolution of image 1.3 图像的编码 ...

  4. Matlab图像处理基础(2):区域处理,边沿检测

    目录 0. 概要 2. 卷积和相关 2.1 卷积 2.2 相关 2.3 卷积与相关的关系 2.4 Matlab函数 2.5 2-D卷积/相关的分解 3. 高通滤波,edge detection 3.1 ...

  5. Matlab高光谱遥感数据处理与混合像元分解实践技术

    光谱和图像是人们观察世界的两种方式,高光谱遥感通过"图谱合一"的技术创新将两者结合起来,大大提高了人们对客观世界的认知能力,本来在宽波段遥感中不可探测的物质,在高光谱遥感中能被探测 ...

  6. Matlab高光谱遥感、数据处理与混合像元分解实践技术应用

    光谱和图像是人们观察世界的两种方式,高光谱遥感通过"图谱合一"的技术创新将两者结合起来,大大提高了人们对客观世界的认知能力,本来在宽波段遥感中不可探测的物质,在高光谱遥感中能被探测 ...

  7. Matlab 高光谱遥感数据处理与混合像元分解

    教程从基础.方法.实践三方面对高光谱遥感进行讲解.基础篇,站在学员的角度去理解"高光谱",用大家能听的懂的语言去讲述高光谱的基本概念和理论,帮助学员深入理解这项技术的底层科学机理. ...

  8. Matlab高光谱遥感、数据处理与混合像元分解及典型案例

    站在学员的角度去理解"高光谱",用大家能听的懂的语言去讲述高光谱的基本概念和理论,帮助学员深入理解这项技术的底层科学机理.方法篇,将高光谱技术与MATLAB工具结合起来,采用MAT ...

  9. Matlab高光谱遥感数据处理

    光谱和图像是人们观察世界的两种方式,高光谱遥感通过"图谱合一"的技术创新将两者结合起来,大大提高了人们对客观世界的认知能力,本来在宽波段遥感中不可探测的物质,在高光谱遥感中能被探测 ...

最新文章

  1. 旺苍电子计算机培训学校,广元旺苍技工学校
  2. ESP8266编译脚本之五
  3. 数据挖掘竞赛-美国King County房价预测训练赛
  4. 744. 寻找比目标字母大的最小字母 golang
  5. mysql时区代码_mysql时区设置为东八区
  6. 如何在macOS中查找和删除潜在的驱动程序冲突?
  7. android欢迎界面的功能,Android 启动 ( 欢迎 ) 页面实现
  8. python soup findall 第几个元素_BeautifulSoup库findAll()、find()方法详解
  9. 关于美图秀秀的flash在线版
  10. 用java swing写的一个显示时间和实时天气的小程序
  11. nofollow是什么意思,nofollow标签的作用是什么?
  12. 使用-OB-ODC连接OceanBase数据库与模拟数据功能使用
  13. 微信跳转到关注公众号万能链接
  14. Go语言和php个和lua,当Go遇上了Lua,会发生什么
  15. 数据存储计量单位换算
  16. 数据结构和算法(五)--栈(Stack)
  17. Python 向人工智能方向发展的技能树
  18. jQuery和css3控制箭头丝滑旋转
  19. 最长回文子串(马拉车算法)
  20. Autoware入门学习(三)——Autoware软件功能使用介绍(1/3)及demo演示

热门文章

  1. python课程小作业之桌面小工具系统
  2. 千锋逆战1903班Days13上课代码以及笔记
  3. 视频教程-大型ERP实战项目教程-Java
  4. 小傻蛋的妹妹跟随小甲鱼学习Python的第二十节020
  5. Android学习笔记——手机多媒体运用
  6. excel 快捷换行,去除空白换行符
  7. 网络对抗作业 一------袁昊晨
  8. Python---陈氏绘制雷达图
  9. 成功拿下猿辅导+斗鱼+滴滴+字节+腾讯offer,实战解析
  10. 纯原生 js 简易 实现 鼠标拖尾效果