Статья:

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

Конференция: CXXXI Студенческая международная научно-практическая конференция «Молодежный научный форум»

Секция: Технические науки

Выходные данные
Смирнов А.А. Разработка кроссплатформенного приложения для автоматизации процесса подготовки данных для обучения нейронной сети распознаванию деревьев по кроне // Молодежный научный форум: электр. сб. ст. по мат. CXXXI междунар. студ. науч.-практ. конф. № 21(131). URL: https://nauchforum.ru/archive/MNF_interdisciplinarity/21(131).pdf (дата обращения: 06.11.2024)
Лауреаты определены. Конференция завершена
Эта статья набрала 0 голосов
Мне нравится
Дипломы
лауреатов
Сертификаты
участников
Дипломы
лауреатов
Сертификаты
участников
на печатьскачать .pdfподелиться

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

Смирнов Артём Александрович
магистрант, Мытищинский филиал МГТУ имени Н. Э. Баумана, РФ, г. Москва

 

Аннотация. В статье рассматриваются создание кроссплатформенного приложения для процесса подготовки данных. Работа с las файлами, отображение с помощью OpenGL, и работа с облаком точек с использованием библиотеки CGAL.

 

Ключевые слова: Кроссплатформенное приложение, C++, Qt, OpenGL, CGAL.

 

Разработка библиотеки

Структура las файла состоит из трёх блоков

  • PUBLIC HEADER BLOCK
  • VARIABLE LENGTH RECORDS
  • POINT DATA RECORDS

по этой структуре были созданы три класса, как три блока (public header block, variable length records, point data records) и два вспомогательных класса - класс файла, класс конвертор. Класс файла нужен для взаимодействия приложения с моей библиотекой. Класс конвертор нужен для преобразования двоичного кода в параметры понятные людям.

Отображение Las файлов

Отрисовка облака точек идет через видеокарту с использованием шейдеров. В данной работе использован QOpenGLWidget. QOpenGLWidget предоставляет три удобные виртуальные функции, которые нужно переопределить в своем подклассе для выполнения типичных задач OpenGL:

  • paintGL () - Визуализирует сцену OpenGL. Вызывается всякий раз, когда виджет нуждается в обновлении.
  • resizeGL () - Устанавливает окно просмотра OpenGL, проекцию и т. д. Получает вызов всякий раз, когда размер виджета изменяется (а также когда он отображается в первый раз, потому что все вновь созданные виджеты автоматически получают событие изменения размера).
  • initializeGL () - Устанавливает ресурсы и состояние OpenGL. Вызывается один раз перед первым вызовом resizeGL () или paintGL ().

Класс, который используется для отображения точек в приложении, наследуется от двух классов QOpenGLWidget и QOpenGLFunctions.

QOpenGLFunctions предоставляет гарантированный API, доступный во всех системах OpenGL, и заботится о разрешении функций в системах, которые в нем нуждаются. Рекомендуемый способ использования QOpenGLFunctions - прямое наследование.

Работа с облаком точек

В основе работы с облаком точек лежит kd-дерево. KD-Tree(K-мерное дерево), специальная 'геометрическая' структура данных, которая позволяет разбить K-мерное пространство на 'меньшие части', посредством сечения этого самого пространства гиперплоскостями(K > 3), плоскостями (K = 3), прямыми (K = 2) ну, и в случае одномерного пространства-точкой.

Разбиение используется для сужения диапазона поиска в k-мерном пространстве. Все объекты помещаются в специальные параллелепипеды bounding box-ы (bounding box-ом назовем такой параллелепипед, который описывает исходное множество объектов или сам объект, если мы строим bounding box лишь для него. У точек в качестве bounding box-а берется bounding box с нулевой площадью поверхности и нулевым объемом), стороны которых параллельны осям координат.

Разработанные инструменты для работы с облаком точек.

Ручная обработка точек:

  • Разбиение одного файла на несколько файлов;
  • Механическое удаление точек в пространстве.

Автоматическая обработка точек:

  • Удаление выбросов(шумов);
  • Уменьшение количества точек;
  • Сглаживание для уменьшения шума.

В основе удаление выбросов лежит алгоритм K - ближайших соседей. Этот алгоритм является самым простым алгоритмом классификации.

На вход метода псевдослучайного удаления точек приходит массив с точками. Количество удаляемых точек 3%.

Уменьшение количества точек при помощи сетки, облако точек покрывается сеткой с размером ячейки равной переменной epsilon. Для расчёта epsilon вычисляется средний интервал от k ближайших соседей. И если в секции окажется несколько точек, то они замещаются одной.

Иерархическое уменьшение точек, облако точек рекурсивно делится на мелкие кластеры. Рассчитываются центройды и все точки которые находятся рядом с центройдой объединяются в одну точку.

Сглаживание - этот метод сглаживает входные точки, проецируя каждую точку на параметрическую поверхность, расположенную над ее ближайшими соседями. Использует KD-дерево.