Использование исправления
Что такое патчи?
Патчи — это небольшие части большого изображения.
Почему они сделаны?
Методы на основе заплат часто используются в нескольких областях обработки изображений, таких как сегментация изображений, восстановление изображений, синтез и редактирование изображений и т. Д. Заплаты значительно проще моделировать, чем полные изображения, поскольку они могут фиксировать локальную геометрию и структуру изображения.
Как генерировать патчи из изображения дистанционного зондирования?
В этой статье используется изображение в коротковолновом инфракрасном диапазоне (SWIR), полученное из набора данных LANDSAT-8 USGS Earth Explorer. Полученное изображение из Индии имеет пространственное разрешение 30 м. Вы можете скачать изображение для тестирования кода по следующей ссылке:
Шаг 1. Импортируйте библиотеки
import numpy as np import rasterio as rio import tifffile as tiff from patchify import patchify from rasterio.plot import show
Шаг 2. Определите пути
IMG_PATH = 'LC08_L2SP_141044_20220519_20220525_02_T1_SR_B6.TIF' OUT_PATH = 'Folder/'
IMG_PATH — это строка, содержащая путь к изображению, для которого мы хотим сгенерировать патчи, а OUT_PATH — это строка, содержащая путь к папке, в которую мы хотим сохранить наши патчи.
Шаг 3: Чтение изображения в виде массива
imge = rio.open('LC08_L2SP_141044_20220519_20220525_02_T1_SR_B6.TIF') img_array = imge.read() print(img_array.shape)
Мы получаем выходную форму массива, как показано ниже:
Здесь первое измерение массива представляет количество каналов, а второе и третье измерения представляют количество пикселей в вертикальном и горизонтальном направлениях соответственно. Патчи создаются с помощью функции patchify(). Для использования этой функции необходимо переместить количество каналов в последнее измерение массива.
Шаг 4: Переместите полосы в последнее измерение массива
img_array = np.moveaxis(img_array, 0, 2) print(img_array.shape)
Теперь форма массива:
Шаг 5: Создайте патчи и сохраните их в виде файлов .tiff, используя цикл for
PATCH_SIZE = 256 PATCH_STEP = 256 patches = patchify(img_array,(PATCH_SIZE, PATCH_SIZE,1), step=PATCH_STEP) for x in range(patches.shape[0]): for y in range(patches.shape[1]): single_patch = patches[x,y,:,:,:] tiff.imwrite(OUT_PATH + 'Image_' + str(x) + '_' + str(y) + ".tiff", single_patch)
PATCH_SIZE — это переменная, определяющая требуемый размер патчей. Мы сохраняем шаг равным размеру патча, чтобы создавать патчи без перекрытия.
Использованная литература:
- https://www.researchgate.net/publication/336970007_A_Unified_View_on_Patch_Aggregation
- https://stackoverflow.com/questions/72518968/using-patchify-to-create-patches-from-images-with-other-shapes
- https://youtu.be/7IL7LKSLb9I
Другие участники: Бхавнит Сингх