WPF-приложение для просмотра и базовой обработки мультиспектральных и гиперспектральных спутниковых снимков.
Проект был сделан как дипломная работа: мне хотелось собрать не просто демонстрационный интерфейс, а небольшую настольную программу, которая работает с реальными данными Landsat, Sentinel-2 и AVIRIS, позволяет собирать RGB-композиции из каналов и запускать несколько алгоритмов обработки.
- Сборка RGB-изображения из выбранных каналов спутникового снимка.
- Поддержка Landsat 8, Sentinel-2 SAFE и AVIRIS.
- Просмотр изображения с масштабированием и перемещением.
- Обрезка выбранной области снимка.
- Калькулятор растров по формуле вида
(Ch1-Ch2)/(Ch1+Ch2). - Классификация по пользовательским эталонам:
- спектральный угол;
- евклидово расстояние;
- барицентрические координаты.
- Сегментация изображения на основе спектрального угла.
- Построение гистограмм каналов.
- EMD
- Сохранение результатов в
.tif.
Тестовые снимки Landsat и Sentinel-2 можно скачать с Яндекс Диска:
https://disk.yandex.ru/d/SJGqHFiBDc1z7Q
Данные не лежат в репозитории, потому что спутниковые снимки занимают слишком много места.
- C# / .NET Framework 4.8
- WPF
- OpenCvSharp
- LinqStatistics
- HDF.PInvoke
-
Клонировать репозиторий или скачать его через
Code -> Download ZIPна GitHub. -
Открыть
HSI.slnв Visual Studio. -
Восстановить NuGet-пакеты.
-
Собрать проект через
Build -> Rebuild Solution. -
Запустить приложение.
Для проекта нужен .NET Framework 4.8. Если сборка через dotnet build падает на WPF-задачах генерации ресурсов, используйте сборку из Visual Studio/MSBuild для .NET Framework.
- Скачать пример снимка из ссылки выше.
- Нажать
Добавить изображение. - Выбрать спутник, например
Landsat 8илиSentinel 2. - Выбрать папку со снимком.
- Указать номера каналов.
- Для естественных цветов обычно подходят
4, 3, 2. - Для псевдоцветной растительности можно попробовать
5, 6, 4для Landsat или близкие по смыслу каналы Sentinel-2.
- Для естественных цветов обычно подходят
- Нажать
Ок.
После обработки программа сохранит TIFF-превью в папку снимка и отобразит результат в интерфейсе.
MainWindow.xaml(.cs)- главный интерфейс, просмотр изображения, запуск операций.ImageAddingWindow.xaml(.cs)- выбор спутника, папки и каналов.ImageBuilder.cs- сборка RGB-композиции из отдельных каналов.RasterCalcs.cs- калькулятор растров.ClassifyImage.cs- алгоритмы классификации.SegmentImage.cs- сегментация.EMDImage.cs- экспериментальная обработка AVIRIS.SatelliteInfo/- описание структуры данных разных спутников.Pixels/,RPN/- вспомогательные модели и разбор формул.
Это учебно-исследовательский проект, поэтому в нём есть места, которые можно улучшать, но при этом проект уже показывает полный рабочий цикл: чтение реальных спутниковых данных, обработку пиксельных массивов, визуализацию результата и сохранение выходных файлов.

