В следующей статье мы рассмотрим CloudCompare. Это программное обеспечение для обработки трехмерных облаков точек и треугольной сетки. Цель этого приложения — провести сравнение двух плотных трехмерных облаков точек, например, полученных с помощью лазерного сканера. Кроме того, он также предназначен для сравнения облака точек и треугольной сетки. CloudCompare и ccViewer в настоящее время работают в системах Gnu / Linux, Windows и macOS. Программа выпущена под лицензией GNU General Public License (GPL), поэтому пользователь может использовать их для любых целей.
Благодаря обновлениям CloudCompare стал более универсальное программное обеспечение для обработки облаков точек, включая множество передовых алгоритмов как: rРегистрация, повторная выборка, манипуляции с цветным / нормальным / скалярным полем, статистические вычисления, управление датчиками, интерактивное или автоматическое нацеливание, улучшение визуализации. и еще кое-что.
Эта программа была первоначально создана в результате сотрудничества между Telecom ParisTech и отделом исследований и разработок EDF. Проект CloudCompare стартовал в 2003 году, когда Даниэль Жирардо-Монто получил докторскую степень по обнаружению изменений в трехмерных геометрических данных. В то время его основной целью было быстрое обнаружение изменений в трехмерных облаках точек высокой плотности, полученных с помощью лазерных сканеров на промышленных объектах или строительных площадках. Позже он превратился в более общее и продвинутое программное обеспечение для обработки 3D-данных. Теперь это автономный проект с открытым исходным кодом и бесплатное программное обеспечение.
Индекс
- 1 Общие функции CloudCompare
- 2 Установите CloudCompare в Ubuntu
- 2.1 деинсталляция
- CloudCompare предоставляет набор основных инструментов для ручного редактирования и рендеринга трехмерных облаков точек и треугольных сеток. Он также предлагает несколько расширенных алгоритмов обработки, включая методы для выполнения:
-
- Прогнозы (на основе раскручивающихся осей, цилиндров или конуса, …)
- Записывать (ICP, …)
- Расчет расстояния (cloud-cloud или cloud-mesh расстояние от ближайшего соседа, …)
- Статистический расчет (пространственный тест Хи-квадрат, …)
- Сегментация (маркировка подключенных компонентов, основанная на прямом распространении, …)
- Оценка геометрических характеристик (плотность, кривизна, шероховатость, ориентация геологической плоскости, …)
- CloudCompare может обрабатывать неограниченное количество скалярных полей для каждого облака точек, к которому могут применяться различные специализированные алгоритмы (сглаживание, оценка градиента, статистика и т. д.). Система динамического воспроизведения цвета помогает пользователю эффективно визуализировать скалярные поля для каждой точки.
- Пользователь сможет интерактивно сегментировать 3D-объекты (с 2D-полилинией, нарисованной на экране), интерактивно вращать / перемещать один или несколько объектов относительно других, интерактивно выбирать отдельные точки или пары точек (чтобы получить длину соответствующего сегмента) или точечные тройки (чтобы получить угол и плоскость, соответствующие нормальности). Последняя версия также поддерживает создание 2D-меток, прикрепленных к точкам или аннотациям прямоугольных областей.
- Механизм подключаемых модулей позволяет еще больше расширить возможности CloudCompare.
Установите CloudCompare в Ubuntu
Чтобы установить CloudCompare в Ubuntu, пользователи могут использовать пакет Flatpak, который можно найти в плоская ступица. Если вы используете Ubuntu 20.04 и в вашей системе по-прежнему не включена эта технология, вы можете продолжить гид что коллега написал в этом блоге некоторое время назад.
Когда вы сможете установить эти типы приложений на свой компьютер, вам нужно будет только открыть терминал (Ctrl + Alt + T) и запустить следующее команда установки:
flatpak install flathub org.cloudcompare.CloudCompare
После завершения установки вы можете запустить программу ищем соответствующий лаунчер на нашем компьютере, хотя команду можно записать и в терминале:
flatpak run org.cloudcompare.CloudCompare
деинсталляция
к удалить эту программу, необходимо только открыть терминал (Ctrl + Alt + T) и выполнить в нем следующую команду:
flatpak uninstall org.cloudcompare.CloudCompare
CloudCompare — бесплатное программное обеспечение (Хотя платить за программное обеспечение не обязательно, его разработчики приветствуют пожертвования от тех пользователей, которые считают его полезным.). По любым вопросам, сообщениям об ошибках или предложениям пользователи могут проверить форум проекта, его хранилище на Github или сайт проекта.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Набор данных ICL-NUIM является набором данных RGBD. Формат данных и набор данных TUM являются «совместимыми» (аналогичными) и могут использоваться для оценки SLAM RGBD. Кроме того, этот набор данных также обеспечивает истинное значение трехмерной среды, среды, среда, среда, среда Таким образом, его можно использовать для его использования. При оценке результатов трехмерной реконструкции RGBD в этой статье в основном рассказывается, как использовать программное обеспечение CloudCompare набора данных ICL-NUIM для сравнения результатов трехмерной реконструкции и аутентичной Значения предоставлены и, наконец, генерируют горячую картину, например, следующее:
Установка CloudCompare
CloudComparez = Это программное обеспечение представляет собой перекрестное программное обеспечение, Windows, Mac, Linux можно использовать, официальный адрес загрузки веб -сайта выглядит следующим образом:http://www.cloudcompare.org/
Если ваша система Ubuntu16.04, то поздравляю, установка очень проста, просто введите:
snap install cloudcompare
Для других версий дистрибуции Ubuntu или Linux см. Официальный учебник по веб -сайту.
Используйте CloudCompare для оценки
Мы в основном оцениваем трехмерное облако, которое мы восстанавливаем. ), давайте поговорим о том, как выравнивать оценку облака оценки и истинное значение облака оценки и расстояния между ними, а затем генерировать горячую картину.
Примечание: я в этом процессеhttps://www.doc.ic.ac.uk/~ahanda/VaFRIC/living_room.htmlСодержание этих веб -страниц такое же, как в видео, но если оригинальное видео поступает с YouTube, вы знаете.
1. Сначала загрузите файл obj групповой истины, а затем загрузите созданный вами файл Ply, как показано ниже ::
Здесь вы обнаружите, что сетка на внешней поверхности реального значения черная. Это не то же самое, что реальность в видео выше. В видео включается то, что я использую Meshlab, чтобы открыть его, но я открываю его здесь. может быть изменен, но нет никакого влияния).
Как показано на рисунке выше, Living-behind.obj здесь является истинным значением, а Room0.klg.ply ниже-трехмерная облачная модель I.
2. (Необязательно) Сделайте введенное изображение в качестве преобразования. Если это набор данных ICL-NUIM, вам необходимо выполнить это преобразование. Сначала переверните файл PLY, а затем выберите преобразование Edit-Apply, POP Следующий интерфейс, мы добавляем отрицательный знак перед второй строкой, а затем нажимаем OK:
Причина, по которой это преобразование сделано из -за того, что оценочный облачный файл точек и истинное значение являются зеркальным симметричным, поэтому я должен сделать это изменение здесь, сначала, эта операция не нужна.
3. Выравнивание
Затем он выровнен, потому что нам нужно только использовать вершину «Реальные вершины», поэтому мы сначала отменяем весь сетку (то есть следующее:
В настоящее время реальная ценность OBJ остается только вершинами, и это становится следующим образом:
Затем удерживайте CTRL и выберите два файла (обратите внимание, что вершины и ваш ply -файл в OBJ), как показано ниже:
Затем нажмите кнопку «Красный круг» ниже. Эта кнопка представляет собой выравнивание двух облаков, поднимая (не менее 4) эквивалентные пары точек, то есть не менее 4 пар, чтобы выровнять две точки:
После нажатия кнопки, чтобы появиться, это означает, что вам нужно выбрать выровненную сущность. Здесь мы выбираем Room0-Cloud, поскольку вершины верны, мы должны выровнять комнату 0 с вершинами:
После нажатия OK появится:
Мы начали выбирать две точки на двух точках. Здесь нам нужно выбрать как минимум четыре группы, то есть раздел «красный» и «желтый» каждый выбор не менее четырех точек, и точки с одинаковым серийным номером должны быть Один за другим, после выбора точек, щелкните выравнивание, а затем вы обнаружите, что две точки почти перекрываются, а затем нажмите крюк в правом нижнем углу, чтобы определить.
4. Рассчитайте расстояние и генерируйте горячие изображения
Затем выберите эти два снова:
Затем нажмите на значок «Красный круг» ниже:
Появится следующая страница, отмените подписанные расстояния, нажмите Compute, и OK может быть:
Затем результат горячей карты будет отображаться в начале, и вы можете настроить отображаемый цвет в свойствах ниже и отобразить карту установки столбца справа. Просто выберите Visible:
Другой
Если вы хотите сохранить представление страницы, вы можете выбрать рендеринг для файла отображения страницы и сохранить его в изображении BMP. Если вы не хотите отображать 3D -поле, вам нужно только выбрать любую опцию, и 3D -поле исчезнут. В настоящее время вы можете выполнить работу сохранения изображения.
Если вы хотите изменить цвет фона, вы можете нажать на первый значок компьютера на панели инструментов слева: лучше всего превратить цвет фона в черный:
Обратите внимание, что следующий фон градиента отображения отменен:
Выше всего содержимое этой статьи. Если вы вам полезны, пожалуйста, дайте мне похвалу, спасибо! Пересечение Пересечение
Программное обеспечение
В начало справки ⇡
Для практической работы вам понадобится открытая программа CloudCompare. Информацию о ней можно найти на домашнем сайте, там же можно скачать себе дистрибутив программы. Для этого выберите Latest stable release (2.11.3 Anoia) – Windows iconWindows 64 bits Stereo.
Также для работы нам потребуется ГИС-пакет с открытым исходным кодом SAGA, который можно скачать по ссылке. Программа не требует установки.
Работа с ТЛО в CloudCompare
В начало справки ⇡
В программе через меню File – Open откройте ваш фрагмент облака точек. Для того чтобы точки облака приобрели цвет (скаляр), указываем, что переменной цвета соответствует координата Z. Для этого вызываем меню Edit – Scalar Fields — Export coordinates to SF и выбираем координату.
Облако точек с настроенным скалярным значением
Для классификации облака точек на точки земли и точки всего остального вызываем меню Plugins – CSF Filter. В Advanced parameters обязательно укажите параметр cloth resolution (разрешение).Результат классификации добавится в виде отдельных облаков точек.
С помощью инструмента Segment 

Для получения растровой поверхности, горизонталей и mesh-модели используется кнопка 
Окно настроек растеризации
Для запуска процесса растеризации нажмите на кнопку Raster и укажите путь для сохранения файла GeoTIFF. Опционально вы можете построить горизонтали Contour plot.
Обработка данных в QGIS
В начало справки ⇡
При открытии в QGIS для поверхности, соответствующей земле выполните заполнение пустых ячеек инструментом Raster – Analysis – Fill nodata….
Для нахождения высоты объектов над рельефом можно воспользоваться калькулятором растров и вычесть одну поверхность из другой.
В QGIS доступны некоторые инструменты автоматизированного упрощения геометрии, что применимо к автоматически построенным горизонталям. Выберите в главном меню Vector – Geometry Tools – Simplify…. Откроется инструмент, упрощающий геометрию объектов. Для линейных объектов рекомендуется выбирать алгоритм Дугласа-Пейкера.
Окно инструмента упрощения
Данный алгоритм убирает вершины согласно заданному порогу, который устанавливается пользователем на основе масштаба и детализации исходных данных.
В QGIS есть инструмент для сглаживания векторных объектов. Для его использования нужно открыть окно Processing и в нём найти инструмент Vector Geometry – Smooth.
Окно инструмента сглаживания
Обратите внимание, что оба инструмента не изменяют текущий слой, а создают новый.
Упрощение и сглаживание объектов доступно в индивидуальном порядке в текущем слое на панели инструментов дополнительной оцифровки. Выбрав редактируемый слой в режиме редактирования, нажмите на кнопку 
Окно выбора метода упрощения и сглаживания
Карпачевский А.М. Основы дистанционного зондирования и фотограмметрии. М.: Географический факультет МГУ, 2023.
Search code, repositories, users, issues, pull requests…
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up
Время на прочтение
6 мин
Количество просмотров 2.3K
Наш маленький стартап решил испытать силы в трёхмерном моделировании городской инфраструктуры. Стоит сразу оговориться, что подразумевается не высокоточное геодезическое картографирование, а оперативное получение трехмерной карты на движущемся транспорте. Для решения этой задачи подобрали бесхозный лидар (трехмерный сканер) и соорудили конструкцию для установки на автомобиль. Надо было быстро и дешево отработать прототип софта для сбора информации. В стек навигации входила инерциалочка и GPS-приёмник. После нескольких заездов по Санкт-Петербургу основной проблемой оказалась точная склейка трехмерных сканов по данным навигации. Чтобы обойти этот момент, мы решили испробовать SLAM-алгоритм чтобы карта строилась только по лидарной съемке. В результате SLAM у нас получилась карта в локальной системе координат, относительно старта маршрута. Для заказчика требовалось выдать трехмерную карту с географической привязкой.
После каждой поездки сохранялся набор облаков точек и трек маршрута. На выходе мы должны получить объединенный pointcloud, где каждая точка будет в глобальной географической системе координат.
Для подготовки и привязки мы использовали open source редактор Cloud compare.
Объединение облаков точек
SLAM сохраняет данные в виде набора PCD-файлов, которые необходимо предварительно объединить. Далее буду описывать шаги в виде инструкции-памятки.
-
Нажимаем
File → Openи выбираем группу облаков для склейки. После подтверждения должно быть аналогично: -
Выделяем с помощью Shift все облака для объединения.
-
Объединяем через
Edit → Merge. На вопрос типа «Generate scalar fields…» отвечаем No. Получилось объединенное облако. -
Нажимаем
File → Saveи выбираем удобный формат для сохранения.
Обрезка облака
При объединении попался неудачно отсканированный участок, давайте обрежем его.
-
Нажимаем
File → Openи выбираем облако для обрезки. Либо работаете с открытым далее. Допустим, оно у вас как в примере и вы хотите убрать лишнюю нижнюю часть: -
Выбираем инструмент
Edit → Segment. Сверху справа появляется дополнительная панель и сверху по центру надпись текущего режима: Segmentation [ON]. Значит мышь теперь работает в режиме выделения контура для обрезки. Выделяем контур однократным нажатием ЛКМ, после окончания ПКМ. Должен получиться шатёр такого вида: -
Если всё устроило, то нажимаем белый многоугольник на красном фоне с подсказкой Segment Out во временной панельке сверху.
-
Выделенная зона пропадает из видимости, надпись текущего режима: Segmentation [PAUSED]. Теперь надо нажать зеленую галочку на той же панели для применения удаления. После этой процедуры создаются два облака — одно с постфиксом .remained, другое с .segmented. Нажимая галочки в правой панели с названиями облаков можно отключить их видимость и посмотреть результат.
-
Нажимаем
File → Saveдля инвестирующего облака и выбираем удобный формат для сохранения.
Процедура геопривязки
Геопривязка подразумевает преобразование координат облака из локальной системы к глобальной. Этот раздел сделан на основе видео. Общая идея следующая — чтобы произвести переход от одной системы координат к другой, необходимо получить матрицу трансформации 4×4, которая бы однозначно перевела бы все точки облака. Для получения такой матрицы надо построить связь между тремя точками облака и тремя точками на карте. Для примера взят файл облака с Богатырским проспектом:
Если посмотрите на параметры слева снизу, то размер коробки с моделью будет:
X: 1029.14
Y: 461.169
Z: 89.9612
Для более удобной работы немного раскрасим модель, для этого выбираем пункт Edit → Scalar fields → Add point indexes as SF:
Далее нам необходимо обнаружить этот же участок на карте, можно пользоваться картами google, чтобы получить координаты для любой точки по нажатию.
Теперь осталось определить такие точки, которые легко обнаруживаются на карте и легко найти в облаке. После анализа были выбраны такие точки:
-
Перекресток Богатырского и Туристской
-
Точка между двумя «рамками», где второй съезд с Богатырского
-
Точка под «рамкой» на Шуваловском проспекте
Теперь нужно получить координаты для этих точек. Для карты это широта, долгота, для облака это XYZ. Для получения координат точек в CloudCompare выбираем Tools → Point picking. Покажем на примере перекрестка:
Координаты точки: (391.702393;-27.628052;2.057297)
Теперь то же самое на картах, просто кликаем мышью:
Координаты точки: (60.006764,30.212293)
Для удобства представления и конвертации выбрали проекцию Меркатора (UTM). Можно воспользоваться бесплатным сервисом latlong.net. Аналогично с остальными двумя местами. У вас должна получиться табличка такого типа (значения немного уточнены):
|
long |
lat |
UTM e |
UTM n |
XYZ cloud (octree) |
|
|---|---|---|---|---|---|
|
1. Пересечение богатырского и туристской |
30.212343 |
60.006768 |
344573.39 |
6655440.61 |
(376.377075;-20.382690;-0.272736) |
|
2. Между двух столбов на закруглении |
30.201111 |
60.008157 |
343953.94 |
6655621.66 |
(-235.253906;98.682617;-1.751526) |
|
3. Под вторым столбом, где шуваловский |
30.197818 |
60.006714 |
343763.61 |
6655468.82 |
(-410.510803;-71.153931;-1.030060) |
Теперь надо сделать маленькую модельку с координатами UTM, для этого создаёте текстовый файл. Для примера georef.asc с содержимым:
CENT,344573.39,6655440.61,0.0,255,0,0
STO2,343953.94,6655621.66,0.0,0,255,0
LSTO,343763.61,6655468.82,0.0,0,0,255
Первая колонка — название точки, затем координаты (z=0), компоненты цвета r,g,b для удобства. Загружаем файл в CloudCompare, в окне выбираем Apply, затем на вопрос Rescale отвечаем No, иначе координаты все потеряются. После загрузки облака сильно разнесены друг от друга.
Теперь начнем совмещение. Выбираем оба облака. Затем Tools → Registration → Alighn(points pairs picking) В появившемся окне выбираем перемещаемое облако (bogatirskii_small). Появляется сверху справа табличка, в которой в верхней половине вводим координаты модели, а в нижней координаты UTM опорных точек. Надо внимательно переносить чтобы последовательность точек была одинаковая.
В правой колонке указана величина ошибки, в нашем случае максимальная ошибка 14 метров при совмещении. Можно поискать другие опорные точки, но для примера подойдет. Нажимаем align, рассчитывается матрица и выполняется трансформация.
На скриншоте видно как совместились точки. Если всё устраивает, то нажимаем зеленую галочку. В окне отобразится трансформационная матрица и средняя ошибка (10.446). Всё, теперь готово, проверяем смещение координат. Нажимаем на bogatirskii_small слева и смотрим Global Box Center:
X: 344176.843750
Y: 6655525.500000
Z: -0.003010
Далее сохраняем в удобном формате. Мы выбрали LAS, так как он является определенным стандартом для работы с pointcloud. Однако, для корректного перехода в LAS предлагаю сохранение в формате Ascii Cloud с префиксом .xyz (bogatirskii_georef.xyz). Тогда начало файла будет вида:
344050.87500000 6655427.50000000 -2.37526727
344050.96875000 6655427.50000000 -2.09358692
344050.90625000 6655427.50000000 -1.77294660
344063.78125000 6655432.00000000 14.17946529
344083.50000000 6655438.00000000 -2.25361919
344083.53125000 6655438.50000000 -2.18411636
344069.46875000 6655448.50000000 -4.81668091
344073.34375000 6655450.00000000 -4.93998623
344142.00000000 6655462.50000000 -1.68570638
344427.09375000 6655324.00000000 0.06759101
344479.12500000 6655306.50000000 -2.23689747
Теперь можно через lastools сконвертировать в LAS с указанием зоны:
>txt2las -i bogatirskii_georef.xyz -o bogat_geo.las -parse xyz -utm 36V
Как не потерять точность
При трансформации система может выдать сообщение следующего вида:
Это значит что при применении трансформации, будет потеряна точность в координатах и часть точек сольется, получится сетчатая структура (это ограничения самого CloudCompare). Чтобы этого не произошло, предлагается использовать отрицательный сдвиг начала координат, а при сохранении его учесть. Нажимаем YES. Получаются результаты такого вида:
Shifted box center:
X: 60.3544
Y: 31.0959
Z: 72.9026
Global box center:
X: 343560.354370
Y: 6654031.095917
Z: 72.902580
Всё нормально. Теперь можно сохранить, например в LAS/LAZ. Чтобы добавить информацию по проекции надо воспользоваться утилитой las2las из комплекта LasTools:
las2las -i my_file.laz -o my_file_utm.laz -utm 36V
Файл геопривязан и есть сведения о проекции.
Проверка расположения в GoogleEarth
Можно приблизительно оценить регион геопривязки. Получаем shape-файл из LAS:
las2shp.exe bogat_fp2_geo.laz
В каталоге сгенерируется файл bogat_fp2_geo.shp. Теперь открываем его GoogleEarth. Если он очень большой можно загрузить часть. Выделяем галочкой и смотрим на маячки.
Выводы
В результате получилось геопривязанное облако, приемлемого качества. Во всяком случае, заказчику понравилось. Конечно, минус такого подхода — использование разных, не совсем удобных утилит. Конечно, хотелось бы работать в одной мощной среде. Основное преимущество — не надо платить за дорогое коммерческое решение для редких задач привязки облаков.
Ссылки
-
Cloud compare
-
LasTools
-
Сервис latlong.net
-
Видео с инструкцией по геопривязке CloudCompare













































