🌍 Продвинутые методы заполнения пропусков в спутниковых снимках
📷 Спутниковые данные играют ключевую роль в экологическом мониторинге, сельском хозяйстве и городском планировании. Однако одним из главных вызовов их использования остаются пропуски в изображениях, вызванные облачностью, неисправностями сенсоров или шумами в передаче данных. В этой статье мы рассмотрим современные методы заполнения пропусков в спутниковых снимках.
Почему заполнять пробелы необходимо?
📊 Пропуски могут искажать расчеты нормализованного индекса вегетации (NDVI), температуры поверхности и др.
✅ Они влияют на моделирование природных процессов и прогнозирование урожая.
✅ Оптимизируют работу алгоритмов машинного обучения.
Методы восстановления
Один из базовых подходов к заполнению пропусков — применение сверточных фильтров. Они анализируют соседние пиксели и используют их значения для восстановления отсутствующих данных. Например, можно применять размывающие фильтры, которые усредняют значение пикселей в зоне пропуска.
🔄 Сверточные фильтры
from scipy import ndimage def conv_mapping(x): if np.isnan(x[60]) and not np.isnan(np.delete(x, 60)).all(): return np.nanmean(np.delete(x, 60)) return x[60] grid_smooth = ndimage.generic_filter(image, function=conv_mapping, footprint=np.ones((11,11)), mode='constant', cval=np.nan)
Этот метод работает хорошо при небольших пропусках, но при крупных дефектах может привести к потере деталей.
🌟 Инпейнтинг (Inpainting)
Методы инпейнтинга заимствованы из обработки изображений и используются для восстановления фотографий и картин. Они позволяют «закрашивать» пробелы на основе структуры окружающих пикселей.
💚 Telea метод
Алгоритм быстрого распространения заполняет пробелы, распространяя информацию от границ пропусков к центру.
import cv2 as cv def inpainting(image): mask = np.isnan(image).astype('uint8') filled = cv.inpaint(image.astype('float32'), mask, 10, cv.INPAINT_TELEA) return filled
Этот метод быстро работает для небольших и локализованных пробелов.
💛 Метод Навье-Стокса
Использует уравнения гидродинамики для заполнения пробелов, распространяя текстурные линии и градиенты.
def inpainting_ns(image): mask = np.isnan(image).astype('uint8') filled = cv.inpaint(image.astype('float32'), mask, 10, cv.INPAINT_NS) return filled
Итоги
✅ Маленькие пробелы → Сверточный фильтр
🔗 Применяйте эти методы для более точного анализа спутниковых снимков! 🚀
📢 Подписывайтесь, чтобы не пропустить новые материалы!
🔹 Teletype.in – блог о машинном обучении
🔹 Телеграм-канал – свежие новости и обсуждения