主要内容

monoCamera

配置单眼相机传感器

描述

monoCamera对象持有一个单眼相机传感器的配置信息。配置信息包括相机intrinsic、相机等外在取向(被沥青、偏航和滚动),在汽车和摄像机位置。估计的内在和外在的相机参数,请参阅校准单眼相机

对于摄像机的图像,您可以使用imageToVehiclevehicleToImage函数图像坐标之间的变换点位置和车辆坐标。这些函数应用射影变换(单应性),这使您能够估计距离摄像机安装在车辆位置在平坦的路面。

创建

描述

传感器= monoCamera (intrinsic,高度)创建一个monoCamera对象包含一个单眼相机传感器的配置,给出的固有参数相机和相机离地面的高度。intrinsic高度设置intrinsic高度相机的属性。

例子

传感器= monoCamera (intrinsic、身高、名称,值)属性使用一个或多个名称-值对。例如,monoCamera (intrinsic, 1.5,“球场”,1)创建一个单眼相机传感器,离地面1.5米,1度向地面。在报价附上每个属性的名字。

属性

全部展开

内在的相机参数,指定为一个cameraIntrinsicscameraParameters对象。内在的相机参数包括相机的焦距和光学中心,和图像的大小产生的相机。

你可以设置这个属性,当你创建对象。创建对象后,这个属性是只读的。

高度从路面相机传感器,指定为一个真正的标量。高度从地面的垂直距离相机的焦点。在世界单位指定高度,如米。估计这个值,使用estimateMonoCameraParameters函数。

螺旋角水平面之间的车辆和相机的光轴,指定为一个真正的标量度。估计这个值,使用estimateMonoCameraParameters函数。

球场使用ISO公约旋转,顺时针正角方向时正方向的车辆YV轴。

与十五并排摄像机图像,青年志愿,轴标签。在第一张照片,相机是直的。第二张图片,相机是倾斜的角度表明音高的变化。

更多细节,请参阅角方向

偏航角之间的XV轴的车辆和相机的光轴,指定为一个真正的标量度。估计这个值,使用estimateMonoCameraParameters函数。

偏航使用ISO公约旋转,顺时针正角方向时正方向的车辆ZV轴。

与十五并排摄像机图像,青年志愿,轴标签。在第一张照片,相机正面临着前进。第二张图片,向左转动镜头表明偏航角的变化。

更多细节,请参阅角方向

横摇角相机的光轴,作为真正的标量返回度。估计这个值,使用estimateMonoCameraParameters函数。

使用ISO公约旋转,顺时针正角方向时正方向的车辆XV轴。

与十五并排摄像机图像,青年志愿,轴标签。在第一张照片,相机是直的。第二张图片,绕着它的轴转动镜头表明螺旋角的变化。

更多细节,请参阅角方向

相机传感器的中心位置,指定为一个双元素向量的形式(xy]。使用这个属性来改变摄像机的位置。单位车辆坐标系(XV,YV,ZV)。

默认情况下,相机传感器位于(XV,YV),在指定的高度高度

汽车前置摄像头和Xv-axis Yv-axis, Zv-axis标记

世界坐标系统单位,指定为一个特征向量或字符串标量。这个属性只存储单元类型,不影响任何计算。任何文本都是有效的。

你可以设置这个属性,当你创建对象。创建对象后,这个属性是只读的。

对象的功能

imageToVehicle 图像坐标转换为车辆坐标
vehicleToImage 车辆坐标转换为图像坐标

例子

全部折叠

创建一个前置单眼相机传感器安装在一个自我。检查相机的图像捕获,并确定位置在图像车辆和图像坐标。

设置相机的内部参数。指定焦距,图像平面的主要点,输出图像的大小。单位是像素。保存intrinsic作为cameraIntrinsics对象。

focalLength = (800 - 800);principalPoint = (320 - 240);图象尺寸= (480 - 640);intrinsic = cameraIntrinsics (focalLength principalPoint图象尺寸);

指定的位置的相机。位置的相机离地面2.18米14-degree向地面。

身高= 2.18;距= 14;

定义一个单眼相机传感器使用内在相机参数和摄像机的位置。加载图像的相机。

传感器= monoCamera (intrinsic、身高、“节”、沥青);Ioriginal = imread (“road.png”);图imshow (Ioriginal)标题(原始图像的)

图包含一个坐标轴对象。标题为原始图像的坐标轴对象包含一个类型的对象的形象。

确定一个点的图像坐标直接在镜头前10米。的X从相机和设在点Y设在点左边。

xyVehicleLoc1 = (10 0);xyVehicleLoc1 xyImageLoc1 = vehicleToImage(传感器)
xyImageLoc1 =1×2320.0000 - 216.2296

显示图像上的点。

IvehicleToImage = insertMarker (Ioriginal xyImageLoc1);IvehicleToImage = insertText (IvehicleToImage xyImageLoc1 + 5,10米的);图imshow (IvehicleToImage)标题(“Vehicle-to-Image点”)

图包含一个坐标轴对象。坐标轴对象标题Vehicle-to-Image点包含一个类型的对象的形象。

确定车辆坐标的点位于路面图像中。

xyImageLoc2 = (300 - 300);xyImageLoc2 xyVehicleLoc2 = imageToVehicle(传感器)
xyVehicleLoc2 =1×26.5959 - 0.1732

重点是约6.6米的车辆和约0.17米左边的汽车中心。

显示车辆图像上的点的坐标。

IimageToVehicle = insertMarker (Ioriginal xyImageLoc2);displayText = sprintf (”(%。% 2 f m。2 f m) ',xyVehicleLoc2);IimageToVehicle = insertText (IimageToVehicle xyImageLoc2 + 5, displayText);图imshow (IimageToVehicle)标题(“Image-to-Vehicle点”)

图包含一个坐标轴对象。坐标轴对象标题Image-to-Vehicle点包含一个类型的对象的形象。

创建一个视觉传感器通过使用单眼相机配置,并生成检测传感器。

指定相机的内部参数和创建一个monoCamera从这些参数对象。相机上装的是一个自我车辆的高度离地面1.5米和1度到距地面。

focalLength = (800 - 800);principalPoint = (320 - 240);图象尺寸= (480 - 640);intrinsic = cameraIntrinsics (focalLength principalPoint图象尺寸);身高= 1.5;距= 1;monoCamConfig = monoCamera (intrinsic、身高、“节”、沥青);

创建一个视觉检测发电机使用单眼相机配置。

visionSensor = visionDetectionGenerator (monoCamConfig);

生成一个驾驶场景与自我车辆和两个目标的汽车。第一目标位置车30米正前方自我的工具。第二目标位置的车在前面的自我20米,但是3米向左偏移。

场景= drivingScenario;egoVehicle =车辆(场景中,“ClassID”1);targetCar1 =车辆(场景中,“ClassID”,1“位置”,30 0 0);targetCar2 =车辆(场景中,“ClassID”,1“位置”[20 3 0]);

使用一个鸟瞰的情节显示车辆轮廓和传感器覆盖范围。

图cep = birdsEyePlot (“XLim”,50 [0],“YLim”20 [-20]);olPlotter = outlinePlotter (cep);(位置、偏航、长度、宽度、originOffset color] = targetOutlines (egoVehicle);plotOutline (olPlotter、位置、偏航、长度、宽度);caPlotter = coverageAreaPlotter (cep),“DisplayName的”,“覆盖范围”,“FaceColor”,“蓝”);plotCoverageArea (caPlotter visionSensor.SensorLocation visionSensor.MaxRange,visionSensor.Yaw visionSensor.FieldOfView (1))

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的补丁。该对象代表覆盖范围。

获得目标的提出了汽车车辆从自我的角度。使用这些姿势来生成检测的传感器。

提出了= targetPoses (egoVehicle);[侦破,numValidDets] = visionSensor(姿势,scenario.SimulationTime);

显示(X,Y)位置的有效检测。对于每个检测,(X,Y)职位的第一个两个值测量字段。

i = 1: numValidDets XY =侦破{我}.Measurement (1:2);detXY = sprintf (“检测% d: X = %。2 f米,Y = %。2 f米”,我,XY);disp (detXY)结束
检测1:X = 19.09米,2:Y = 2.79米检测X = 27.81米,Y = 0.08米

更多关于

全部展开

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

版本历史

介绍了R2017a

全部展开

行为改变R2018a