高光谱GSA融合的Python实现(一)

载入数据

高光谱数据:v1.tif(张掖VNIR,6000×1000×48)
由于python对应matlab中的多维数组格式是ndarray,故调用numpy模块,此外选取tifffile模块来读取TIF文件,用cv2模块对图像进行显示和操作。

#导入模块
import tifffile as tiff
import numpy as np
import cv2

然后,需要读取高光谱文件。

#载入数据
scaling=10000
im_read = tiff.imread(r'C:\Users\xuben\Desktop\fusion\v1.tif')

值得注意的是在matlab中存在一个缩小的比例10000,就是说需要把原始的数组里的元素都缩小10000倍。因为读入数据后,三维矩阵都是一些4位数,需要除以10000使它们介于0~1之间,方便图像的显示。这里沿用该设定。
随后我们需要合成3张图:REF,MS,HS。这三张图都来源于我们原始的v1.tif文件。其中,REF是截取原图左上角的500×500,MS是在REF中等间隔选取8个波段,HS是把REF缩小5倍。可以得到参考图像REF(500×500×48)、多光谱MS(500×500×8)、高光谱(100×100×48)。

#ref
im_read = im_read[:500, :500, :]
im_read = im_read.astype(np.double)
REF = im_read/scaling

#ms
sum1 = im_read[:, :, 5]
sum2 = im_read[:, :, 11]
sum3 = im_read[:, :, 17]
sum4 = im_read[:, :, 23]
sum5 = im_read[:, :, 29]
sum6 = im_read[:, :, 35]
sum7 = im_read[:, :, 41]
sum8 = im_read[:, :, 47]
MSI = np.dstack((sum1, sum2, sum3, sum4, sum5, sum6, sum7, sum8))
MSI = MSI/scaling

#hs
HSI=cv2.resize(im_read, (100, 100))
HSI=HSI/scaling

ratio=5

需要先转成double类型。
至此,数据读取就完成了,检查一下:

#show
ref_r = REF[:, :, 23]
ref_g = REF[:, :, 12]
ref_b = REF[:, :, 5]
ref_show = np.dstack((ref_r, ref_g, ref_b))
cv2.imshow("REF", ref_show)
cv2.waitKey()

在这里插入图片描述
显示MS和HS同理。

发布了7 篇原创文章 · 获赞 0 · 访问量 164

猜你喜欢

转载自blog.csdn.net/qq_40640440/article/details/105354462