遥感影像通常是大幅的,因此直接输入predict模型,会out of memory,通常的处理方案是:
先剪裁-预测小幅影像-拼接
一、剪裁与拼接函数实现
以示例影像为例:4240*3120剪裁成256*256:
#剪裁函数
#剪裁函数
def crop_image(image_path, output_path,crop_size=(256, 256), background_color=0):
image = tf.imread(image_path)
height, width, bands = image.shape
new_width = (width // crop_size[0] + 1) * crop_size[0]
new_height = (height // crop_size[1] + 1) * crop_size[1]
new_image = np.zeros((new_height, new_width, bands))
new_image[:height, :width, :] = image
cropped_images = []
for i in range(0, new_height, crop_size[1]):
for j in range(0, new_width, crop_size[0]):
cropped_image = new_image[i:i +crop_size[1], j:j + crop_size[0], :]
cropped_images.append(cropped_image)
tf.imwrite(os.path.join(output_path, f"cropped_{i}_{j}.tif"),cropped_image)
ret