pcdownsample

Downsample 3-D облако точек

Описание

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

пример

ptCloudOut = pcdownsample(ptCloudIn,'gridAverage',gridStep) возвращает облако точек с понижающей дискретизацией с помощью прямоугольного сеточного фильтра. The 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);

Figure contains an axes. The axes contains an object of type scatter.

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

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

figure;
pcshow(ptCloudB);

Figure contains an axes. The axes contains an object of type scatter.

Создайте облако точек со всеми точками с одинаковыми координатами.

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

Установите разрешение 3-D на небольшое значение.

gridStep = 0.01;

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

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

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

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

свернуть все

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

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

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

МетрикаМетод Moving PointCloud DownsampleМетод Fixed Облака точек Downsample
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

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

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

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

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

МетрикаМетод Moving PointCloud DownsampleМетод Fixed Облака точек Downsample
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

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

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

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

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

МетрикаМетод Moving PointCloud DownsampleМетод Fixed Облака точек Downsample
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

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

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

свернуть все

Пониженное облако точек, возвращаемое как pointCloud объект.

Ссылки

[1] Pomerleau, F., F. Colas, R. Siegwart, and S. Magnenat. Сравнение вариантов ПМС на наборах данных реального мира. Автономные роботы. Том 34, выпуск 3, апрель 2013 года, стр. 133-148.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

..
Введенный в R2015a