HSI Dataset Visualization:Indian Pines---Python Spectral

Preface

        从我目前了解,Indian Pines高光谱图像数据集国内外最流行三个数据集之一{Pavia University(PU)、Salinas(S)、Indian Pines(IP)},当然了国内外还有很多其他的HSI数据集,都是可以从各种途径获取到,这里附加一个链接HSI Dataset

Code

        直接上代码。
        首先,需要导入的包,主要是python的Spectral,这里当时使用pycharm系统直接下载失败了,当时使用pip install 命令直接下的。

import os
import scipy.io as sio
from spectral import *     

        这里使用的jupyter notebook的IP文件格式,还是在pycharm中编辑代码,最近也在熟悉这种coding方式。
        定义全局变量

##Global Variables
dataset1 = 'IP'
dataset2 = 'SA'
dataset3 = 'PU'
data_path = os.path.join(os.getcwd(),'data')
save_path=os.path.join(os.getcwd(),'DataSetVisual')

        定义数据读取函数。

def loadData(name):
	if name == 'IP':
    	data = sio.loadmat(os.path.join(data_path, 	'Indian_pines_corrected.mat'))['indian_pines_corrected']
        labels = sio.loadmat(os.path.join(data_path, 'Indian_pines_gt.mat'))['indian_pines_gt']
	elif name == 'SA':
        data = sio.loadmat(os.path.join(data_path, 	'Salinas_corrected.mat'))['salinas_corrected']
    	labels = sio.loadmat(os.path.join(data_path, 'Salinas_gt.mat'))['salinas_gt']
	elif name == 'PU':
    	data = sio.loadmat(os.path.join(data_path, 'PaviaU.mat'))['paviaU']
   	 labels = sio.loadmat(os.path.join(data_path, 'PaviaU_gt.mat'))['paviaU_gt']
	return data, labels

        HSI图像读取,本来想每次输出图片之前输出string缓冲以下,没想到在jupyter格式输出没有用,但是也确实,应该直接使用markdown语句。但是要是普通py文件是不影响的应该。
        imshow函数产生与np.ndarray或SpyFile对象相关联的数据的一个光栅显示。 今天第一次接触的 .GIS,.lan,.spc应该都属于SpyFile对象,通过测试,函数不能直接读取.mat格式,我们这里传进去的参数data和label是np.ndarray。

def DataSetImgShow(name,data,labels):
	print("A raster display for DataSet:{}".format(name))
	img_C=imshow(data,(30,20,10))
	print("The ground truth image for DataSet:{}".format(name))
	img_Gt=imshow(labels)

        结果:

IP Data-bands(30,20,10)
IP Labels

        尝试图像模式显示 ,这里mode有三种参数{data、classes、overlay}

def DataSetImgModeShow(name,data,labels):
	print("A raster data display for DataSet:{}".format(name))
	img_C=imshow(data,(30,20,10),classes=labels)
    img_C.set_display_mode('data')
	img_C.class_alpha=0.5

	print("A raster classes display for DataSet:{}".format(name))
	img_C=imshow(data,(30,20,10),classes=labels)
	img_C.set_display_mode('classes')
	img_C.class_alpha=0.5

	print("A raster data display for DataSet:{} with overlayed class masks".format(name))
    img_C=imshow(data,(30,20,10),classes=labels)
	img_C.set_display_mode('overlay')
	img_C.class_alpha=0.5

        结果:

data mode
classes mode
overlay mode

        图片保存。

def SaveImg(name,data,labels):
	print("Save img for DataSet:{}".format(name))
	print("Data RGB img:")
	save_rgb(os.path.join(save_path,str(name)+"_rgb.jpg"),data,[30,20,10])

	print("Save img for Labels:{}".format(name))
	print("Data RGB img:")
	save_rgb(os.path.join(save_path,str(name)+"_gt.jpg"),labels,colors=spy_colors)

Summary

        初步学习Spectral,ipython动态展示的方式目前可能没有很强的需求,以后有时间再探索。

Reference

https://blog.csdn.net/gwj992/article/details/79274511
https://blog.csdn.net/gwj992/article/details/79274511

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值