monoCamera

配置单眼照相机传感器

描述

monoCamera对象保存有关的单眼相机传感器的配置信息。配置信息包括相机内在,照相机外部参数,如它的取向,并在车辆内的摄像机位置(如由俯仰,偏转和滚动描述)。为了估计内在和外在相机参数,请参阅校准单眼相机

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

创建

描述

传感器= monoCamera(内联函数高度创建monoCamera对象,其中包含一个单眼照相机传感器的结构中,给定的摄像机的内部参数和照相机在地面上方的高度。内联函数高度设置内部函数高度相机的性能。

传感器= monoCamera(内在,高度,名称,值性能使用一个或多个名称值对。例如,monoCamera(内在,1.5, '间距',1)创建是地面1.5米以上,并且具有朝向地面的1度间距的单眼相机传感器。在引号中每个属性的名称。

属性

展开全部

固有照相机参数,指定为一个cameraIntrinsics要么cameraParameters目的。固有照相机参数包括焦距和照相机的光学中心,并且由摄像机产生的图像的大小。

当您创建对象,您可以设置该属性。创建对象后,此属性为只读。

高度从路面到相机传感器,指定为实数标量。的高度为从地面到摄像机的焦点的垂直距离。指定世界单位,如米的高度。为了估计这个值,使用estimateMonoCameraParameters功能。

车辆的水平面与照相机的光轴,指定为在度的实数标量之间的桨距角。为了估计这个值,使用estimateMonoCameraParameters功能。

沥青在车辆的正方向看时使用的旋转ISO约定,以顺时针正角方向ÿV轴。

有关详细信息,请参阅角方向

之间的偏航角XV轴线在车辆和照相机的光轴,指定为在度的实数标量的。为了估计这个值,使用estimateMonoCameraParameters功能。

偏航在车辆的正方向看时使用的旋转ISO约定,以顺时针正角方向žV轴。

有关详细信息,请参阅角方向

围绕其光轴的摄像机的滚转角,返回作为在度的实数标量。为了估计这个值,使用estimateMonoCameraParameters功能。

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

有关详细信息,请参阅角方向

相机传感器的中心的位置,指定为以下形式的两个元素的矢量[Xÿ]。使用此属性来改变相机的位置。单元是在车辆坐标系中的(XVÿVžV)。

默认情况下,相机传感器位于(XVÿV)原点,在由指定的高度高度

世界坐标系单位,指定为矢量字符或字符串标量。此属性只存储单元类型,并且不影响任何计算。任何文本是有效的。

当您创建对象,您可以设置该属性。创建对象后,此属性为只读。

对象函数

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

例子

全部收缩

创建安装在自身车辆前方面对的单眼照相机传感器。检查从摄像机拍摄的图像,并确定在车辆和图像坐标中的图像内的位置。

设置相机的内部参数。指定焦距,图像平面的主点,和输出图像尺寸。单位是像素。保存内在的cameraIntrinsics目的。

长焦点= [800 800]。principalPoint = [320 240]。IMAGESIZE = [480 640]。内在= cameraIntrinsics(长焦点,principalPoint,IMAGESIZE);

指定摄像机的位置。相机具有14度间距朝向地面位置2.18米在地面上方。

高度= 2.18;节距= 14;

定义一个单眼照相机传感器利用固有照相机参数和照相机的位置。从照相机加载图像。

传感器= monoCamera(内在,高度,'沥青',沥青);Ioriginal = imread('road.png');图imshow(Ioriginal)标题(“原始图像”

直接在10米的镜头前确定某个点的图像坐标。该X前锋 - 轴点从相机和ÿ- 轴指向左侧。

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

显示的图像上的点。

IvehicleToImage = insertMarker(Ioriginal,xyImageLoc1);IvehicleToImage = insertText(IvehicleToImage,xyImageLoc1 + 5,'10米);图imshow(IvehicleToImage)标题(“车辆对图像点”

判断一个点位于图像在路面上的车辆坐标。

xyImageLoc2 = [300 300]。xyVehicleLoc2 = imageToVehicle(传感器,xyImageLoc2)
xyVehicleLoc2 =1×26.5959 0.1732

问题的关键是有关在车辆的前6.6米以及约0.17米的车辆中心的左边。

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

IimageToVehicle = insertMarker(Ioriginal,xyImageLoc2);displayText = sprintf的('(%.2f米,%.2f米)',xyVehicleLoc2);IimageToVehicle = insertText(IimageToVehicle,xyImageLoc2 + 5,displayText);图imshow(IimageToVehicle)标题(“图片到车辆点”

通过使用单眼照相机配置创建视觉传感器,并产生从该传感器检测。

指定摄像机的内部参数,并创建一个monoCamera从这些参数对象。相机以1.5米地面上方的高度和1种朝向地面程度的间距被安装在自主车辆的顶部。

长焦点= [800 800]。principalPoint = [320 240]。IMAGESIZE = [480 640]。内在= cameraIntrinsics(长焦点,principalPoint,IMAGESIZE);高度= 1.5;节距= 1;monoCamConfig = monoCamera(内在,高度,'沥青',沥青);

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

visionSensor = visionDetectionGenerator(monoCamConfig);

生成具有自主车辆和两个目标汽车的驱动方案。第一目标汽车在自身车辆正前方30米定位。第二目标轿厢位置20米的自车辆的前面,但通过3米向左侧偏离。

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

使用鸟瞰阴谋显示车辆的轮廓和传感器的覆盖区域。

图BEP = birdsEyePlot('XLIM',[0 50],'YLim',[ -  20 20]);olPlotter = outlinePlotter(BEP);[位置,偏航,长度,宽度,originOffset,颜色] = targetOutlines(egoVehicle);plotOutline(olPlotter,位置,偏航,长度,宽度);caPlotter = coverageAreaPlotter(BEP,'显示名称''覆盖区域''FaceColor''蓝色');plotCoverageArea(caPlotter,visionSensor.SensorLocation,visionSensor.MaxRange,...visionSensor.Yaw,visionSensor.FieldOfView(1))

从自身车辆的角度获得目标车的姿势。使用这些姿势以产生从传感器检测。

姿势= targetPoses(egoVehicle);[dets的,numValidDets] = visionSensor(姿势,scenario.SimulationTime);

显示(Xÿ有效检测的)位置。对于每个检测中,(Xÿ)位置的前两个值测量领域。

对于I = 1:numValidDets XY = dets的{I} .Measurement(1:2);detXY = sprintf的('检测%d:X =%.2f米,Y =%.2f米',I,XY);DISP(detXY)结束
检测1:X =19.09米,Y =2.79米检测2:X =27.81米,Y =0.08米

更多关于

展开全部

兼容性注意事项

展开全部

行为R2018a改变

扩展功能

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

介绍了在R2017a