2016-03-13 3 views
0

Я принимаю участие в проектных исследованиях, связанных с облаками точек.Алгоритм вычисления объема части точечного облака

Мы должны создать веб-приложение. Чья задача будет отображать облако точек из файла .ply. Затем выберите область и вычислите ее объем. Алгоритм подсчета объема должен быть реализован в C++. Единственное, что у нас есть, это файл в формате .ply и файле с XYZ-координатами всех точек. Облако точек, которые мы получаем, генерируется на снимке, сделанным беспилотом. Например, это облако точек, представляющих горную местность. Наша задача - выбрать такую ​​гору и рассчитать ее приблизительный объем с учетом ошибки +/-. Измерение не должно быть идеальным, но оно должно быть даже близко к реальному объему горы. Объем должен быть рассчитан с плоской поверхности в самой низкой точке горы.

У меня есть два вопроса для вас. -Первый, не могли бы вы дать мне ключ, ссылку или что-нибудь, что поможет мне найти такой алгоритм и причины, по которым он лучший. -Всегда у любого из вас есть идея, что было бы лучшим способом выбрать какую-либо область из облачного облака?

Я искал эту информацию. Но я не могу найти ничего, что было бы достаточно полезно, чтобы использовать его в нашем проекте. Любой наконечник или документ по этому вопросу был бы очень полезен;)

+0

Ваши очки случайно лежат на равномерной сетке x-y? – wonce

ответ

1

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

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

Более сложный подход предполагает вычисление минимальной выпуклой оболочки. Это нетривиальная проблема.

Было бы еще сложнее, если бы вы пытались найти конверт, который не обязательно был выпуклым.

В любом случае важно точно определить, что подразумевается под «томом», прежде чем вы сможете создать эффективный алгоритм для его вычисления.

+0

Да. Вы правы, я не уточнил, что я имею в виду. Облако точек, которые мы получаем, генерируется на снимке, сделанным беспилотным летательным аппаратом. Например, это облако точек, представляющих горную область. Наша задача - выбрать такую ​​гору и рассчитать ее приблизительный объем с учетом ошибки +/-. Измерение не должно быть идеальным, но оно должно быть даже близко к реальному объему горы. Объем должен быть рассчитан с плоской поверхности в самой низкой точке горы. – Kaltair

0

Как вы работаете с pointclouds сгенерированным «из фотографирования с помощью беспилотного летательного аппарата» (я предполагаю, что здесь, что вы имеете в виду что-то вроде: фотограмметрической процесса над дроновой образностью):

  • Первого:

Взгляните:

This

Или попробуйте разработать подход, основанный на octrees.

Если вы идете для разработки собственного подхода, и вы хотите его в C++, обратите внимание на: This и This

  • Второе:

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

  • Extra:

Только в случае, если вы не знаете еще, я рекомендую CloudCompare всем, кто работает над чем-то PointCloud связанных.

Надеюсь, что эти ссылки могут вам помочь.