bboxLidarToCamera

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

Описание

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

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

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

пример

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

Примеры

свернуть все

Загрузите достоверные данные из файла 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;

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

bboxesCamera = bboxLidarToCamera(bboxLidar,intrinsics,tform);

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

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

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

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

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

Figure contains an axes. The axes 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. The axes 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. The axes contains 2 objects of type image, vision.roi.projectedcuboid.

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

свернуть все

3-D ограничительные рамки в лидарной системе координат, заданные как cuboidModel объект или N -by-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 - соответственно. Эти углы являются положительными по часовой стрелке, когда вы смотрите в прямом направлении их соответствующих осей.

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

Примечание

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

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

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

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

Помеченное 2-D изображение, заданное как матрица вещественных значений. Размер матрицы такой же, как и у ImageSize свойство intrinsics.

Примечание

Маркированные изображения приняты неискаженными.

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

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

свернуть все

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

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

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

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

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

Введенный в R2021a