1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/shudengdeng-pcl-csharp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Важно обновить

2024929: После долгого отсутствия обновлений этого репозитория я обнаружил, что многие люди используют эту библиотеку. Я очень рад, что мой вклад в открытое ПО оказался полезен. Единственное, что меня расстраивает, это то, что я обнаружил, что некоторые люди используют мою библиотеку с открытым исходным кодом для зарабатывания денег, и одна образовательная организация (я не буду называть её) напрямую использует мою библиотеку для коммерческих целей. Более того, меня обвиняют в плагиате другие люди, которые используют демонстрационные версии моей библиотеки. Это действительно неприятно. Я не могу гарантировать, что все будут уважать мои авторские права, поэтому я изменил лицензию на GNU. В этом соглашении я скажу только о важных моментах:

  1. Если вы изучаете эту библиотеку исключительно с технической точки зрения, я приветствую вас, вы можете изменять этот код по своему усмотрению и вносить свой вклад в эту библиотеку.
  2. Если вам нужно использовать эту библиотеку для заработка, программное обеспечение, которое зависит от этой библиотеки, также должно быть открытым исходным кодом, и вы должны указать мой вклад в файле авторских прав. Это самый важный момент в этом соглашении!

2022629, вчера пользователь использовал мою библиотеку, но получил сообщение об ошибке «PclDLL не загружен». После удалённой помощи я наконец понял, что это произошло потому, что в модуле Io были добавлены функции VTK, но соответствующие DLL не были добавлены в зависимости. Эта проблема уже решена. DLL, связанные с VTK, теперь находятся в каталоге depend/x64.

20221214, наконец-то я закончил свою диссертацию, и она не была выбрана для слепого рецензирования, чему я очень рад. Позже мне предстоит защита диссертации. Впоследствии я постепенно улучшу эту библиотеку, учитывая мои текущие навыки программирования, в этой библиотеке не используются некоторые шаблоны проектирования для создания всего проекта, поэтому расширяемость и возможность повторного использования этой библиотеки не так хороши. Сейчас уже очевидна проблема: некоторые пользователи хотят обрабатывать данные структуры PointXYZRGB, но эта библиотека поддерживает только структуру данных PointXYZ, если вы хотите поддерживать PointXYZRGB или другие типы структур, вам придётся повторять инкапсуляцию алгоритмов, и возможность повторного использования кода вообще не проявляется (ручная шутка). Эту проблему можно решить только после того, как я изучу шаблоны проектирования и переработаю проект. Если кто-то хочет обрабатывать данные структуры типа PointXYZRGB и т. д., им остаётся только загрузить исходный код, а затем создать его самостоятельно, следуя моим идеям. Кстати, сегодня я обновил демонстрацию модуля сегментации, данные облака точек были созданы с помощью activiz и представляют собой круглое облако точек. Основное внимание уделяется алгоритму сегментации облака точек на основе евклидова расстояния и алгоритму сегментации на основе роста области.

1 Введение

Для обработки 3D облаков точек Pcl является обязательным инструментом. Подобно тому, как OpenCV является кристаллизацией 2D информации о получении и обработке, Pcl занимает аналогичное положение в 3D информации о получении и обработке. Однако, в отличие от opencv, который имеет множество оболочек .NET, таких как OpencvSharp и emgucv, в настоящее время нет надёжной оболочки Pcl .NET (PclSharp не поддерживается уже много лет, а текущая версия содержит слишком много ошибок). Это не способствует разработке приложений, связанных с 3D облаками точек, пользователями .NET. Чтобы решить эту проблему, я разработал оболочку Pcl для облака точек .NET: PclCSharp. Эта библиотека инкапсулирует версию Pcl 1.8.1 и в основном интегрирует функции обработки облака точек в Pcl, но не инкапсулирует функцию визуализации облака точек. Поскольку визуализация облака точек в pcl реализуется через vtk, а у vtk есть версия C#, пользователи могут использовать vtk для визуализации облака точек и использовать эту библиотеку для обработки облака точек. В настоящее время эта библиотека поддерживает только платформу Windows10 X64.

2 Использование Пожалуйста, добавьте звезду к этому репозиторию, чтобы дать мне мотивацию продолжать создавать. Эта библиотека определённо стоит звезды. Если во время использования вы обнаружите какие-либо ошибки, вы можете связаться со мной по электронной почте 2237380450@qq.com, и я буду постоянно поддерживать эту библиотеку. Эта библиотека была инкапсулирована в среде VS2017 и .NET Framework4.6.1. Основные инкапсуляции включают четыре DLL: PointCloudSharpDll, PclCSharp, PointCloudDll и PclDll. Среди них первые два являются DLL, инкапсулированными C#, и они являются оболочками для последних двух DLL. Конкретные отношения зависимости между ними показаны ниже. При фактическом использовании вам нужно только сослаться на PointCloudSharpDll и PclCSharp в .net. Однако необходимо поместить все остальные две DLL и все DLL, от которых зависят эти две DLL, в каталог exe. Конечно, вы также можете поместить их в system32 или в папку, указанную переменной среды. Рекомендуется размещать их в каталоге exe. Все зависимые DLL помещаются в каталог depend/x64. Помните, что все DLL, перечисленные на рисунке ниже, должны быть размещены вместе с PointCloudSharpDll и PclCSharp без пропусков, иначе будет сообщено об ошибке System.DllNotFoundException: «Невозможно загрузить DLL». Также следует отметить, что для pcl_common_release этой DLL требуются все системные DLL и DLL времени выполнения C++. Для системных DLL достаточно, чтобы это была нормальная система Windows 10 (эта библиотека была инкапсулирована на win10, поэтому это должна быть система win10), и соответствующие DLL будут включены в system32, поэтому нет необходимости добавлять их дополнительно. Что касается DLL C++, большинство компьютеров с установленным программным обеспечением для программирования также будут включать их, поэтому их также не нужно добавлять дополнительно. Пользователям нужно только поместить четыре DLL в bin (PointCloudSharpDll, PclCSharp, PointCloudDll и PclDll) и все DLL в каталоге depend / x64 вместе в путь exe, чтобы использовать его.

3 Пространство имён

3.1 PointCloudSharp пространство имён

PointCloudSharp инкапсулирует данные структуры этой библиотеки. В настоящее время структура pcl::PointCloud<pcl::PointXYZ> и vector<pcl::PointIndices> инкапсулированы, и соответствующие классы C# — PointCloudXYZ и PointIndices. Другие структуры данных будут инкапсулироваться постепенно. Подробности см. в разделе doc каталога функций.

3.2 PclSharp пространство имён

Это пространство имён включает алгоритмы обработки облаков точек в pcl. На данный момент оно инкапсулирует пять статических классов в Io, Filter, Segmentation, SampleConsensus и Util, каждый из которых примерно соответствует модулю pcl, и последующие модули будут добавляться постепенно. Отношения между различными классами показаны ниже. Подробности см. в разделе doc каталога функций.

4 Демонстрация функций В каталоге demo представлены примеры на языке C#. Этот демонстрационный пример включает примеры каждого модуля. Конкретная реализация функций см. в каталоге demo. Соответствующие файлы облаков точек можно найти в каталоге source.

4.1 IoDemo

Этот демонстрационный пример в основном представляет собой пример модуля Io. В этом примере я показываю, как загружать файлы форматов pcd, ply, obj и stl, а также использую vtk для визуализации. Кроме того, вы можете использовать этот демонстрационный пример для сохранения загруженных файлов в формате pcd или ply. Результаты показаны ниже. ### 4.2 FilterDemo

Данный демо-пример в основном касается модуля Filter. В этом примере автор демонстрирует, как можно выполнить понижающую дискретизацию, равномерную выборку, фильтрацию по радиусу, статистическую фильтрацию и прямую фильтрацию для стола (table_scene_lms400.pcd), а также визуализировать результаты с помощью VTK.

Изображение облака точек стола:

image-20220626165020630

После понижающей дискретизации с параметром выборки 0,08 облако точек стола становится очень разреженным.

image-20220626165123571

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

image-20220626165304908

После фильтрации по радиусу с параметрами поиска радиуса 0,08 и количества порогов 40 удаляются некоторые выбросы на левой стороне облака точек стола.

image-20220626165425771

После прямой фильтрации с осью фильтрации x, минимальным значением x 0,4 и максимальным значением x 1 удаляются выбросы вдоль оси x облака точек стола.

image-20220626165616868 ### 4.3 SegDemo

Этот демо-пример посвящён модулю Segmentation. В нём автор показывает, как динамически генерировать облако круглых точек с помощью VTK, а затем использовать евклидову кластеризацию и рост областей для разделения сгенерированного облака точек. После нажатия кнопки «Создать облако точек» в поле будет динамически генерироваться облако круглых точек.

Облако точек:

image-20221214110107474

Из изображения видно, что данные облака точек явно разделены на три категории, которые были разделены с использованием евклидовой кластеризации и роста областей. Результаты евклидовой кластеризации:

image-20221214110359616

Результаты роста областей:

image-20221214110715918

В этих данных рост областей не так эффективен, как евклидова кластеризация, потому что эти данные были созданы искусственно, и расстояния между группами точек очевидны. Евклидова кластеризация хорошо работает в таких случаях, и требуется только установить порог расстояния, что делает её более простой и эффективной, чем рост областей.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Для библиотеки облаков точек PCL существует .NET-обёртка, которую можно использовать в C# и VB.net. Развернуть Свернуть
GPL-3.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/shudengdeng-pcl-csharp.git
git@api.gitlife.ru:oschina-mirror/shudengdeng-pcl-csharp.git
oschina-mirror
shudengdeng-pcl-csharp
shudengdeng-pcl-csharp
master