主要内容

cuboid2img

投影长方体从三维世界坐标到二维图像坐标

描述

例子

projectedCuboid= cuboid2img (长方体projectionMatrix利用投影矩阵所指定的图像数据和相机固有参数,将三维长方体投影到图像中。该函数返回带有投影长方体的图像。

projectedCuboidvalidIndex[中文]:___使用第一个语法中的输入参数返回一个逻辑数组,该数组指示哪些输入长方体投影在摄像机的视野内。

projectedCuboidvalidIndexallFaceVertices[中文]:___返回每个投影长方体的面顶点,以方便特定投影长方体面的可视化。您可以使用showShapeinsertShape函数可视化投影的长方体面。

___[中文]:___名称=值使用一个或多个名称-值参数以及以前语法中的参数组合指定选项。例如,cuboid2img (data.cuboid projectionMatrix OutputFormat =“矩形”)指定将每个长方体输出为两个投影的长方体面,形成轴向矩形。

例子

全部折叠

将图像加载到工作区中并调整其大小。

imOrig = imread(fullfile(matlabroot,“工具箱”“愿景”“visiondata”...“stopSignImages”“image004.jpg”));I = imresize(imOrig,[1080 1920]);

加载一个MAT文件,其中包含3-D长方体标签和捕获图像的传感器的摄像机投影矩阵。

数据=负载(“cuboidData.mat”);projectionMatrix = data.projectionMatrix;长方体= data.cuboid;

将3-D长方体转换为2-D投影长方体。

顶点= cuboid2img(长方体,projectionMatrix);

将投影的长方体插入到图像中,然后显示结果。

Iout = insertShape(I,“projected-cuboid”、顶点);imshow (Iout)

图中包含一个轴对象。axis对象包含一个image类型的对象。

将图像加载到MATLAB工作区中,然后调整它的大小。

imOrig = imread(fullfile(matlabroot,“工具箱”“愿景”“visiondata”...“stopSignImages”“image004.jpg”'));I = imresize(imOrig,[1080 1920]);

加载MAT文件之前创建的3-D长方体标签和用于捕捉图像的传感器的相机投影矩阵。

数据=负载(“cuboidData.mat”);projectionMatrix = data.projectionMatrix;长方体= data.cuboid;

将三维长方体转换为二维投影长方体,得到投影长方体的面顶点。

[projectedCuboids,validIdx,allFaceVertices] = cuboid2img(cuboid,projectionMatrix);

将投影的长方体插入图像中。

I = insertShape(I,“projected-cuboid”, projectedCuboids);

选择每个投影长方体的第三个面。

where face = 3;selectedFaceVertices = allFaceVertices(:,:, whereface);

使用填充多边形突出显示所选的面并显示结果。

J = insertShape(I,“filled-polygon”, selectedFaceVertices);imshow (J)

图中包含一个轴对象。axis对象包含一个image类型的对象。

输入参数

全部折叠

长方体的位置、大小和方向,用9矩阵。是长方体的个数。每一行指定长方体的位置、大小和方向,格式为[xctryctrzctrxlenylenzlenxrotyrotzrot]:

  • 位置- - - - - -xctryctr,zctr为三维长方体中心的坐标。

  • 尺寸- - -xlenylenzlen长度是xy,z3长方体的边。

  • 取向,xrotyrotzrotxy,z三维长方体的旋转角度。

数据类型:|

摄像机投影矩阵,指定为3 × 4矩阵。该函数使用投影矩阵将每个长方体的3-D世界点映射到2-D图像平面。属性可以创建投影矩阵cameraProjection函数。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:cuboid2img (data.cuboid projectionMatrix OutputFormat =“矩形”)指定将每个长方体输出为两个投影的长方体面,形成轴向矩形。

用于表示投影长方体的输出格式,指定为“顶点”“矩形”

输出格式 描述

“顶点”

projectedCuboid是8乘2乘-P顶点数组,其中P是投影的长方体的数目。数组的每一页都包含[xy投影长方体正面四个角和背面四个角的位置。

“矩形”

projectedCuboid是一个P-by-8矩阵,其中P是矩形投影长方体的个数。矩阵的每一行包含一个八元素向量,形式为[x1日元w1h1x2y2w2h2],其中[x1日元]和[x2y2]分别是前面向矩形和后面向矩形的左上角坐标。

该函数调整投影的长方体顶点,使前面和后面的长方体面形成轴向矩形,并包含所有相关的投影顶点。

类型兼容的投影长方体数据时,使用矩形输出图片标志贴标签机视频,或地面真相标签(自动驾驶工具箱)应用程序。

输出参数

全部折叠

投影的长方体,返回为8 × 2 ×P数组或P8矩阵。P是投影的长方体的数目。P小于或等于输入的三维长方体的数量.输入中指定的任意长方体长方体在相机视野之外的不包含在输出中。每个页面,P的输出包含[xy投影长方体的八个顶点的位置。顶点的顺序为[1 2 3 4 5 6 7 8),[1 4 8 5]而且[2 3 7 6]分别从右上角顶点逆时针方向定义正面和背面的矩形。

显示有编号顶点的长方体。数字1分配给右上角,5分配给正面矩形的右下角。数字1-4和5-8分别定义了逆时针方向长方体的顶面和底面。正z轴向上,正y轴向右,正x轴朝前。

投影长方体的索引,返回为-by-1逻辑向量,其中为输入三维长方体的个数。一个逻辑1值指示在摄像机前的有效的、相应的投影长方体,包含至少一个具有正坐标的顶点。一个逻辑0值表示对应的投影长方体无效。

面顶点,返回为aP-by-8-by-6数组,其中P是返回的投影长方体的数目。数组的每一页包含每个返回投影长方体的六个面的四个顶点。您可以使用此输出来可视化长方体的特定面。例如,要返回第三个投影长方体的第五个面顶点,指定:

allFaceVertices (3: 5)
长方体面在数组中的顺序是正面、背面、右面、左面、上面、下面。

投影长方体的并排视图。左边是一个长方体,它的面有编号,右边是一个长方体,它的顶点有编号。一个表显示与每个面相关联的顶点。

您可以使用allFaceVertices输出showShapeinsertShape函数可视化投影长方体的面。有关示例,请参见突出显示-D长方体的一个面

版本历史

R2022b中引入