pcdownsample

Субдискретизируйте 3-D облако точек

Синтаксис

ptCloudOut = pcdownsample(ptCloudIn,'random',percentage)
ptCloudOut = pcdownsample(ptCloudIn,'gridAverage',gridStep)
ptCloudOut = pcdownsample(ptCloudIn,'nonuniformGridSample',maxNumPoints)

Описание

ptCloudOut = pcdownsample(ptCloudIn,'random',percentage) возвращает субдискретизируемое облако точек со случайной выборкой и без замены. Вход percentage задает фрагмент входа, чтобы возвратиться к выводу.

пример

ptCloudOut = pcdownsample(ptCloudIn,'gridAverage',gridStep) возвращает субдискретизируемое облако точек с помощью фильтра сетки поля. Вход gridStep задает размер 3-D поля.

ptCloudOut = pcdownsample(ptCloudIn,'nonuniformGridSample',maxNumPoints) возвращает субдискретизируемое облако точек с помощью неоднородного фильтра сетки поля. Необходимо определить максимальный номер точек в поле сетки, maxNumPoints, по крайней мере, к 6.

Примеры

свернуть все

Считайте облако точек.

ptCloud = pcread('teapot.ply');

Установите 3-D разрешение быть (0.1 x 0.1 x 0.1).

gridStep = 0.1;
ptCloudA = pcdownsample(ptCloud,'gridAverage',gridStep);

Визуализируйте субдискретизируемые данные.

figure;
pcshow(ptCloudA);

Сравните облако точек с данными, которые субдискретизируются с помощью фиксированного размера шага.

stepSize = floor(ptCloud.Count/ptCloudA.Count);
indices = 1:stepSize:ptCloud.Count;
ptCloudB = select(ptCloud, indices);

figure;
pcshow(ptCloudB);

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

ptCloud = pointCloud(ones(100,3));

Установите 3-D разрешение маленького значения.

gridStep = 0.01;

Вывод теперь содержит только одну уникальную точку.

ptCloudOut = pcdownsample(ptCloud,'gridAverage',gridStep)
ptCloudOut = 
  pointCloud with properties:

     Location: [1 1 1]
        Color: [0x3 uint8]
       Normal: [0x3 double]
    Intensity: [0x1 double]
        Count: 1
      XLimits: [1 1]
      YLimits: [1 1]
      ZLimits: [1 1]

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

свернуть все

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

Случайный субдискретизируют метод, заданный как вектор символов, 'random'. Этот метод более эффективен, чем 'gridAverage' субдискретизирует метод, особенно когда это применяется перед регистрацией облака точек.

Субдискретизируйте облако точек с помощью 'random', 'gridAverage' или входных параметров 'nonuniformGridSample', согласно Metric, который вы используете в функции pcregistericp для регистрации.

МетрикаПеремещение PointCloud субдискретизирует методОблако фиксированной точки субдискретизирует метод
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

Процент входа, заданного как положительная скалярная величина в области значений [0, 1]. Вход percentage задает фрагмент входа для функции, чтобы возвратиться.

Среднее значение сетки субдискретизирует метод, заданный как вектор символов, 'gridAverage'. Точки в том же поле объединены к одной точке в выводе. Их цветные и нормальные свойства усреднены соответственно. Этот метод сохраняет форму облака точек лучше, чем 'random' субдискретизирует метод.

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

Субдискретизируйте облако точек с помощью 'random', 'gridAverage' или входных параметров 'nonuniformGridSample', согласно Metric, который вы используете в функции pcregistericp для регистрации.

МетрикаПеремещение PointCloud субдискретизирует методОблако фиксированной точки субдискретизирует метод
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

Размер 3-D поля для фильтра сетки, заданного как числовое значение. Увеличьте размер gridStep, когда будет недостаточно ресурсов, чтобы создать большую мелкомодульную сетку.

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

Выборочный метод нерегулярной координатной сетки, заданный как вектор символов 'nonuniformGridSample'. Лучшее использование этого метода должно применить его как шаг предварительной обработки к функции pcregistericp для регистрации облака точек, когда вы используете метрику 'pointToPlane'. Когда вы используете алгоритм 'nonuniformGridSample', нормали вычисляются на исходных данных до субдискретизации. Субдискретизируемый вывод сохраняет более точные нормали.

Субдискретизируйте облако точек с помощью 'random', 'gridAverage' или входных параметров 'nonuniformGridSample', согласно Metric, который вы используете в функции pcregistericp для регистрации.

МетрикаПеремещение PointCloud субдискретизирует методОблако фиксированной точки субдискретизирует метод
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

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

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

свернуть все

Субдискретизируемое облако точек, возвращенное как объект pointCloud.

Ссылки

[1] Pomerleau, F. F. Кола, Р. Сигварт и С. Мэгненэт. “Сравнивая варианты ICP на реальных наборах данных”. Автономные Роботы. Издание 34, Выпуск 3, апрель 2013, стр 133–148.

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

Представленный в R2015a