主要内容

estimateMonoCameraParameters

估计使用棋盘外在单眼相机参数

描述

例子

(球场,偏航,,高度)= estimateMonoCameraParameters (intrinsic,imagePoints,worldPoints,patternOriginHeight)单眼相机的外参数估计使用相机和棋盘的固有参数校准模式。返回的外在参数定义偏航,音高和辊之间的旋转角度摄像机坐标系统车辆坐标系轴。这个函数也返回相机离地面的高度。指定的内在参数,图像和棋盘角点的世界坐标,和棋盘图案的起源的高度高于地面。

默认情况下,函数假设摄像机是朝前,棋盘模式与地面平行。所有可能的相机和棋盘,看到校准单眼相机

(球场,偏航,,高度)= estimateMonoCameraParameters (___,名称,值)使用一个或多个名称-值对指定选项,除了从以前的语法输入和输出。例如,您可以指定棋盘模式的方向或位置。

例子

全部折叠

配置一个单眼鱼眼相机通过消除镜头畸变,然后估计摄像机的外部参数。使用一个棋盘的形象作为校准模式。更详细的看看如何配置一个单眼相机,鱼眼镜头,看到配置单眼鱼眼相机的例子。

负载的固有参数鱼眼镜头的单眼相机。intrinsic是一个fisheyeIntrinsics对象。

ld =负载(“fisheyeCameraIntrinsics”);intrinsic = ld.intrinsics;

加载图像的棋盘图平放在地上。这张照片是用于说明目的,不是从一个摄像头安装在车辆上。相机安装在车辆上,X设在模式的点右边的车辆,和Y设在模式点的相机。显示图像。

imageFileName = fullfile (toolboxdir (“开车”),“drivingdata”,“checkerboard.png”);I = imread (imageFileName);imshow(我)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

检测图像中的棋盘角的坐标。

[imagePoints, boardSize] = detectCheckerboardPoints(我);

生成相应的角落的世界坐标。

squareSize = 0.029;%平方大小米worldPoints = generateCheckerboardPoints (boardSize squareSize);

估计所需的外部参数配置monoCamera对象。因为棋盘模式直接在地面上,设置模式的起源的高度为0。

patternOriginHeight = 0;(音高、偏航、卷、高度)= estimateMonoCameraParameters (intrinsic,imagePoints、worldPoints patternOriginHeight);

因为monoCamera不接受fisheyeIntrinsics对象,去除图像和失真计算新的内在参数无畸变的图像。camIntrinsics是一个cameraIntrinsics对象。显示图像确认失真。

[undistortedI, camIntrinsics] = undistortFisheyeImage (intrinsic,我“输出”,“全部”);imshow (undistortedI)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

配置使用估计的单眼相机参数。

monoCam = monoCamera (camIntrinsics、身高、“节”球场上,“偏航”偏航,“滚”卷)
monoCam = monoCamera属性:intrinsic: [1 x1 cameraIntrinsics] WorldUnits:“米”高度:0.4447节距:21.8460偏航:-3.6130卷:-3.1707 SensorLocation: [0 0]

配置一个单眼相机使用圆网格模式,然后估计摄像机的外部参数。使用非对称圆网格的图像作为校准模式。

负载的固有参数单眼相机。intrinsic是一个cameraIntrinsics对象。

ld =负载(“IRCameraIntrinsics”);intrinsic = ld.intrinsics;

加载图像的不对称圆网格模式,平行于地面放置在一个高度。这张照片是用于说明目的,不是从一个摄像头安装在车辆上。相机安装在车辆上,X设在模式的点右边的车辆,和Y设在模式点的相机。显示图像。

imageFileName = fullfile (toolboxdir (“愿景”),“visiondata”,“校准”,“circleGrid”,“立体”,“左”,“left07.jpg”);I = imread (imageFileName);imshow(我)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

定义圆网格图形尺寸和检测图像中的圆的中心。

patternDims = 11 [4];imagePoints = detectCircleGridPoints(我patternDims);

生成相应的角落的世界坐标。

centerDistance = 0.0365;%在米中心到中心的距离worldPoints = generateCircleGridPoints (patternDims centerDistance);

估计所需的外部参数配置monoCamera对象。因为棋盘图放置在1.2米的高度从地面设置模式的起源的高度1.2米。

patternOriginHeight = 1.2;(音高、偏航、卷、高度)= estimateMonoCameraParameters (intrinsic,imagePoints、worldPoints patternOriginHeight);

配置使用估计的单眼相机参数。

monoCam = monoCamera (intrinsic、身高、“节”球场上,“偏航”偏航,“滚”卷)
monoCam = monoCamera属性:intrinsic: [1 x1 cameraIntrinsics] WorldUnits:“米”高度:1.3869节距:60.2886偏航:-26.5963卷:-45.7440 SensorLocation: [0 0]

定义该地区在镜头面前,你想变成鸟瞰。从0到2.5米设置一个区域在镜头面前,以1.75米的相机。

bottomOffset = 0;distAhead = 2.5;spaceToOneSide = 1.75;官样文章= [bottomOffset distAhead、-spaceToOneSide spaceToOneSide);

输出图像的宽度设置为250像素。计算输出长度自动从宽度通过设置长度

outImageSize =(南,250年);

创建一个对象来执行鸟瞰图变换,使用前面定义的参数。

宰= birdsEyeView (monoCam官样文章,outImageSize);

将输入图像转换为一个鸟瞰图形象和显示结果。

贝福= transformImage(宰,我);imshow (BEV)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

输入参数

全部折叠

内在相机参数,指定为一个cameraIntrinsicsfisheyeIntrinsics对象。

棋盘模式图像由这些摄像机可以包括透镜畸变,从而影响角点检测的准确性。去除透镜畸变,计算新的内在参数,使用这些功能:

图像坐标的棋盘角点,指定为一个2的矩阵的数量(xy)向量。这些点必须来自一个图像被单眼相机。检测这些点在一个图像,使用detectCheckerboardPoints函数。

estimateMonoCameraParameters假设所有的点worldPoints在(XP,YP)平面,大于或等于4。指定的高度(XP,YP)飞机离地面,使用patternOriginHeight

数据类型:|

棋盘角点的世界坐标,作为指定2的矩阵的数量(xy)向量。

estimateMonoCameraParameters假设所有的点worldPoints在(XP,YP)平面,大于或等于4。指定的高度(XP,YP)飞机离地面,使用patternOriginHeight

点(0,0)对应于右下角左上的广场的棋盘。

数据类型:|

离地面高度棋盘模式的起源,指定为一个非负实数。原点的右下角是左上的棋盘的广场。

测量patternOriginHeight取决于棋盘模式的方向,如这些图所示。

水平方向 垂直方向

指定的模式定位、使用“PatternOrientation”名称-值对。如果你设置“PatternOrientation”“水平”(默认),模式是在地面上,然后设置patternOriginHeight0

数据类型:|

名称-值参数

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:“PatternOrientation”、“垂直”、“PatternPosition”,“对”

棋盘模式的取向相对于地面,指定为逗号分隔组成的“PatternOrientation”和下列之一:

  • “水平”——棋盘模式是平行于地面。

  • “垂直”——棋盘模式是垂直于地面。

棋盘状图案的位置相对于地面,指定为逗号分隔组成的“PatternPosition”和下列之一:

  • “前面”——棋盘模式是在汽车的前面。

  • “回来”——棋盘模式是在车后面。

  • “左”——棋盘图左边的车。

  • “对”——车辆的棋盘模式是正确的。

输出参数

全部折叠

螺旋角水平面之间的车辆和相机的光轴,作为真正的标量返回度。球场使用ISO公约旋转,顺时针正角方向时正方向的车辆YV设在。

更多细节,请参阅角方向

偏航角之间的XV设在车辆和相机的光轴,作为真正的标量返回度。偏航使用ISO公约旋转,顺时针正角方向时正方向的车辆ZV设在。

更多细节,请参阅角方向

横摇角相机的光轴,作为真正的标量返回度。使用ISO公约旋转,顺时针正角方向时正方向的车辆XV设在。

更多细节,请参阅角方向

垂直高度从地面到相机的焦点,世界作为一个非负实数返回单位,如米。

更多关于

全部折叠

车辆坐标系

在车辆坐标系(XV,YV,ZV)定义为一个monoCamera对象:

  • XV设在指向前方的车辆。

  • YV设在指向左边,面朝前时查看。

  • ZV设在分从地面保持右手坐标系。

默认情况下,这个坐标系统的起源是在路面上,直接在相机中心(相机的焦点)。

获得更可靠的结果estimateMonoCameraParameters,棋盘模式必须放置在准确的位置相对于这个坐标系统。更多细节,请参阅校准单眼相机

角方向

单眼相机传感器使用顺时针正角方向时的正方向Z- - - - - -,Y- - - - - -,X分别相互重合。

介绍了R2018b