bboxLidarToCamera

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

Описание

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

bboxesCamera = bboxLidarToCamera(bboxesLidar,intrinsics,tform,L) далее совершенствовал 2D ограничительные рамки к ребрам объекта в нем с помощью LL соответствующее помеченное 2D изображение 2D ограничительных рамок, где объекты помечены отчетливо.

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

пример

[___] = bboxLidarToCamera(___,'ProjectedCuboid',true) возвращает 3-D спроектированные кубоиды вместо 2D ограничительных рамок.

Примеры

свернуть все

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

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

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

tform = gt.camToLidar.invert;

Извлеките 3-D информацию об ограничительной рамке.

bboxLidar = gt.cuboid1;

Оцените 2D ограничительную рамку на изображении.

bboxesCamera = bboxLidarToCamera(bboxLidar,intrinsics,tform);

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

pcshow(pc.Location,pc.Location(:,1))
showShape('cuboid',bboxLidar)

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

Отобразите 2D ограничительную рамку, наложенную на изображении.

J = undistortImage(im,intrinsics);
annotatedImage = insertObjectAnnotation(J,'Rectangle',bboxesCamera,'Vehicle');
imshow(annotatedImage)

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

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

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

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

tform = gt.camToLidar.invert;

Извлеките 3-D информацию об ограничительной рамке.

bboxLidar = gt.cuboid2;

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

bboxesCamera = bboxLidarToCamera(bboxLidar,intrinsics,tform,...
        'ProjectedCuboid',true);

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

figure
pcshow(pc.Location,pc.Location(:,1))
showShape('cuboid',bboxLidar)

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

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

J = undistortImage(im,intrinsics);
h = imshow(J);
pcH = vision.roi.ProjectedCuboid;
pcH.Parent = h.Parent;
pcH.Position = bboxesCamera;

Figure contains an axes object. The axes object contains 2 objects of type image, vision.roi.projectedcuboid.

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

свернуть все

3-D ограничительные рамки в лидаре структурируют в виде cuboidModel возразите или N-by-9 матрица вещественных значений. N является количеством 3-D ограничительных рамок. Каждая строка матрицы имеет форму [центр x центр y центр z x len y len z len гниль x гниль y гниль z].

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

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

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

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

Примечание

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

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

Параметры внутреннего параметра камеры в виде cameraIntrinsics объект.

Камера, чтобы лоцировать твердое преобразование в виде rigid3d объект.

Помеченное 2D изображение в виде матрицы вещественных значений. Матричный размер совпадает с ImageSize свойство intrinsics.

Примечание

Помеченные изображения приняты, чтобы быть неискаженными.

Типы данных: single | double | int8 | int16 | uint8 | uint16

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

свернуть все

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

Если 'ProjectedCuboid' установлен в true, 2D ограничительные рамки возвращены как M-by-8 матрица вещественных значений. Ограничительные рамки имеют форму кубоида и заключают объект. Каждая строка матрицы содержит размер и местоположение ограничительной рамки кубоида в форме [frontFace backFace]. Оба поверхности представлены как 2D ограничительные рамки.

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

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

Типы данных: логический

Смотрите также

Функции

Введенный в R2021a