Мат. моделирование / ДЗЗ
Практика 6

Знакомство с модулем SCP. Автоматическое дешифрирование

О чём эта тема

Как в QGIS выполнить контролируемую (обучаемую) классификацию спутникового снимка — на примере плагина Semi-Automatic Classification Plugin (SCP) и снимка дельты Нила.

Аннотация

Практика знакомит с плагином Semi-Automatic Classification Plugin (SCP) для QGIS: установкой через OSGeo4W Shell и менеджер модулей, загрузкой снимка Sentinel-2 в виде набора каналов (band set) и построением RGB-композита. Основная часть посвящена формированию обучающей выборки — созданию ROI-областей вручную или алгоритмом наращивания областей (Region Growing) для классов «Вода», «Пустыня», «Городская застройка» и «Растительность» с иерархией макрокласс/класс. Далее рассматривается запуск классификации методом опорных векторов (SVM): предпросмотр на небольшом участке и полная классификация снимка. После изучения темы студент сможет установить и настроить SCP, сформировать обучающую выборку ROI и выполнить автоматическую классификацию снимка ДЗЗ методом SVM.

Пререквизиты
  • Практика 1 — поиск и скачивание снимков через STAC API Browser
  • Установленный QGIS с доступом к OSGeo4W Shell
Мотивация

Практика построена на снимке дельты Нила — территории, чья жизнь веками зависела от предсказуемости разливов реки. Ручная оцифровка водных объектов, застройки и пустынь на каждом новом снимке не масштабируется; классификация методом SVM, обученная один раз на представительной выборке ROI, позволяет автоматически размечать аналогичные снимки той же местности.

Практика 6 Знакомство с модулем SCP. Автоматическое дешифрирование

Данные для занятия Презентация

Semi-Automatic Classification Plugin (SCP) — это плагин для QGIS, который упрощает работу с данными дистанционного зондирования. С его помощью можно выполнить полный процесс: от получения космических снимков до их предобработки, постобработки и классификации.

Основные возможности, предоставляемые плагином: - Предобработка данных: включает корректировку атмосферных условий, выравнивание изображений и другие операции. - Сегментация изображений: выделение областей с похожими спектральными характеристиками. - Классификация изображений: поддерживает различные методы классификации, такие как: - Метод максимального правдоподобия - K-means - Поддержка векторных машин (SVM) и другие. - Обучение классификаторов: позволяет задавать области интереса (AOI) для обучения классификаторов и применения их для классификации изображений. - Оценка точности: включает методы для оценки точности классификации, такие как матрицы сопряженности.

Установка

При помощи панели «Пуск» найдите программу OSGeo4W Shell

поиск OSGeo4W Shell через панель «Пуск»
Рис. П6.1 — поиск OSGeo4W Shell через панель «Пуск»

Если вы ищете вручную, то найдите папку QGIS x.xx.x, внутри которой будет находиться OSGeo4W Shell (x.xx.x — это номер версии)

OSGeo4W Shell внутри папки QGIS x.xx.x в меню «Пуск»
Рис. П6.2 — OSGeo4W Shell внутри папки QGIS x.xx.x в меню «Пуск»

После запуска откроется консоль, предоставляющая доступ к внутренним функциям QGIS. Обычно её используют для установки дополнительных программных пакетов (не плагинов).

открытая консоль OSGeo4W Shell
Рис. П6.3 — открытая консоль OSGeo4W Shell

Введите следующую строку и нажмите Enter:

pip3 install --upgrade remotior-sensus scikit-learn torch

Примечание: если команда не работает, перейдите в раздел «Устранение проблем» в конце страницы.

вывод команды pip3 install --upgrade remotior-sensus scikit-learn torch в консоли
Рис. П6.4 — вывод команды pip3 install --upgrade remotior-sensus scikit-learn torch в консоли

После этого начнётся установка пакетов.

Warning

Убедитесь, что у вас есть стабильное подключение к интернету

После завершения установки (в консоли ничего не должно быть красного) можно открывать QGIS и переходить в раздел Модули -> Управление модулями

переход в QGIS: «Модули» → «Управление модулями»
Рис. П6.5 — переход в QGIS: «Модули» → «Управление модулями»

Во вкладке все или не установленные найдите модуль под названием Semi-Automatic Classification Plugin и нажмите кнопку установить

модуль Semi-Automatic Classification Plugin в окне менеджера модулей QGIS
Рис. П6.6 — модуль Semi-Automatic Classification Plugin в окне менеджера модулей QGIS

При корректной установке в интерфейсе QGIS появятся изменения: новая панель слева и новые кнопки на верхней панели инструментов (области выделены красным).

панель SCP Dock слева и панель инструментов ROI сверху — появляются в интерфейсе QGIS после установки плагина
Рис. П6.7 — панель SCP Dock слева и панель инструментов ROI сверху — появляются в интерфейсе QGIS после установки плагина

Задание для скачивания Sentinel-2A

Воспользуйтесь плагином STAC API Browser. Скачайте снимок со следующими характеристиками: - дата с 01.05.2021 по 01.09.2021; - облачность менее 30 %; - охват территории задайте вручную по данным с рисунка ниже.

поля ввода охвата территории (Север/Юг/Запад/Восток) в плагине STAC API Browser
Рис. П6.8 — поля ввода охвата территории (Север/Юг/Запад/Восток) в плагине STAC API Browser

В результате откроется снимок на территорию Египта с дельтой реки Нил. На снимке усилена контрастность, чтобы визуально подчеркнуть характерные участки.

снимок Sentinel-2 на территорию дельты Нила (контраст усилен для наглядности)
Рис. П6.9 — снимок Sentinel-2 на территорию дельты Нила (контраст усилен для наглядности)

Характеристика территории картографирования

Слава Нилу, в мир сошедшему,
Слава Нилу, жизнь дающему!
Свой исток во мраке кроющий,
Светом сумрак заменяешь ты,
Сады, нивы орошаешь ты!
Велишь – Нопри бдить над зернами,
Велишь – Себеку над хлебом бдить,
Велишь – Фта над ремеслом радеть.
Рыб создатель! их от птиц хранишь.
Нив радетель! ты века творишь.
Валерий Брюсов «Гимн Нилу». 1918

Разливы Нила являются результатом ежегодных муссонов в период с мая по август, вызывающих огромные осадки на Эфиопском нагорье, вершины которого достигают высоты 4550 м. Большая часть этой дождевой воды поступает в Нил через реки Голубой Нил и Атбара, и менее значительная часть через реки Собат и Белый Нил. В течение этого короткого периода на долю этих рек приходится до 90 % воды Нила и большая часть наносов, переносимых им, но после сезона дождей они вновь уменьшаются до небольших рек.

Наводнение, вызванное разливом, было закономерным и ожидаемым событием, хотя его точные даты и уровни можно было спрогнозировать только на краткосрочной основе, передав показания ниломеров из Асуана в нижние районы королевства, где данные должны были быть преобразованы с учетом местных условий. Однако заранее предвидеть масштаб наводнения и объём воды было нельзя.

Египетский год был разделен на три сезона: - Ахет (наводнение), - Перет (рост растений), - Шему (сбор урожая).

Ахет охватывал египетский цикл разлива Нила. Этот цикл был настолько последовательным, что египтяне приурочили его начало к гелиакическому восходу Сириуса, ключевому событию, использовавшемуся для составления их календаря.

фрагменты снимка дельты Нила с увеличением до масштаба отдельных участков поймы
Рис. П6.10 — фрагменты снимка дельты Нила с увеличением до масштаба отдельных участков поймы

Первые признаки подъема уровня воды в реке можно было увидеть у первого из порогов Нила (в Асуане) уже в начале июня, и устойчивый подъем продолжался до середины июля, когда прирост воды становился значительным. Уровень Нила продолжал подниматься до начала сентября, тогда уровень оставался неизменным в течение примерно трех недель. В октябре он часто поднимался снова и достигал своего наивысшего уровня. С этого периода уровень воды начинал снижаться, обычно до июня, когда снова достигал самого низкого уровня.

Разлив Нила начинался в Асуане примерно на неделю раньше, а в Луксоре — на 5-6 дней раньше, чем в Каире. Обычно высота уровня воды составляла: - 14 метров в Асуане,
- 12 метров в Луксоре и Фивах,
- 7,6 метра в Каире.

Начало работы с плагином SCP

Найдите вкладку SCP и выберите Band Set, как это сделано на рисунке.

пункт «Band set» в меню вкладки SCP
Рис. П6.11 — пункт «Band set» в меню вкладки SCP

Warning

К сожалению, плагин не видит слои, если они открыты не через его инструменты

При нажатии откроется окно, в котором будут собраны все инструменты плагина, однако сосредоточимся на открытии данных. Нажмите на значок, выделенный красным.

окно Band set с выделенной кнопкой добавления растрового слоя
Рис. П6.12 — окно Band set с выделенной кнопкой добавления растрового слоя

После выбора файла tif можно задать несколько наборов каналов (band set). Каждый набор каналов сохраняется вместе с проектом QGIS.

Для отображения композита (наборов каналов) нажмите кнопку RGB, после чего можно свернуть окно.

кнопка создания RGB-композита в блоке инструментов Band set
Рис. П6.13 — кнопка создания RGB-композита в блоке инструментов Band set

Переставьте каналы в полученном изображении: нажмите на слой правой кнопкой мыши (ПКМ), выберите «Свойства» → «Стиль» и поменяйте местами каналы 1 и 3.

окно свойств стиля слоя: назначение каналов Red/Green/Blue для RGB-композита
Рис. П6.14 — окно свойств стиля слоя: назначение каналов Red/Green/Blue для RGB-композита

Формирование обучающей выборки

Всякий обучаемый алгоритм нуждается в данных, которые размечает пользователь. Для этого в плагине SCP существует два удобных инструмента выделения ROI-областей.

Note

Region of Interest (ROI) — это термин в компьютерном зрении, обозначающий конкретную область на изображении или видео, которая представляет особый интерес и важность для текущей задачи.

Для начала работы перейдите во вкладку Training Input в левом нижнем окне и выберите место, куда будут сохранены данные по нарисованным областям ROI.

панель Training Input с пустым списком ROI и сигнатур после выбора файла *.scpx
Рис. П6.15 — панель Training Input с пустым списком ROI и сигнатур после выбора файла *.scpx

В данном месте появится файл *.scpx, в котором хранятся геометрические и спектральные характеристики объектов. Как только он создан, он настраивается с учетом спектральных свойств соответствующих каналов. Чтобы использовать Training Input с другим набором диапазонов, необходимо создать новый обучающий ввод, а затем импортировать существующий обучающий ввод с помощью кнопки библиотеки импорта.

ROI-область можно создать, нарисовав полигон вручную или с помощью автоматического алгоритма расширения области.

два инструмента создания ROI на панели: «Ручной» и «Наращивание области»
Рис. П6.16 — два инструмента создания ROI на панели: «Ручной» и «Наращивание области»

На карте переместитесь к дельте реки Нил в центре изображения. Чтобы вручную создать область интереса внутри тёмной области, нажмите кнопку на панели инструментов. Щёлкните ЛКМ по карте, чтобы определить вершины области интереса, и щёлкните ПКМ, чтобы определить последнюю вершину, замыкающую многоугольник. На изображении отображается оранжевый полупрозрачный многоугольник, который является временным (то есть он не сохраняется во входных данных для обучения).

временный ROI-полигон (оранжевый), нарисованный вручную поверх русла Нила
Рис. П6.17 — временный ROI-полигон (оранжевый), нарисованный вручную поверх русла Нила

Tip

Вы можете рисовать временные полигоны (предыдущий будет заменён) до тех пор, пока фигура не покроет нужную область.

Если форма временного полигона достаточно хорошо покрывает водную поверхность, мы можем сохранить его в обучающем наборе данных. Откройте обучающий набор данных, чтобы определить классы и макроклассы. В списке ROI и сигнатур установите MC ID = 1 и MC Name = «Вода» (Water); также установите C ID = 1 и C Name = «Река» (River). Теперь нажмите кнопку сохранения, чтобы сохранить ROI в обучающем наборе данных. Через несколько секунд ROI появится в списке ROI и сигнатур, а спектральная сигнатура будет рассчитана (поскольку «Сигнатура» отмечена).

поля ввода макрокласса (MC) и класса (C) для сохраняемого ROI в панели Training Input
Рис. П6.18 — поля ввода макрокласса (MC) и класса (C) для сохраняемого ROI в панели Training Input

Вы можете настраивать цветовое отображение будущих классов, нажав ПКМ дважды по цвету и выбрав нужный.

выбор цвета класса через палитру, открываемую двойным щелчком ПКМ по образцу цвета
Рис. П6.19 — выбор цвета класса через палитру, открываемую двойным щелчком ПКМ по образцу цвета

Теперь мы создадим вторую область интереса для нового класса с помощью алгоритма автоматического расширения области. Приблизьтесь к пустыне. На панели инструментов установите значение «Расстояние»(dist) на 0,03.

параметр Dist (порог схожести) установлен на 0,03 для алгоритма наращивания области
Рис. П6.20 — параметр Dist (порог схожести) установлен на 0,03 для алгоритма наращивания области

Нажмите кнопку и щёлкните по светло-жёлтым пескам на карте. Через некоторое время на изображении отобразится оранжевый полупрозрачный полигон.

итоговый список классов ROI: Water/River, Green/Field, Buildings/Builds — и создаваемый класс Desert/Sands
Рис. П6.21 — итоговый список классов ROI: Water/River, Green/Field, Buildings/Builds — и создаваемый класс Desert/Sands

Откройте окно «Training input», чтобы задать классы и макроклассы. В списке ROI и подписей установите MC ID = 2 и MC Name = «Пустыня»; также установите C ID = 1 и C Name = «Пески». Сохраните ROI.

Аналогичным образом сформируйте данные для городской застройки и зелёной растительности. Если не уверены, сверьтесь с картой. Примеры выделения представлены ниже.

пример ROI для класса «Городская застройка»
Рис. П6.22 — пример ROI для класса «Городская застройка»
пример ROI для класса «Зелёная растительность»
Рис. П6.23 — пример ROI для класса «Зелёная растительность»

Алгоритм наращивания областей

Tip

Значение Dist следует устанавливать в соответствии с диапазоном значений пикселей; как правило, увеличение этого значения приводит к увеличению ROI.

Алгоритм наращивания областей (Region Growing) применяется для сегментации изображений. Он начинается с одного или нескольких стартовых пикселей (затравок) и постепенно включает в область соседние пиксели, если они удовлетворяют заданному критерию схожести.

  1. Выбор начальных точек (затравок)

    • Задаются вручную или выбираются автоматически по определенным критериям (например, самые яркие пиксели).
  2. Определение критерия схожести

    • Часто используется пороговое значение разницы интенсивностей пикселей.
    • Возможны и более сложные критерии: цветовые характеристики, текстурные свойства.
  3. Добавление соседних пикселей

    • Проверяются 4 или 8 соседей текущего пикселя.
    • Если они удовлетворяют критерию схожести, они добавляются в область.
  4. Повторение процесса, пока не будет достигнуто условие остановки

    • Например, если больше нет подходящих соседей или достигнут заданный размер области.
1. Начальные точкиЗадаются вручную или выбираются автоматически (например, самые яркие пиксели)
2. Критерий схожестиПороговое значение разницы интенсивностей или другие признаки
3. Добавление соседейПроверяются 4 или 8 соседних пикселей текущей области
4. Проверка остановкиОстанов, если больше нет подходящих соседей или область достигла нужного размера

Пока условие остановки не выполнено, шаги 3–4 повторяются.

Рис. П6.24 — схема этапов алгоритма наращивания областей (Region Growing)

Выбор алгоритма классификации

Для выбора алгоритма классификации необходимо вернуться во вкладку SCP и выбрать Band Set. Затем перейти в раздел Band processingClassification.

переход в разделе SCP: «Band processing» → «Classification»
Рис. П6.25 — переход в разделе SCP: «Band processing» → «Classification»

В открывшемся списке алгоритмов раскройте пункт Support Vector Machine, чтобы увидеть его параметры, и сверните его обратно.

параметры алгоритма Support Vector Machine (SVM) в разделе Classification
Рис. П6.26 — параметры алгоритма Support Vector Machine (SVM) в разделе Classification

Предпросмотр

В предварительном просмотре классификации установите size (размер) = 200, нажмите кнопку предпросмотра, а затем щёлкните левой кнопкой мыши по точке на изображении на карте.

поле размера предпросмотра (size = 200) и кнопки предпросмотра/запуска классификации на панели инструментов
Рис. П6.27 — поле размера предпросмотра (size = 200) и кнопки предпросмотра/запуска классификации на панели инструментов

Процесс классификации должен быть быстрым, а результатом должен стать классифицированный квадрат с центром в точке щелчка.

результат классификации методом SVM: вода (синий), поля и растительность (зелёный), пустыня (коричневый), городская застройка (жёлтый)
Рис. П6.28 — результат классификации методом SVM: вода (синий), поля и растительность (зелёный), пустыня (коричневый), городская застройка (жёлтый)

Если результаты вас удовлетворяют, можно классифицировать весь снимок, нажав кнопку Run в предыдущем окне.

На этом первая автоматизация дешифрирования по собственным данным завершена.

Устранение проблем

  1. Попробуйте установить плагин через zip-архив (откройте QGIS, найдите вкладку «Модули» → «Управление модулями» → «Установить из ZIP-архива»).
  2. В процессе...
Контрольные вопросы