pcfitplane

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

Синтаксис

model = pcfitplane(ptCloudIn,maxDistance)
model = pcfitplane(ptCloudIn,maxDistance,referenceVector)
model = pcfitplane(ptCloudIn,maxDistance,referenceVector,maxAngularDistance)
[model,inlierIndices,outlierIndices] = pcfitplane(ptCloudIn,maxDistance)
[___,meanError] = pcfitplane(ptCloudIn,maxDistance)
[___] = pcfitplane(ptCloudIn,maxDistance,Name,Value)

Описание

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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

Для просмотра документации необходимо авторизоваться на сайте