Обнаружение стен с использованием PCL и RANSAC - PullRequest
0 голосов
/ 04 августа 2020

Я работал над обнаружением стен в файле PCD (Point Cloud Data), используя PCL (Point Cloud Library). Файл PCD был создан с помощью камеры глубины. Я обнаружил, что во многих подобных приложениях, например, при обнаружении пола, использовался RANSA C. Итак, я подумал о применении RANSA C и здесь, и я изо всех сил старался понять RANSA C в целом, но у меня все еще есть определенные вопросы, касающиеся моего приложения:

  1. Короче говоря, RANSA C пытается удалить выбросы в заданных данных и итеративно обобщить выбросы с помощью модели. Итак, в случае обнаружения пола, будет ли он рассматривать остальные облака точек, соответствующие другим объектам, как выбросы, а пол - как второстепенные? То же самое и со стенами?

  2. Согласно Учебник по сегментации модели плоскости от PCL, RANSA C дает коэффициенты плоскости модели, т.е. a, b, c и d в уравнении плоскости: от a*x + b*y + c*z + d = 0 до coefficients->values вектор. Итак, я предполагаю, что в случае обнаружения стены, он попытается дать уравнение плоскости, соответствующей стене. Однако что, если камера глубины находится в углу комнаты и вид стен сверху выглядит так:

стена 1
______________
|
|
| стенка 2
|
|

Итак, как в этом случае будет выглядеть полученная модель самолета? Будет ли это своего рода гипотенуза (составляющая треугольник)?

wall 1
---------------------
|
| стенка 2
|
----------------------
стена 3

Как бы это выглядело даже в этом случае?

Согласно Извлечению индексов из учебника PointCloud с помощью PCL, фильтр ExtractIndices <pcl::ExtractIndices> используется для извлечения подмножества точек из облака точек на основе индексов, выводимых алгоритмом сегментации. Но что именно делает этот фильтр? Фактически, в случае обнаружения пола или обнаружения стены (при условии, что есть только одна прямая стена), RANSA C уже дает уравнение для одной плоскости. Итак, есть ли необходимость в использовании этого фильтра? Если да, то почему и как?

Как я могу обнаружить несколько стен в следующем случае? ExtractIndices <pcl::ExtractIndices> фильтр может такое? Если да, то как?

стена 1
---------------------
|
| стенка 2
|
----------------------
стена 3

Если вы думаете, что есть способы лучше, чем использование RANSA C тогда также дайте мне знать.

...