monoCamera

配置单眼摄像头传感器

描述

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

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

创建

描述

传感器= monoCamera (intrinsic,高度)创建一个monoCamera对象包含一个单目摄像机传感器的配置,给定摄像机的内在参数和摄像机离地面的高度。intrinsic高度设置intrinsic高度相机的属性。

例子

传感器= monoCamera (intrinsic、身高、名称,值)属性使用一个或多个名称-值对。例如,monoCamera (intrinsic, 1.5,“球场”,1)创建了一个单目摄像头传感器,距离地面1.5米,对地面有1度的俯仰。将每个属性名称用引号括起来。

属性

全部展开

相机的内在参数,指定为acameraIntrinsics(计算机视觉工具箱)cameraParameters(计算机视觉工具箱)对象。相机的内在参数包括相机的焦距和光学中心,以及相机产生的图像大小。

您可以在创建对象时设置此属性。创建对象之后,此属性是只读的。

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

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

球场使用国际标准化组织约定的旋转,与顺时针正角度方向时,看的车辆的正方向YV轴。

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

之间的偏航角度XV车辆的轴和摄像机的光轴,指定为以度数表示的实标量。要估计此值,请使用estimateMonoCameraParameters函数。

偏航使用国际标准化组织约定的旋转,与顺时针正角度方向时,看的车辆的正方向ZV轴。

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

相机绕光轴的滚动角度,返回为以度数表示的实标量。要估计此值,请使用estimateMonoCameraParameters函数。

使用国际标准化组织约定的旋转,与顺时针正角度方向时,看的车辆的正方向XV轴。

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

摄像机传感器中心的位置,指定为形式的两个元素向量(xy]。使用此属性可更改摄像机的位置。单位在车辆坐标系中(XV,YV,ZV)。

默认情况下,摄像头传感器位于XV,YV)原点,在指定的高度高度

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

您可以在创建对象时设置此属性。创建对象之后,此属性是只读的。

对象的功能

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

例子

全部折叠

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

设置相机的内在参数。指定焦距、图像平面的主点和输出图像的大小。单位以像素为单位。将intrinsic保存为acameraIntrinsics(计算机视觉工具箱)对象。

focalLength = [800 800];principal = [320240];imageSize = [480 640];intrinsic = cameraIntrinsics (focalLength principalPoint图象尺寸);

指定摄像机的位置。将相机放置在离地2.18米的位置,朝向地面倾斜14度。

身高= 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(xyImageLoc1 + 5,10米的);图imshow (IvehicleToImage)标题(“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点”)

使用单目摄像机配置创建一个视觉传感器,并从该传感器产生检测结果。

指定相机的内在参数并创建monoCamera对象从这些参数。摄像头安装在一辆自我飞行器的顶部,距离地面1.5米的高度,距离地面1度的高度。

focalLength = [800 800];principal = [320240];imageSize = [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]);

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

图bep =鸟瞰图(“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 = dets{i}.Measurement(1:2);detXY = sprintf ('Detection %d: X = %。2f米,Y = %。2 f米”,我,XY);disp (detXY)结束
探测1 X = 19.09米,Y = 2.79米探测2 X = 27.81米,Y = 0.08米

更多关于

全部展开

兼容性的考虑

全部展开

R2018a改变了行为

扩展功能

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

另请参阅

应用程序

功能

对象

介绍了R2017a