当前位置: 首页 > news >正文

[高光谱]高光谱数据的获取与展示

一、环境准备

        需要安装spectral包,这个包专门用于高光谱数据展示。

pip install spectral

二、数据加载

        要预先准备原始高光谱的.mat数据和分类数据gt.mat(ground-turth);然后使用scipy.io中的loadmat(.)将其读入程序。

from scipy.io import loadmatorg_img = loadmat('HDate/PaviaU/paviaU.mat')

        需要注意的是,直接使用loadmat(.)会输出一个dict字典,其构成如下:

        为了获取其中真正的高光谱数据矩阵,需要在loadmat(.)后再加一个 索引进行定位,所以完整的读取语句应该是:

from scipy.io import loadmatinput_image = loadmat('HDate/PaviaU/paviaU.mat')['paviaU']
gt = loadmat("HDate/PaviaU/paviaU_gt.mat")['paviaU_gt']

        通过输出两个变量的种类和尺寸:

         可知,高光谱图像是一个610*340*103的矩阵,类似于传统的RGB图像,前两维为长宽,最后一维为通道数,不过通道数相较于只有3通道的RGB图像而言要高很多。

        而gt作为预先标记好的ground-turth矩阵,其相当于一张灰度图,每个像素点的值从0-255,分别表示不同的种类

三、数据展示

        数据展示主要使用spectral中的imshow(.)来完成,用法同opencv里的imshow(.)

        1.高光谱图片展示

import spectral as spyview1 = spy.imshow(data=input_image, bands=[69, 27, 11], title="img")

                tips.函数中的bands参数用于校正颜色,如果不添加bands参数就会出现渲染的颜色不正确的问题(如下图所示)。

         2.高光谱分类展示

view2 = spy.imshow(classes=gt, title="gt")

        3.高光谱图像和分类叠加展示

view3 = spy.imshow(data=input_image, bands=[69, 27, 11], classes=gt)

         4.高光谱颜色通道展示

                不知道什么用,反正就是很炫

spy.view_cube(input_image, bands=[69, 27, 11])

         5.高光谱高维特征展示

pc = spy.principal_components(input_image)
xdata = pc.transform(input_image)
spy.view_nd(xdata[:, :, :15], classes=gt)

        6.数据保存

                 使用save_rgb(.)函数可以将上面的几种图以RGB图像的形式保存在指定位置,函数如下:

spy.save_rgb(data=input_image,bands=[69, 27, 11],filename='hello.jpg')

 四、小实验

        如果使用opencv来进行高光谱图像的展示会因为第三维通道数过多而报错。但gt相当于灰度图则不会出现这个问题。

        但由于类别之间的差距过小(类别序号普遍不高于10),实际显示出来就是一片黑色。所以对每个元素都放大10倍后再使用opencv进行显示:

gtx = gt*10
cv2.imshow('Test',gtx)

http://www.lryc.cn/news/69426.html

相关文章:

  • veth网卡的多队列及RPS
  • 国内的程序员数量是否已经饱和或者过剩?
  • flutter不能抓包
  • 从桌面端到移动端,.NET MAUI为什么对WPF开发人员更简单?
  • [Python]... 和pass
  • 【信息安全案例】——软件解密技术(以OllyDbg为例)
  • 【华为OD机试真题2023B卷 JAVAJS】阿里巴巴找黄金宝箱(I)
  • 记录一次windows mysql5.7安装失败的过程
  • 前端知识复习一
  • 低代码赋能生物药企数字化
  • 【计算机视觉】最后显示的CIFAR-100数据集照片很模糊怎么解决?
  • OJ 系统未解决或者有疑问问题:
  • 《游戏编程模式》--优化模式--学习
  • 电脑照片怎么导入苹果手机?三个妙招帮你解决!
  • 换个花样玩C++(13)一文深度全面剖析类构造,析构,赋值运算和移动构造
  • 这是一篇使用ChatGPT生成的关于隐私计算的文章
  • Docker持久化固定容器IP
  • Filter和Interceptor和Aspect
  • maven 项目依赖加载不出来
  • Python collections模块
  • Qt-学习 QJson协议解析
  • Git的安装与连接
  • MySQL5.0完全卸载教程
  • rpm包编译工具rpmbuild使用介绍
  • vue3中使用cherry-markDown步骤
  • 数据建模方法论及实施步骤
  • AUTOSAR知识点 之 COM (一):基础知识
  • 自媒体品牌宣传策略注意哪些,是怎么种草的
  • 网络带宽管理
  • SpringCloud(27. Redis 和 ZK 分布式锁)