python 读取高光谱图像

项目描述

Tifffile是一个Python库

  1. 将numpy数组存储为TIFF(标记图像文件格式)文件,以及
  2. 从生物成像中使用的TIFF文件中读取图像和元数据。

可以从TIFF,BigTIFF,OME-TIFF,STK,LSM,NIH,SGI,ImageJ,MicroManager,FluoView,ScanImage,SEQ,GEL,SVS,SCN,SIS,ZIF,QPI和GeoTIFF文件中读取图像和元数据。

Numpy数组可以以多页,内存映射,平铺,预测或压缩形式写入TIFF,BigTIFF和ImageJ hyperstack兼容文件。

仅支持TIFF规范的子集,主要是未压缩和无损压缩的1,8,16,32和64位整数,16,32和64位浮点,灰度和RGB(A)图像。具体地,未实现读取图像数据的切片,CCITT和OJPEG压缩,没有JPEG压缩的色度子采样,或IPTC和XMP元数据。

TIFF(r),标记图像文件格式,是Adobe Systems Incorporated的商标和控制之下。BigTIFF允许大于4 GB的文件。STK,LSM,FluoView,SGI,SEQ,GEL和OME-TIFF是由Molecular Devices(Universal Imaging Corporation),Carl Zeiss MicroImaging,Olympus,Silicon Graphics International,Media Cyber​​netics,Molecular Dynamics和Open Microscopy定义的定制扩展。环境财团分别。

对于命令行使用,运行

python -m tifffile --help
作者:Christoph Gohlke
组织:加州大学尔湾分校荧光动力学实验室
版:

2018年11月28日

 

要求

例子

将3D numpy数组保存为多页16位灰度TIFF文件:

>>> data = numpy.random.randint(0,2 ** 16,(4,301,219),'uint16')
>>> imwrite('temp.tif',data,photometric ='minisblack')

从TIFF文件中读取整个图像堆栈为numpy数组:

>>> image_stack = imread('temp.tif')
>>> image_stack.shape
(4,301,219)
>>> image_stack.dtype
DTYPE( 'UINT16')

从TIFF文件中的第一页(IFD)读取图像:

>>> image = imread('temp.tif',key = 0)
>>> image.shape
(301,219)

从一系列TIFF文件中读取图像为numpy数组:

>>> image_sequence = imread(['temp.tif','temp.tif'])
>>> image_sequence.shape
(2,4,301,219)

将numpy数组保存到单页RGB TIFF文件:

>>> data = numpy.random.randint(0,255,(256,256,3),'uint8')
>>> imwrite('temp.tif',data,photometric ='rgb')

使用zlib压缩保存浮点数组和元数据:

>>> data = numpy.random.rand(2,5,3,301,219).astype('float32')
>>> imwrite('temp.tif',data,compress = 6,metadata = {'axes':'TZCYX'})

将xyz体素大小2.6755x2.6755x3.9474Âμm^ 3的​​卷保存到ImageJ文件:

>>> volume = numpy.random.randn(57 * 256 * 256).astype('float32')
>>> volume.shape = 1,57,1,256,256,1#维度,以TZCYXS顺序排列
>>> imwrite('temp.tif',volume,imagej = True,resolution =(1./2.6755,1./2.6755),
... metadata = {'spacing':3.947368,'unit':'um'})

从ImageJ文件中读取hyperstack和元数据:

>>>使用TiffFile('temp.tif')作为tif:
... imagej_hyperstack = tif.asarray()
... imagej_metadata = tif.imagej_metadata
>>> imagej_hyperstack.shape
(57,56,256)
>>> imagej_metadata ['slices']
57

创建一个空的TIFF文件并写入内存映射的numpy数组:

>>> memmap_image = memmap('temp.tif',shape =(256,256),dtype ='float32')
>>> memmap_image [255,255] = 1.0
>>> memmap_image.flush()
>>> memmap_image.shape,memmap_image.dtype
((256,256),dtype('float32'))
>>> del memmap_image

TIFF文件中的内存映射图像数据:

>>> memmap_image = memmap('temp.tif',page = 0)
>>> memmap_image [255,255]
1.0
>>> del memmap_image

连续将图像附加到BigTIFF文件:

>>> data = numpy.random.randint(0,255,(5,2,3,301,219),'uint8')
>>>使用TiffWriter('temp.tif',bigtiff = True)作为tif:
...对于范围内的i(data.shape [0]):
... tif.save(data [i],compress = 6,photometric ='minisblack')

 

将两个图像序列保存到TIFF文件:

>>> data0 = numpy.random.randint(0,255,(301,219,3),'uint8')
>>> data1 = numpy.random.randint(0,255,(5,301,219),'uint16')
>>>使用TiffWriter('temp.tif')作为tif:
... tif.save(data0,compress = 6,photometric ='rgb')
... tif.save(data1,compress = 6,photometric ='minisblack')

从TIFF文件中读取第二个图像系列:

>>> series1 = imread('temp.tif',series = 1)
>>> series1.shape
(5,301,219)

使用文件名模式从一系列TIFF文件中读取图像堆栈:

>>> imwrite('temp_C001T001.tif',numpy.random.rand(64,64))
>>> imwrite('temp_C001T002.tif',numpy.random.rand(64,64))
>>> image_sequence = TiffSequence('temp_C001 * .tif',pattern ='axes')
>>> image_sequence.shape
(1,2)
>>> image_sequence.axes
'CT'
>>> data = image_sequence.asarray()
>>> data.shape
(1,2,64,64)

安装

pip install tifffile

也可以从官网下载  https://pypi.org/project/tifffile/#files

  • 8
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Python高光谱图像处理可以使用Spectral Python (SPy)模块来实现。SPy是一个纯Python模块,用于处理高光谱图像数据。它具有读取、显示、操作和分类高光谱图像的功能,并对多波段图像的支持更好。安装SPy模块可以通过使用pip install spectral命令来完成。 要在Python中使用SPy处理高光谱数据,您可以使用open_image函数来读取高光谱图像文件。例如,通过img = open_image('92AV3C.lan')可以读取名为92AV3C.lan的高光谱图像文件,并将其存储在img变量中。然后,您可以通过print(img)来查看图像的相关信息。 如果您想使用SPy的图形功能,您还需要安装其他几个模块,并在IPython下以"pylab"模式启动IPython。您可以通过pip install spectral来安装这些模块。然后,您可以使用spectral.imshow函数显示图像。例如,通过执行view = spectral.imshow(img)可以显示图像。 通过使用SPy模块,您可以灵活地处理高光谱图像数据,并进行各种操作和分析。以上是使用Python进行高光谱图像处理的简单介绍。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python下的spectral模块(高光谱图像处理)](https://blog.csdn.net/YH_24H/article/details/115544591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值