monoCamera

配置单眼照相机传感器

描述

monoCamera对象保存关于单目摄像机传感器配置的信息。配置信息包括摄像机的内部特性、摄像机的外部特性(如其方向(如俯仰、偏航和横滚所述)和摄像机在车辆内的位置)。要估计相机的内部和外部参数,参见校准单眼相机

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

创建

描述

传感器= monoCamera (intrinsic高度创建一个monoCamera对象,该对象包含单目摄像机传感器的配置,给定摄像机的固有参数和摄像机距地面的高度。intrinsic高度设置内部函数高度相机的性能。

传感器= monoCamera(内在,高度,名称,值性能使用一个或多个名称值对。例如,monoCamera (intrinsic, 1.5,“球场”,1)在离地1.5米高的地方创建一个单目摄像机传感器,并对地倾斜1度。将每个属性名括在引号中。

属性

全部展开

本征相机参数,指定为acameraIntrinsics要么cameraParameters宾语。固有照相机参数包括焦距和照相机的光学中心,并且由摄像机产生的图像的大小。

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

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

车辆的水平面与摄像机的光轴之间的俯仰角,指定为以度为单位的实标量。为了估计这个值,使用estimateMonoCameraParameters函数。

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

有关更多细节,请参见角方向

之间的偏航角XV车辆的轴和摄像机的光轴,指定为以度为单位的实标量。为了估计这个值,使用estimateMonoCameraParameters函数。

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

有关更多细节,请参见角方向

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

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

有关更多细节,请参见角方向

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

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

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

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

对象的功能

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

例子

全部折叠

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

设置相机的固有参数。指定焦距、像平面的主点和输出图像的大小。单位是像素。将intrinsic保存为acameraIntrinsics宾语。

长焦点= [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];xyVehicleLoc1 xyImageLoc1 = vehicleToImage(传感器)
xyImageLoc1 =1×2320.0000 216.2296

显示的图像上的点。

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

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

xyImageLoc2 = [300 300];xyImageLoc2 xyVehicleLoc2 = imageToVehicle(传感器)
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)标题(“Image-to-Vehicle点”

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

指定摄像机的内部参数,并创建一个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