我有兴趣使用Spectral Python (SPy) 来可视化和分类多波段栅格 GeoTIFF(不是高光谱数据)。目前看来只有.lan文件.gis格式是可读的。
我尝试将文件转换为.lanwith gdal_translate,但不支持图像格式( IOError: Unable to determine file type or type not supported)。
知道如何将该库用于非超光谱数据集吗?
我正在尝试打开一个 envi .img 文件,并且有一个具有相同名称的 .hdr 文件。在 .img 文件中,有两个图像,我可以使用以下代码读取它们。
from spectral import *
img = open_image('LC08_L1TP_029029_20130330_20170310_01_T1_sensor_B05.img')
Run Code Online (Sandbox Code Playgroud)
img(BSQ文件)的属性如下图
In[352] img
Out[352]:
Data Source: '.\LC08_L1TP_029029_20130330_20170310_01_T1_sensor_B05.img'
# Rows: 7311
# Samples: 7371
# Bands: 2
Interleave: BSQ
Quantization: 16 bits
Data format: int16
Run Code Online (Sandbox Code Playgroud)
我想从 img 中提取这两个图像。但是当我尝试时
img[:,:,1]
Run Code Online (Sandbox Code Playgroud)
它给了我一个大小为(7311,7371,1)的数组,但数组内的所有值都为零,但我知道它们应该是非零值。
我的问题是如何从 BSQ 文件中提取这两个图像?
大纲
我试图通过基于与图像相关联的一些“质心”数据(每个时间步的峰值)生成多项式来扭曲图像(时间序列中的光谱峰值,但这并不重要)和增加多项式。这些原始多项式和增广多项式分别构成了我的“源”点和“目标”点,我试图使用 skimage.transform.warp() 来扭曲图像。
这种扭曲的目标是产生两个扭曲的图像(即重复该过程两次)。然后这些图像将彼此正相关,或者如果两个扭曲图像之一水平翻转(同样,这里不那么重要)则负相关。
(请注意,多项式增强是通过在每个多项式峰/谷处添加/减去噪声来执行的,与每个点的幅度(像素)成正比,然后通过这些增强点生成相同阶数的新多项式,在防止增广多项式取反的地方)。
代码片段
我通过创建 GeometricTransform 并将其作为 inverse_map 应用到 warp() 来在代码中实现这一点,如下所示:
from skimage import transform
# Create the transformation object using the source and destination (N, 2) arrays in reverse order
# (as there is no explicit way to do an inverse polynomial transformation).
t = transform.estimate_transform('polynomial', src=destination, dst=source, order=4) # order = num_poly_degrees - 1
# Warp the original image using the transformation object
warped_image = transform.warp(image, t, order=0, mode='constant', cval=float('nan')) …Run Code Online (Sandbox Code Playgroud) 我正在研究 envi 格式的高光谱图像。我已经使用 Spectrum Python 库成功读取了它。现在,我想获得每个波段(波长中心)。请建议执行此任务的方法。