高光谱图像的可视化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、自定义HSI转RGB函数

输入dataset是一个H 高光谱图像的可视化 W 高光谱图像的可视化 C的三维numpy数据,返回是H 高光谱图像的可视化 W 高光谱图像的可视化 3的三通道RGB的numpy数据

def hsi2rgb(dataset):

    dataset_blu = dataset[:, :, 9]
    dataset_gre = dataset[:, :, 34]
    dataset_red = dataset[:, :, 60]

    nomlize_blu = (dataset_blu - dataset_blu.min()) / (dataset_blu.max() - dataset_blu.min()) * 255
    nomlize_gre = (dataset_gre - dataset_gre.min()) / (dataset_gre.max() - dataset_gre.min()) * 255
    nomlize_red = (dataset_red - dataset_red.min()) / (dataset_red.max() - dataset_red.min()) * 255

    # max_3channel = np.max([dataset_blu.max(),dataset_gre.max(),dataset_red.max()])
    # min_3channel = np.min([dataset_blu.min(),dataset_gre.min(),dataset_red.min()])
    # nomlize_blu = (dataset_blu - min_3channel) / (max_3channel - min_3channel) * 255
    # nomlize_gre = (dataset_gre - min_3channel) / (max_3channel - min_3channel) * 255
    # nomlize_red = (dataset_red - min_3channel) / (max_3channel - min_3channel) * 255

    img_array = np.zeros((nomlize_blu.shape[0], nomlize_blu.shape[1], 3))
    img_array[:, :, 0] = nomlize_blu
    img_array[:, :, 1] = nomlize_gre
    img_array[:, :, 2] = nomlize_red

    return img_array

二、主函数

以Botswana高光谱数据为例,这里file_path是自己存放Botswana数据的路径

file_path = botswana4_dataset['data_dir'] + 'Botswana.mat'
data_dic = scipy.io.loadmat(file_path)
dataset = data_dic['Botswana']

array_rgb = hsi2rgb(dataFile_path,'Botswana')
imge_out = Image.fromarray(np.uint8(array_rgb),'RGB')
imge_out.show()

三、题外补充

很多时候我们做可视化是在测试结果出来以后,那此时的高光谱数据是刚从模型中输出,还是tensor数据,而且tensor数据的设备是GPU或CPU,那么还设计GPU_tensor、CPU_tensor和numpy之间的转换。

#CPU_tensor转numpy
expl_np = np.array(CPU_tensor)

#GPU_tensor转numpy
CPU_tensor = CPU_tensor.cpu().data
expl_np = np.array(CPU_tensor)

PS:注意,上述方式转换出来的numpy是四维的,即:B高光谱图像的可视化H高光谱图像的可视化W高光谱图像的可视化C,自己取Batch中的一个高光谱图像出来作为hsi2rgb()的输入即可。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年6月8日 上午11:44
下一篇 2022年6月8日 上午11:47

相关推荐