GIS-LAB

Географические информационные системы и дистанционное зондирование

Классификация данных ДЗЗ используя метод опорных векторов и imageSVM

Руководство к действию для классификации данных методом опорных векторов

Обсудить в форуме Комментариев — 10

Метод опорных векторов (Support Vector Machines) - один из способов решения задачи классификации из группы методов машинного обучения (Machine Learning).

Это статья не ставит целью объяснение того как работает SVM, но пошагово демонстрирует процесс классификации с программным обеспечением imageSVM, использующим IDL и работающим в ENVI.

Для начала работы, необходимо иметь 1 или несколько снимков, например Landsat. Пример рассмотренный здесь связан с дешифрированием классов изменений, поэтому используется два изображения за разные года.

ImageSVM можно загрузить, предварительно зарегистрировавшись на сайте Университета Гумбольдта, он может работать под IDL ENVI и в виртуальной машине IDL, без ENVI. Получить ImageSVM.

Установка и запуск imageSVM

Сбор тренировочных данных

Перед началом работы необходимо собрать некоторое количество тренировочных данных в точечной форме, где каждой точке соответствует выходной класс. Значение класса должно храниться в одном из атрибутивных полей, например ID. Рекомендованное количество точек - 100 на класс. Рекомендуется производить сбор тренировочных данных в порядке увеличения класса 1, 2, 3 и т.д., это облегчит управление данными и экспорт результирующей классификации в формат GeoTIFF.

Система координат точечного слоя должна совпадать с СК классиицируемых данных ДЗЗ.

Точечный слой должен иметь корректный PRJ файл.

Подготовка данных ДЗЗ

В качестве исходных данных используются изображения в формате GeoTIFF. В случае дешифрирования классов изменений, как правило необходимо собрать данные ДЗЗ в единое композитное изображение, где первая группа слоёв соответствует снимкам "до", а вторая "после".

Это можно сделать в QGIS, ERDAS IMAGINE, ENVI (подробнее).

Если мультиканальное изображение сделано не в ENVI, то далее необходимо:

Открыть мультиканальный снимок в ENVI: File\Open Image File

Сохранить файл как standard ENVI raster: File\Save File As\ENVI Standard

Закрыть изначально открытый снимок и переоткрыть его из файла ENVI Standard.

Предобработка данных ДЗЗ

Для работы со снимком в imageSVM необходимо сначала масштабировать растр.

imageSVM\Pre-Processing\Scale image

Необходимо выбрать: Individual Bands и Set extreme Values to 0/1, а также указать имя выходного файла. После этого необходимо нажать Accept.

Подготовка тренировочных данных

Откроем точечный слой в формате shape: File\Open Vector File

В диалоге открытия, убедимся в правильности имени и пути выходного файла EVF (они назначаются автоматически) и убедимся что правильно распозналась проекция слоя. Нажмем OK.

Экспортируем слой в ROI

Для этого выберем его в появившемся списке слоев:

Выберем: Choose File\Export layers to ROI

Сконвертируем все записи слоя EVF в новый ROI используя поле ID в качестве источника значений:

Откроем масштабированное изображение в просмотровщике данных. Для этого вызовем список растровых слоёв: Window\Available Bands List

Откроем в просмотровщике снимок, не важно в какой комбинации: Load RGB

Чтобы вызвать редактор ROI щелкнем правой кнопкой на изображении и выберем ROI Tool, появится окно с таблицей где каждой точке ROI соответствует запись:

ROI Tool используется, чтобы объединить все точечные значения в единые тренировочные классы и назначить им цвета. Объединение производится следующим образом:

1. В меню: Options\Merge Regions
2. В новом окне, выбираем первую запись для первого класса как Base ROI (левая часть окна). Иногда, список пролистан в конец, в этом случае необходимо переместиться в самое начало.
3. В правой части окна, нужно выбрать все ROI имеющие тот же класс (например ID=1), для выбора можно использвоать SHIFT. Таким образом, слева выбираем первую запись класса, справа - все записи этого класса. Переключатель Delete Merged ROIs должен быть установлен в Yes.
5. OK

В результате все ROI будут объединены по ID этого класса.

Эту операцию нужно повторить для других классов. Не забудьте каждый раз изменять базовый ROI. После того как все классы объединены, щелкните правой кнопкой на каждый класс и выберите подходящий цвет, который будет обозначать этот класс на результирующей классификации.

Далее нужно растеризовать тренировочные данные: Options\Create Class Image from ROIs. Для этого, выберите все классы и нажмите OK, будет создано новое изображение и файл hdr.

Можно также сохранить созданные классы и в векторной форме. Для этого в ROI Tool выберите: File\Save ROIs, выберите все классы и имя файла и нажмите OK.

Векторный слой будет иметь расширение *.roi. После этого ROI Tool можно закрыть.

Параметризация

Для обучения классификатора с помощью тренировочных данных выберите: imageSVM\Classification\Parameterize SV Classifier (SVC)

Выберите масштабированное изображение и созданную растровую тренировочную матрицу и нажмите Accept:

Далее нужно выбрать имя файл в который будет сохранена обученная модель:

Нажмите OK и дождитесь окончания процесса. Он может занять несколько минут в зависимости от количества тренировочных данных. Например: для 1200 тренировочных точек на Pentium 4 параметризация занимает 2.5 минуты.

Классификация

Полученную модель можно использовать для классификации изображения:
imageSVM\Classification\Classify Image

Выберите файл SVC созданный при параметризации на предыдущем шаге и масштабированное изображение и нажмите Accept:

В следующем окне выберите имя для результирующей классификации и выключите режим Output Class Probabilities для более быстрого обсчета. Нажмите Accept.

Классификация может занять значительное время, для сцены Landsat с 12 каналами (6 каналов за период) и 1200 тренировочных точек время классификации составляет примерно 2 часа.

Обсудить в форуме Комментариев — 10

Последнее обновление: September 09 2021

Дата создания: 04.08.2010
Автор(ы): Максим Дубинин