提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、自定义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是四维的,即:BHWC,自己取Batch中的一个高光谱图像出来作为hsi2rgb()的输入即可。
文章出处登录后可见!
已经登录?立即刷新