Технологиями лазерного сканирования уже трудно удивить кого-либо: с каждым днем их применение только возрастает. Такие технологии позволяют решать обширный круг задач: реинжиниринг, создание проектных подоснов, создание цифровых двойников, построение ЦМР, контроль геометрических параметров и множество других. И практически в любой из вышеприведенной задаче может быть использован механизм классификации.
В данной статье рассматривается инструментарий классификации программы «nanoCAD Облака точек» и несколько примеров, показывающих, как данный инструментарий (и не только он) может быть использован для решения ряда задач. Данный материал не является инструкцией, поэтому здесь в подавляющем большинстве случаев не приводятся скриншоты выполняемых команд и их параметры, а описывается общая идея инструмента и примеры решаемых задач.
Следует отметить, что, с одной стороны, команды, предназначенные для работы с классификацией, включены в Конфигурацию «Reclouds», а Конфигурации «Метрология» и «Геотехнический мониторинг» не имеют команд по работе с классами. С другой стороны, Конфигурация «Reclouds» содержит множество другого инструментария, который в данном материале мы не рассматриваем, так как акцентируем внимание на инструментарии классификации.
Классификация
Необходимо сразу отметить, что в широком понимании под классификацией можно понять любое распознавание геометрии в облаке точек − земля, провода, деревья, столбы, трубы, плоскости, двери, окна, оборудование и т.п.
При работе с облаками под классификацией обычно подразумевается разделение точек облака на определенные группы, номер которых сохраняется в соответствующем атрибуте точки, который называется «класс» и занимает 1 байт информации.
Соответственно:
в облаке может быть максимум 256 классов;
класс определяется именно числом, а не текстовым описанием, и именно число будет использовано при передаче облака из одной системы в другую.
существуют особенности использования классов более 31-го (в соответствии со спецификацией las), но их мы не будем здесь затрагивать.
В таблице ниже представлены классы в соответствии со спецификацией Las, на которую и ориентируются практически все программы, работающие с облаками.
Номер класса |
Назначение (англ.) |
Назначение |
0 |
Created, never classified |
Создано, не классифицировано |
1 |
Unclassified |
Не классифицировано |
2 |
Ground |
Земля |
3 |
Low Vegetation |
Низкая растительность |
4 |
Medium Vegetation |
Средняя растительность |
5 |
High Vegetation |
Высокая растительность |
6 |
Building |
Здание |
7 |
Low Point (noise) |
Низкий шум |
8 |
Reserved |
Зарезервировано |
9 |
Water |
Вода |
10 |
Rail |
Железная дорога |
11 |
Road Surface |
Дорожное покрытие |
12 |
Reserved |
Зарезервировано |
13 |
Wire – Guard (Shield) |
Проволочное заграждение |
14 |
Wire – Conductor (Phase) |
Провод (фаза) |
15 |
Transmission Tower |
Опора ЛЭП |
16 |
Wire-structure Connector (e.g., Insulator) |
Изолятор |
17 |
Bridge Desk |
Мостовой настил |
18 |
High Noise |
Высокий шум |
19-63 |
Reserved |
Зарезервировано |
64-255 |
User definable |
Определяемые пользователем |
Как можно заметить, стандарт больше ориентирован на элементы, представляющие интерес специалисту, работающему на площадке. Здесь не выделены такие классы, как стены, окна, трубопровод, канализация, водоснабжение, вентиляция, оборудование и т.п. Если производится работа с облаком, представляющим собой здание либо технологический объект и требуется разделить облако на подобные классы, то следует использовать пользовательские классы, начиная с 64 (а точнее, начиная с 100, по причине, описанной ниже).
Программа nanoCAD Облака точек при использовании команды автоматизированной классификации по формам также использует определенные классы, приведенные в таблице ниже. Поэтому для пользовательских нужд я рекомендую использовать классы, начиная с 100.
Номер класса |
Назначение |
65 |
Плоскость |
66 |
Цилиндр |
67 |
Ребро |
68 |
Узел |
69 |
Трубопровод |
70 |
Зарезервировано |
71 |
Сфера |
72 |
Тройник |
73 |
Конус |
74 |
тор |
Следует отметить, что в зависимости от облака и параметров импортирования, может оказаться, что канал класса в облаке отсутствует.
В таком случае при работе в версии 24.1 и более ранних команды классификации не будут выполняться, а в командной строке будет выведено следующее сообщение.

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

Также следует отметить следующее: если до 25 версии класс мог быть связан со слоем (т.е. управление отображением могло осуществляться с использованием слоев, как это принято в CAD-системах), то начиная с 25 версии такой режим исключен.
Автоматическая классификация
В автоматическом режиме на данный момент осуществляется классификация точек земли и классификация шумов. При распознавании земли также производится классификация растительности, но здесь не происходит распознавания травы либо деревьев. Ряд точек, находящихся на определенной высоте относительно поверхности земли, определяется в соответствующий класс низкой, средней или высокой растительности.
Что касается распознавания трубопроводов, здесь вопрос скорее дискуссионный: можно ли данную процедуру называть классификацией − во время распознавания можно одновременно переводить точки в соответствующие классы, но все же это механизм распознавания трубопроводов, на выходе из которого мы получаем формы, для работы с которыми разработан соответствующий функционал.
Если целью является построение ЦМР, то без инструментария классификации земли никак не обойтись.
Дело в том, что обычно поверхность никогда не бывает с одной стороны «чистой», а с другой стороны – прямой. Обязательно встречается трава, различная растительность и прочие объекты, где-то получается понижения, где-то небольшие (или большие) повышения местности. Соответственно встает необходимость выделения точек земли, чтобы в дальнейшем построить по ним поверхность земли (ЦМР) и выполнять последующие задачи.

Поскольку поверхность земли практически всегда не является ровной (в тех редких случаях, когда у нас имеется ровная площадка, задача по построению ЦМР теряет смысл), нельзя просто выбрать точки, координата Z которых имеет определенное значение. Соответственно нужен определенный интеллектуальный алгоритм, который среди множества точек сможет выбрать ряд точек, расположенных ниже всех и при этом корректно обрабатывает уклоны и склоны бугров и небольшие неровности, но в то же время растительность за неровность земли не считает.
Команда «Классифицировать землю» как раз и решает вопрос определения «истинных» точек земли. На рисунке ниже представлено классифицированное облако, где точки земли отображены коричневым цветом.

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

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

Дальше уже осуществляется работа с землей и облако в принципе здесь не используется. Для работы могут быть использованы уже специализированные программы, которые работают с землей: Модуль Топоплан в рамках nanoCAD или nanoCAD GeoniCS. Но и в nanoCAD Облака точек также есть набор команд, которые позволят:
выполнить корректировку сети;
подсчитать разность объема сети (например, между проектной и фактической поверхностями);
подсчитать объем поверхности (актуально для задач по определению объема сыпучих материалов);
построить разность поверхностей;
выполнить ряд других задач.
Описание подобных задач уже выходит за рамки данного материала.
Верификация земли
Рассказывая о классификации земли, нельзя не упомянуть об инструменте по верификации земли. Этот инструмент можно сравнить с напильником, с помощью которого можно подработать землю.
При использовании данного инструмента экран разделяется на две части. На правой части можно хорошо заметить провалы или наоборот, пики, которых быть не должно.

Используя соответствующие кнопки (см. рисунок ниже),

ошибочные точки земли можно превратить в точки модели (задать определенный класс) и, наоборот, точки модели перевести в класс земли и таким образом получить почти идеальную поверхность земли (см. рисунок ниже).

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

Происходит это из-за того, что часть точек «провалилась» под землю. Соответственно, эти точки и стали считаться реальной землей, а точки, расположенные сверху, − растительностью.


В этом случае можно выполнить Классификацию нижних шумов или Классификацию ошибочных точек земли. Эти две команды довольно похожи в работе и решают одну и ту же задачу − перевод ошибочных точек в класс нижних шумов (7). Немного различается принцип выбора точек: в классификации нижних шумов используются первоначально ячейки, размер которых задается в единицах чертежа. Если установить соответствующее значение, то можно добиться высокой скорости обработки облака. Классификация ошибочных точек земли оперирует окрестностью, то есть количеством близлежащих точек, на основании которых строится кластер. Также, если есть уже распознанная земля, то команда «классификация нижних точек» не будет обрабатывать точки, лежащие выше земли.
На рисунке ниже представлен результат классификации: ошибочные точки перешли в класс 7 (нижний шум - 7) и представлены фиолетовым цветом.

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

Случается иная ситуация, когда, например, в воздухе присутствуют частички пыли, от которых отражается лазерный луч и получаются лишние точки. Если у нас имеется поверхность земли, то такие точки можно перевести в класс 17 (Верхний шум), используя команду «Классификация верхних шумов».
На следующем рисунке показано облако, вверху − до применения команды, внизу – после.


Ручная классификация
Механизм ручной классификации предельно прост: тем или иным образом выделяются точки на экране (режим полигона, режимы над и под линией), и этим точкам присваивается соответствующий класс, который определяет пользователь.
Данный инструментарий будет полезен как для очистки облака от «мусора», так и для разделения точек по классам (например, отдельно выделить металлоконструкции), чтобы в дальнейшем с облаком было более удобно работать.
Например, в облаке обычно имеется ряд точек, которые не нужны для анализа. Это могут быть шумы либо посторонние объекты. Например, на следующем рисунке можно увидеть фигуру человека, которая к проекту никакого отношения не имеет.

Казалось бы, первое действие, которое напрашивается, – выполнить обрезку. Но при этом действии точки из облака не удаляются. В принципе, можно создать новое облако на основе обрезанной информации, но это уже будет новое облако, которое будет занимать свое место. В некоторых случаях это будет решением вопроса, но также для этой задачи можно использовать инструментарий классификации без создания нового облака.
Также надо понимать, что обрезка – это инструментарий, который используется на каждом шагу, то есть временная сущность. Можно конечно, выполнить обрезку и сохранить результат как именованный вид (это тоже одно из решений), но здесь есть определенные нюансы: во-первых, именованные виды сохраняются в чертеже, а не в облаке. Во-вторых, к именованным видам нельзя применить логические операции «и / или» − например, показать точки, которые входят в вид А и в вид B. А вот если использовать классы, то работа получается аналогичной работе со слоями: определённые слои могут включаться или выключаться, в зависимости от задачи. Правда, это больше относится не к задаче исключения «мусора», а к задаче разделения точек по классам (трубопроводы, опоры, оборудования и т.п.).
Соответственно, например, задачу «удаления» нежелательных точек можно решить с использованием механизма классификации: выделяем эти лишние точки и переводим, например, в класс верхних шумов (17).
Автоматизированная классификация
В решении nanoCAD Облака точек имеются команды по автоматизированной классификации. Тут основная идея заключается в назначении класса исходя из уже имеющихся атрибутивных данных.

Например, если были распознаны формы (о чем будет говориться в дальнейшем), то точку можно отнести к соответствующему классу на основании типа формы. Для этого используется команда «По форме». Таким образом, можно получить классы типа «плоскость», «трубопровод», «тройник». Но вот получить классы типа «наружные стены», «кровля», «трубопровод канализации» не получится, так как в типе форм отсутствует информация о конкретном объекте. Здесь уже придется использовать ручную классификацию.
Довольно часто приходится использовать классификацию «По классу». Данная команда аналогична ручной классификации за исключением того, что не требуется выбирать точки вручную: команда обрабатывает все точки, которые в данный момент являются видимыми. Например, если оставить видимыми только формы, которые относятся к кровле, то при использовании данной команды эти точки можно отнести к пользовательскому классу, соответствующему кровле, без выбора точек пользователем.
Также можно отметить интересную команду, которая позволяет выполнить классификацию по цвету. Точки, точки имеющие примерно указанный цвет (степень приближения настраиваются), выбираются и переносятся в соответствующий класс. Команда может быть полезна, когда требуется разнести по разным классам элементы, которые окрашены в определенные цвета.
На рисунке ниже слева показано исходное облако, справа – результат выбора точек по цвету.


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

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

Если же дополнительно к трубопроводам надо посмотреть оборудование и фундаменты, их также можно включить (конечно, если они были выделены отдельными классами).

Как я упоминал ранее, исключение лишней информации также можно было бы выполнить с помощью инструментария обрезки и именованных видов, но при этом надо иметь в виду:
именованные виды сохраняются в чертеже, а не в облаке;
к именованным видам нельзя применять логическую операцию «или». То есть, например, если выделены два вида: опоры и трубопроводы, то нельзя показать одновременно трубопроводы с опорами.
После того, как разобрались, «зачем это нужно», давайте рассмотрим, «как это можно сделать».
Для начала можно попытаться использовать функционал распознавания плоскостей, чтобы выделить большие плоскости типа «земля», «пол» или «кровля» − эти плоскости должны содержать в данном случае более 100 000 точек.
Здесь стоит сказать, что распознавание плоскостей может быть выполнено либо по алгоритму «одной точки», либо по алгоритму «трех точек». В первом случае работа осуществляется быстрее, но требуется более качественное облако (улучшить качество можно через механизм прореживания) и вычисленные нормали. Второй способ более медленный, требует задание параметров «мин. расстояние» и «макс. расстояние», но не требует вычисленных нормалей и работает с более шумными облаками.


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

Теперь можно использовать ручную классификацию, чтобы выбрать точки на экране и перевести их, например, в класс «земли», либо можно использовать команду из набора автоматизированной классификации по классу. В этом случае все видимые точки перейдут в класс «земли» (код 2).
Есть еще вариант использовать команду классификации по форме. В этом случае всем видимым точкам (они принадлежат формам, имеющим тип «плоскость»), будет присвоен класс 65 (плоскость).
После этого следует завершить изоляцию объектов, чтобы вернуться в предыдущее состояние визуализации. Исключение − формы, которые были перенесены в соответствующий класс земли и который был отключен.

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

Затем, например, можно произвести распознавание трубопроводов.

С помощью команды «Классифицировать по форме» распознанные трубопроводы можно перевести в соответствующий класс (66, 69, 72):

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

Это позволит выключать либо включать определенные классы в соответствии с потребностями, как показано ниже.




Заключение
В данной статье мы расмотрели инструментарий автоматизированной классификации (классификация земли и шумов), инструментарий ручной и автоматизированной классификации, а также привели примеры использования инструментария классификации для подготовки облака к дальнейшей работе.
Инструментарий классификации (совместно с инструментарием распознавания форм) может использоваться не только в направлениях, связанных с ЦМР, но и при решении других задач − например, при работе с технологическими объектами.
Подготовил
Лоза Александр Викторович
Руководитель группы трёхмерного моделирования
АО «Бюро САПР»