参考:tif和mat格式相互转换_tiff转mat-CSDN博客
tif转mat (以Washington DC(1280×307×191)为例)
import scipy.io as sio # 导入scipy.io库用于读写MAT文件
import skimage.io # 导入scikit-image的io模块用于图像读取
import numpy as np # 导入numpy库用于数组操作
# 定义高光谱图像文件路径(原始数据格式为tif)
imgpath = r'D:\A.HSI Dataset\Washington DC(1280×307×191)\dc.tif'
# 使用skimage读取tif格式的高光谱图像数据
imggt = skimage.io.imread(imgpath)
# 使用transpose()方法调整数据维度顺序
# 原始数据维度为[通道数, 高度, 宽度],调整为[高度, 宽度, 通道数]
imggt_reshaped = np.transpose(imggt, (1, 2, 0))
# 转换数据类型为float64(对应MATLAB中的double类型)
# 确保数据精度满足后续处理需求
imggt_double = imggt_reshaped.astype('float64')
# 保存处理后的数据为MAT文件
# 指定变量名为'dc',便于MATLAB环境中加载使用
sio.savemat(r"D:\A.HSI Dataset\Washington DC(1280×307×191)\dc.mat",
{'dc': imggt_double})
tiff转mat(以Houston DFC 2018(1202×4172×50)为例 )
import scipy.io as sio # 导入scipy.io库用于读写MAT文件
import skimage.io # 导入scikit-image的io模块用于图像读取
import numpy as np # 导入numpy库用于数组操作
# 定义高光谱图像文件路径(原始数据格式为tif)
imgpath = r'D:\A.HSI Dataset\2018_DFTC\20170218_UH_CASI_S4_NAD83.tiff'
# 使用skimage读取tif格式的高光谱图像数据
imggt = skimage.io.imread(imgpath)
# 使用transpose()方法调整数据维度顺序
# 原始数据维度为[通道数, 高度, 宽度],调整为[高度, 宽度, 通道数]
#imggt_reshaped = np.transpose(imggt, (1, 2, 0))
# 转换数据类型为float64(对应MATLAB中的double类型)
# 确保数据精度满足后续处理需求
#imggt_double = imggt_reshaped.astype('float64')
imggt_double = imggt.astype('float64')
# 保存处理后的数据为MAT文件
# 指定变量名为'dc',便于MATLAB环境中加载使用
sio.savemat(r"D:\A.HSI Dataset\2018_DFTC\HoustonDFC2018.mat",
{'Houston2018': imggt_double})