Арборитм
АРБОРИТМWEB
Методология и точность

Конвейер обработки Арборитм реализует запатентованный способ таксации лесных насаждений (EA 052273 B1), который последовательно преобразует облако точек воздушного лазерного сканирования в поштучный перечёт деревьев с таксационными характеристиками. Ниже описан каждый этап обработки — что он делает, зачем нужен и на каких алгоритмических принципах основан.

Получение и подготовка данных

Входными данными для конвейера служит облако точек сверхплотного воздушного лазерного сканирования, полученное с беспилотного воздушного судна. Алгоритм не привязан к конкретному типу БПЛА или лидарного сканера — принимаются данные от любого оборудования при условии достаточной плотности облака точек.

Полученные с дрона данные сшиваются в единое облако точек, после чего облако разбивается на участки определённого размера для параллельной обработки. Каждый участок проходит нормализацию высот — процедуру, при которой абсолютные высоты точек (над уровнем моря) пересчитываются в относительные (над поверхностью земли). После нормализации значение высоты каждой точки на кроне дерева соответствует реальному расстоянию от земли до места отражения лазерного импульса. Это критически важный шаг: без нормализации деревья на склоне холма казались бы разной высоты просто из-за рельефа.

Детекция вершин деревьев

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

На полученном растре запускается алгоритм поиска локальных максимумов. Локальный максимум — это пиксель, чья высота превышает все окружающие пиксели. Каждый такой максимум рассматривается как потенциальная вершина дерева. Алгоритм работает итеративно: начиная от начальной точки, он ищет наивысший пиксель в окрестности, переходит к нему и повторяет поиск до тех пор, пока результат не стабилизируется.

После обнаружения потенциальных вершин проводится их фильтрация. Контролируется Евклидово расстояние между парами близлежащих вершин: для каждой вершины выбираются ближайшие соседи и оценивается, не находятся ли некоторые из них слишком близко друг к другу. Итеративный процесс исключения «лишних» вершин позволяет убрать ложные детекции, вызванные неоднородностью поверхности кроны.

Сегментация крон

На основе обнаруженных вершин выполняется сегментация — разделение облака точек на группы, каждая из которых соответствует отдельному дереву. Для этого используется алгоритм, описанный Dalponte и соавторами (2016). Каждый локальный максимум становится начальной точкой («затравкой») для формирования сегмента кроны. Алгоритм расширяет область вокруг вершины, включая соседние пиксели, если их высота соответствует критериям однородности. Расширение продолжается до тех пор, пока не будут достигнуты границы кроны, определяемые резким снижением высоты.

После первичной сегментации информация о границах крон переносится на облако точек: каждой точке присваивается метка конкретного дерева на основе её горизонтальной позиции.

Выделение ярусов

Лесные насаждения часто имеют многоярусную структуру, где под кронами основного яруса растут деревья меньшей высоты. Для учёта второго яруса в конвейере применяется метод контроля волн плотности отражений.

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

Контроль числа деревьев в сегменте

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

На более высоком разрешении заново детектируются локальные максимумы внутри каждого сегмента. Если обнаружено более одной вершины, сегмент подлежит повторной сегментации. Для разделения одновременно применяются два независимых метода: построение диаграммы Вороного (разделение пространства по ближайшей вершине) и сегментация методом водораздела (разделение по «долинам» на поверхности высот). Финальный результат определяется как пересечение обоих методов — к одному дереву относятся только те пиксели, которые оба метода отнесли к одному и тому же классу. Такой подход повышает надёжность разделения перекрывающихся крон.

Классификация пород

Для каждого сегментированного дерева формируется набор признаков, характеризующих его морфологию и спектральные свойства. Классификация выполняется методом опорных векторов (SVM) — алгоритмом машинного обучения, который находит оптимальную разделяющую гиперплоскость в многомерном пространстве признаков.

Морфологические признаки извлекаются из трёхмерной структуры дерева. Облако точек каждого дерева проецируется на несколько вертикальных плоскостей, проходящих через центр дерева с определённым угловым шагом. На каждой проекции анализируется силуэт кроны: алгоритм строит контурный многоугольник, описывающий форму дерева в профиль, и сравнивает его с набором эталонных геометрических фигур — треугольником, эллипсом, прямоугольником и их вариациями. Степень соответствия силуэта каждой фигуре формирует числовой вектор, который отражает характерную форму кроны данной породы. Например, ель в профиль ближе к треугольнику, а берёза — к эллипсу или шару.

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

Модель SVM обучена заранее на эталонных данных и в текущей версии распознаёт четыре основных породы деревьев.

Расчёт таксационных показателей

На основе результатов сегментации и классификации формируется список деревьев, где каждая запись содержит высоту и породу. Для расчёта диаметра и объёма используются нормативные лесотаксационные таблицы.

Определение диаметра дерева выполняется по таблицам разрядов высот. Эти таблицы содержат эмпирическую зависимость между высотой, диаметром, породой и разрядом высот для конкретного лесотаксационного района. Разряд высот — категориальный параметр, который может быть указан пользователем (на основе опыта или данных лесоустройства) или определён автоматически на основе математического анализа распределения высот деревьев на участке. Зная породу (определённую алгоритмом на предыдущем этапе) и разряд, алгоритм находит в таблице значение высоты, наиболее близкое к фактически измеренной, и берёт соответствующий диаметр.

Объём ствола рассчитывается по стандартным формулам вычисления запаса на основе полученных диаметра и высоты. Суммирование объёмов по участку даёт итоговые таксационные показатели: общий запас, запас по породам, запас по ступеням толщины — отдельно для основного и второго ярусов.

Итог обработки

На выходе конвейера — векторный слой с контурами каждого дерева и таблицей атрибутов: координаты, высота, порода, ярус, диаметр, объём. Данные экспортируются в форматах Shapefile и GeoJSON для использования в любой ГИС. Агрегированные показатели по участку формируют таксационную ведомость, соответствующую требованиям нормативных документов.

Подробности о точности метода приведены в разделе Точность и валидация. Полный перечень научных источников — в разделе Библиография.