调整和拆分大型 tif 图像

Resizing and splitting large tif image

我导入了一个形状为 (6400, 6400, 4) 的 numpy 数组形式的 tif 图像,想将其分成 25 个形状为 (256, 256, 4) 的小图像并自动保存作为特定文件夹中的 tif 文件。 (使用 PIL 或 TIFFFILE 加载会出现问题,因为它是卫星图像,第五通道未知),因此是 numpy 数组。

有什么建议吗?

你可以使用np.split

虚拟数据:

big_array = np.arange(6400) / 6400 * (np.arange(6400) / 6400)[:,np.newaxis]
big_array = (big_array * 256).astype(int)
big_array = np.stack([big_array]*4, axis=2)

big_array.shape
(6400, 6400, 4)

拆分他们:

split_arrays = [
    np.split(array, 25, axis=0) 
    for array in np.split(big_array, 25, axis=1)
]

split_arrays[-1][-1].shape
(256, 256, 4)

PS。 25 x 25 的分割结果是 625 张图像,而不是 25