调整和拆分大型 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
我导入了一个形状为 (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