pcfitplane

Соответствуйте плоскости к 3-D облаку точек

Описание

model = pcfitplane(ptCloudIn,maxDistance) соответствует плоскости к облаку точек, которое имеет максимальное допустимое расстояние от точки inlier до плоскости. Функция возвращает геометрическую модель, которая описывает плоскость.

Эта функция использует Демонстрационное Согласие M-средства-оценки (MSAC) алгоритм, чтобы найти плоскость. Алгоритм MSAC является вариантом Согласия Случайной выборки (RANSAC) алгоритм.

model = pcfitplane(ptCloudIn,maxDistance,referenceVector) соответствует плоскости к облаку точек, которому задали дополнительные ограничения ориентации 1 3 referenceVector входной параметр.

пример

model = pcfitplane(ptCloudIn,maxDistance,referenceVector,maxAngularDistance) соответствует плоскости к облаку точек, которое имеет заданное максимальное угловое расстояние.

[model,inlierIndices,outlierIndices] = pcfitplane(ptCloudIn,maxDistance) дополнительно возвращает линейные индексы в inlier и точки выброса во входе облака точек.

[___,meanError] = pcfitplane(ptCloudIn,maxDistance) дополнительно возвращается, средняя погрешность расстояния inlier указывает на модель, с помощью любого из предыдущих синтаксисов.

пример

[___] = pcfitplane(ptCloudIn,maxDistance,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы.

Примеры

свернуть все

Загрузите облако точек.

load('object3d.mat')

Отобразите и пометьте облако точек.

figure
pcshow(ptCloud)
xlabel('X(m)')
ylabel('Y(m)')
zlabel('Z(m)')
title('Original Point Cloud')

Установите максимальное расстояние точки к плоскости (2 см) для плоского подбора кривой.

maxDistance = 0.02;

Установите вектор нормали плоскости.

referenceVector = [0,0,1];

Установите максимальное угловое расстояние до 5 градусов.

maxAngularDistance = 5;

Обнаружьте первую плоскость, таблицу, и извлеките его из облака точек.

[model1,inlierIndices,outlierIndices] = pcfitplane(ptCloud,...
            maxDistance,referenceVector,maxAngularDistance);
plane1 = select(ptCloud,inlierIndices);
remainPtCloud = select(ptCloud,outlierIndices);

Установите необходимую область ограничивать поиск второй плоскости, оставленной стену.

roi = [-inf,inf;0.4,inf;-inf,inf];
sampleIndices = findPointsInROI(remainPtCloud,roi);

Обнаружьте левую стену и извлеките ее из остающегося облака точек.

[model2,inlierIndices,outlierIndices] = pcfitplane(remainPtCloud,...
            maxDistance,'SampleIndices',sampleIndices);
plane2 = select(remainPtCloud,inlierIndices);
remainPtCloud = select(remainPtCloud,outlierIndices);

Постройте эти две плоскости и остающиеся точки.

figure
pcshow(plane1)
title('First Plane')

figure
pcshow(plane2)
title('Second Plane')

figure
pcshow(remainPtCloud)
title('Remaining Point Cloud')

Входные параметры

свернуть все

Облако точек, заданное как pointCloud объект.

Максимальное расстояние от inlier указывает на плоскость, заданную как скалярное значение. Задайте расстояние в модулях, которые сопоставимы с модулями, которые вы используете в облаке точек.

Типы данных: single | double

Ссылочное ограничение ориентации, заданное как 1 3 вектор.

Типы данных: single | double

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

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'SampleIndices',[].

Линейные индексы точек к выборке в облаке точки ввода, заданном как разделенная запятой пара, состоящая из 'SampleIndices'и вектор-столбец. Пустой вектор означает, что все точки являются кандидатами к выборке в итерации RANSAC, чтобы соответствовать плоскости. Когда вы задаете подмножество, только точки в подмножестве производятся, чтобы подобрать модель.

Обеспечение подмножества точек может значительно ускорить процесс и сократить количество испытаний. Можно сгенерировать вектор индексов использование findPointsInROI метод pointCloud объект.

Максимальное количество случайных испытаний за нахождение inliers, заданный как разделенная запятой пара, состоящая из 'MaxNumTrials'и положительное целое число. Увеличение этого значения делает выход более устойчивым, но добавляет дополнительные расчеты.

Процент уверенности для нахождения максимального количества inliers, заданного как разделенная запятой пара, состоящая из 'Confidence'и числовой скаляр, в области значений [0 100]. Увеличение этого значения делает выход более устойчивым, но добавляет дополнительные расчеты.

Выходные аргументы

свернуть все

Геометрическая модель плоскости, возвращенной как planeModel объект.

Когда облако точки ввода не содержит достаточно актуальных вопросов, или когда функция не может найти достаточно точек inlier, коэффициенты для выходной модели обнуляются.

Линейные индексы inlier указывают в облаке точки ввода, возвращенном как вектор-столбец.

Линейные индексы выброса указывают в облаке точки ввода, возвращенном как вектор-столбец.

Средняя погрешность расстояния inlier точки к модели, возвращенной как скалярное значение.

Ссылки

[1] Торр, P. H. S. и А. Зиссермен. “MLESAC: новое устойчивое средство оценки с приложением к оценке геометрии изображений”. Компьютерное зрение и распознавание изображений. 2000.

Расширенные возможности

Введенный в R2015b