exponenta event banner

bboxCameraToLidar

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

Описание

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

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

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

пример

[___] = 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-е ограничивающие прямоугольники в раме камеры, определенной как матрица M-4 реальных ценностей. Каждая строка матрицы содержит расположение и размер прямоугольной ограничивающей рамки в виде [x y width height ]. Элементы x и y задают координаты x и y соответственно для верхнего левого угла прямоугольника. Элементы ширины и высоты задают размер прямоугольника. M - количество ограничивающих прямоугольников.

Примечание

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

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

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

Примечание

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

Внутренние параметры камеры, указанные как 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

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

свернуть все

3D ограничивающие прямоугольники в раме лидара, возвращенной как матрица N-9 реальных ценностей. N - количество обнаруженных 3-D ограничивающих прямоугольников. Каждая строка матрицы имеет форму [xctr yctr zctr xlen ylen zlen xrot yrot zrot].

  • xctr, yctr и zctr - эти значения определяют координаты оси X, Y и Z, соответственно, центра кубовидной ограничивающей рамки.

  • xlen, ylen и zlen - эти значения определяют длину кубоида по осям x, y и z соответственно перед его поворотом.

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

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

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

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

Если функция обнаруживает только одну ограничительную рамку 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++ с помощью MATLAB ® Coder™

.
Представлен в R2020b