bboxCameraToLidar

Оцените 3-D ограничивающие рамки в облаке точек из 2-D ограничивающих рамок на изображении

Описание

bboxesLidar = bboxCameraToLidar(bboxesCamera,ptCloudIn,intrinsics,tform) оценки 3-D ограничительные рамки в системе координат облака точек, ptCloudIn, из 2-D ограничивающих рамок в изображении, bboxesCamera. Функция использует внутренние параметры камеры, intrinsicsи камеру в матрицу преобразования лидара, tform, для оценки 3-D ограничивающих прямоугольников, bboxesLidar.

[bboxesLidar,indices] = bboxCameraToLidar(___) возвращает индексы точек облака точек, которые находятся внутри 3-D ограничивающих рамок с помощью входных параметров из предыдущего синтаксиса.

[bboxesLidar,indices,boxesUsed] = bboxCameraToLidar(___) указывает, для какого из заданных 2-D ограничивающих рамок функция обнаружила соответствующий 3-D ограничивающий прямоугольник в облаке точек.

пример

[___] = bboxCameraToLidar(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к любой комбинации аргументов в предыдущих синтаксисах. Для примера, 'ClusterThreshold',0.5 устанавливает порог Евклидова расстояния для дифференцирования кластеров облака точек равным 0,5 мировых единиц измерения.

Примеры

свернуть все

Загрузите достоверные данные из MAT-файла в рабочую область. Извлеките изображение, данные облака точек и собственные параметры камеры из достоверных данных.

dataPath = fullfile(toolboxdir('lidar'),'lidardata','lcc','bboxGT.mat');
gt = load(dataPath);
im = gt.im;
pc = gt.pc;
intrinsics = gt.cameraParams;

Извлеките камеру в матрицу преобразования лидара из достоверных данных.

tform = gt.camToLidar;

Извлеките 2-D информацию об ограничивающем прямоугольнике.

bboxImage = gt.box;

Отобразите 2-D ограничивающий прямоугольник, наложенный на изображение.

annotatedImage = insertObjectAnnotation(im,'Rectangle',bboxImage,'Vehicle');
figure
imshow(annotatedImage)

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

Оцените ограничивающий прямоугольник в облаке точек.

[bboxLidar,indices] = ...
bboxCameraToLidar(bboxImage,pc,intrinsics,tform,'ClusterThreshold',1);

Отобразите 3-D ограничивающий прямоугольник, наложенный на облако точек.

figure
pcshow(pc)
xlim([0 50])
ylim([0 20])
showShape('cuboid',bboxLidar,'Opacity',0.5,'Color','green')

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

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

свернуть все

2-D ограничительные рамки в системе координат камеры, заданные как матрица M -by-4 действительных значений. Каждая строка матрицы содержит местоположение и размер прямоугольного ограничивающего прямоугольника в форме [<reservedrangesplaceholder10> <reservedrangesplaceholder9> <reservedrangesplaceholder8> <reservedrangesplaceholder7> ]. Элементы x и y задают x и y координаты, соответственно, для верхнего левого угла прямоугольника. Элементы width и height определяют размер прямоугольника. M - количество ограничивающих рамок.

Примечание

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

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

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

Примечание

Функция принимает, что облако точек находится в системе координат транспортного средства, где ось x указывает вперед от ego vehicle.

Внутренние параметры камеры, заданные как cameraIntrinsics объект.

Камера к лидарному твердому преобразованию, заданная как rigid3d объект.

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

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

Пример: 'ClusterThreshold',0.5 устанавливает порог Евклидова расстояния для дифференцирования кластеров облака точек равным 0,5 мировых единиц измерения.

Порог кластеризации для двух смежных точек, заданный как разделенная разделенными запятой парами, состоящая из 'ClusterThreshold' и положительная скалярная величина. Процесс кластеризации основан на евклидовом расстоянии между двумя смежными точками. Если расстояние между двумя смежными точками меньше заданного порога кластеризации, то точки принадлежат одному и тому же кластеру. Если функция возвращает 3-D ограничивающий прямоугольник, который меньше ожидаемого, попробуйте задать более высокое 'ClusterThreshold' значение.

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

Область значений обнаружения от датчика лидара, заданный как разделенная запятыми пара, состоящая из 'MaxDetectionRange' и двухэлементный вектор вещественных значений в области значений (0, Inf]. Первый элемент вектора задает кратчайшее расстояние от датчика, на котором можно искать ограничивающие рамки, а второй элемент задает расстояние, на котором функция останавливает поиск. Значение Inf указывает крайние точки облака точек.

Первый элемент должен быть меньше, чем второй элемент. Задайте оба в мировых единицах измерения.

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

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

свернуть все

3-D ограничительные прямоугольники в лидарной системе координат, возвращенные как N-на-9 матрица вещественных значений. N - количество обнаруженных 3-D ограничивающих рамок. У каждой строки матрицы есть форма [x центр y центр z гниль центра <reservedrangesplaceholder5> len <reservedrangesplaceholder4> len <reservedrangesplaceholder3> len <reservedrangesplaceholder2> y гниль z гниль].

  • x ctr, y ctr и z ctr - Эти значения определяют x -, y - и z - координаты оси, соответственно, центра кубоидного ограничивающего прямоугольника.

  • x len, y len и z len - Эти значения задают длину кубоида вдоль оси x -, y - и z - соответственно перед поворотом.

  • x гниль, y гниль и z гниль - Эти значения определяют углы поворота кубоида вокруг оси x -, y - и z - соответственно. Эти углы являются положительными по часовой стрелке при взгляде в прямом направлении их соответствующих осей.

Этот рисунок показывает, как эти значения определяют положение кубоида.

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

Индексы точек в 3-D ограничивающих рамках, возвращенные в виде вектора-столбца или массива ячеек N-element.

Если функция обнаруживает только один 3-D ограничивающий прямоугольник в облаке точек, она возвращает вектор-столбец. Каждый элемент вектора является индексом облака точек, обнаруженным в 3-D ограничивающем прямоугольнике.

Если функция обнаруживает несколько 3-D ограничивающих рамок, она возвращает массив ячеек N -элемент. N - количество 3-D ограничивающих блоков, обнаруженных в облаке точек, и каждый элемент массива ячеек содержит индексы облака точек, обнаруженных в соответствующем 3-D ограничивающем прямоугольнике.

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

Флаг обнаружения ограничивающего прямоугольника, возвращенный как M-вектор строка элемента логики. M - количество входа 2-D ограничивающих рамок. Если функция обнаруживает соответствующий 3-D ограничивающий прямоугольник в облаке точек, то она возвращает значение true для этого входа 2-D ограничивающий прямоугольник. Если функция не обнаруживает соответствующий 3-D ограничивающий прямоугольник, то она возвращает значение false.

Типы данных: logical

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

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

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