欧普下载是国内较新、较齐、较安全的软件下载基地!
当前位置:首页 ›› 其他软件 ›› 行业软件 ›› HSI色彩数据模型(Spectral Python)下载

HSI色彩数据模型(Spectral Python) v0.9 Alpha版

Spectral Python[下载地址]
HSI色彩数据模型(Spectral Python) v0.9 Alpha版

Spectral Python简称SPY,一款好用的HSI色彩数据模型软件,可以通过spy打开和访问高光谱图像文件,提供了创建读取高光谱数据文件的基类,与图像文件中的数据交错相对应。有需要的朋友可以来本站下载!

HSI色彩数据模型(Spectral Python) v0.9 Alpha版

使用说明

SpyFile界面

SpyFile是创建读取高光谱数据文件的对象的基类。 当创建一个SpyFile对象时,它提供了一个从相应的文件中读取数据的接口。 打开图像时,返回的实际对象将是SpyFile(BipFile,BilFile或BsqFile)的子类,与图像文件中的数据交错相对应。

In [1]: from spectral import *
In [2]: img = open_image('92AV3C.lan')
In [3]: img.__class__
Out[3]: spectral.io.bilfile.BilFile

In [4]: print img
Data Source: '/home/thomas/spectral_data/92AV3C.lan'
# Rows: 145
# Samples: 145
# Bands: 220
Interleave: BIL
Quantization: 16 bits
Data format: int16

让我们打开我们的示例图像。

该图像不在工作目录中,但仍处于打开状态,因为它位于SPECTRAL_DATA环境变量指定的目录中。 由于图像像素数据是按行交错的,图像函数返回了一个BilFile实例。

由于高光谱图像文件可能相当大,只有在SpyFile对象第一次创建时才从文件中读取元数据。 图像数据值只有在通过SpyFile方法特别要求时才能读取。 SpyFile类提供了一个下标运算符,其行为与numpy数组下标运算符非常相似。 SpyFile对象被下标为MxNxB数组,其中M是图像中的行数,N是列数,B是带的数量。

In [5]: img.shape
Out[5]: (145, 145, 220)

In [6]: pixel = img[50,100]

In [7]: pixel.shape
Out[7]: (220,)

In [8]: band6 = img[:,:,5]

In [9]: band6.shape
Out[9]: (145, 145, 1)

在执行下标运算符调用之前,不从文件中读取图像数据值。 请注意,由于Python索引从0开始,因此img [50,100]指的是图像的第51行和第101列的像素。 同样的,img [:,:,5]是指图像第6条带的所有行和列。

为特定图像文件返回的SpyFile子类实例也将提供以下方法

SpyFile对象有一个band成员,它是一个BandInfo对象的实例,它包含有关图像光谱波段的可选信息。

加载整个图像

需要注意的是,图像数据被SpyFile对象按需读取,并且数据不被缓存。每次调用SpyFile下标操作符或其中一个SpyFile读取方法时,都会从相应的图像数据文件中读取数据,而不管之前是否读取过相同的数据。这样做是为了避免在处理非常大的图像文件时消耗太多内存。 当执行只需要读取大图像中的一小部分数据(例如,读取RGB带以显示图像)的操作时,它也提高了性能。按需读取数据而不缓存数据的缺点是,运行需要访问所有数据的算法时可能会产生严重的运行时间损失。 如果算法需要对数据进行迭代访问,性能会更差。

为了提高光谱算法的性能,最好使用load方法将整个图像加载到内存中,该方法返回一个ImageArray对象。ImageArray提供了完整的numpy.ndarray接口,以及SpyFile接口 。

In [1]: arr = img.load()

In [2]: arr.__class__
Out[2]: spectral.spectral.ImageArray

In [3]: print arr.info()
# Rows: 145
# Samples: 145
# Bands: 220
Data format: float32

In [4]: arr.shape
Out[4]: (145, 145, 220)

由于SPy主要设计用于在光谱范围内进行处理,因此无论源图像数据文件的交错如何,内存中的spectral.ImageArray对象都将始终按像素交织数据。换句话说,numpy.ndarray形状将是(numRows,numCols,numBands)。 ImageArray对象始终包含32位浮点数

注意:

在调用load方法之前,重要的是要考虑生成的ImageArray对象将要消耗的内存量。由于spectral.ImageArray使用32位浮点值,因此消耗的内存量大约为4 * numRows * numCols * numBands个字节

NumPymemmap Interface

作为将整个图像加载到内存中的一种替代方法,访问图像数据的速度稍慢(但更具有内存效率)是使用numpy memmap对象,由SpyFile对象的open_memmap方法返回。也可以使用memmap对象将日期写入图像文件。

文件格式支持

ENVI头文件

ENVI [1]是一个流行的商业软件包,用于处理和分析地理空间图像。 SPy可以读取具有相关ENVI头文件的图像,并可以使用ENVI头读取和写入光谱库。ENVI文件由SPy图像功能自动打开,但图像也可以作为ENVI文件显式打开。 如果数据文件位于标题的单独目录中,或者数据文件具有SPy无法识别的异常文件扩展名,则可能需要明确打开ENVI文件。

In [5]: import spectral.io.envi as envi

In [6]: img = envi.open('cup95eff.int.hdr', 'cup95eff.int')

In [7]: import spectral.io.envi as envi

In [8]: lib = envi.open('spectra.hdr')

In [9]: lib.names[:5]
Out[9]:
[u'construction asphalt',
u'construction concrete',
u'red smooth-faced brick',
u'weathered red brick',
u'bare red brick']

将图像数据写入文件的功能:

create_image:在磁盘上创建一个分配有存储空间的新映像文件。

save image:将现有的图像或ndarray保存到具有ENVI标头的文件中。

AVIRIS数据

SPy支持由机载可视/红外成像光谱仪(AVIRIS)生成的数据文件[2]。AVIRIS文件由open_image函数自动识别; 但是,光谱波段校准文件不能被自动识别; 因此您可能需要将图像作为AVIRIS文件显式打开并指定cal文件。

In [10]: img = aviris.open('f970619t01p02_r02_sc01.a.rfl', 'f970619t01p02_r02.a.spc')

您也可以单独加载波段校准文件(如果波段校准文件是AVIRIS格式,但图像不是这样,则可能需要这样做)。

In [11]: img = open_image('92AV3C.lan')

In [12]: img.bands = aviris.read_aviris_bands('92AV3C.spc')

ERDAS/Lan数据

ERDAS / Lan文件格式是由图像自动识别的。 一个文件不太可能需要作为一个Lan文件明确打开,但可以按如下方式完成。

In [13]: import spectral.io.erdas as erdas

In [14]: img = erdas.open('92AV3C.lan')

下载HSI色彩数据模型(Spectral Python) v0.9 Alpha版
本地下载地址:
本地电信下载
本地电信下载
本地联通下载
本地联通下载
本地迅雷下载
本地迅雷下载
移动用户下载
移动用户下载

版权声明:本站提的序列号、注册码、注册机、补丁等均来自互联网,仅供学习交流之用,请在下载后24小时内删除。

相关文章
软件评论
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!
    登录   注册