主要内容

配置单目鱼眼照相机

本示例演示如何将鱼眼摄像头模型转换为针孔模型,并构建相应的单目摄像头传感器模拟。在本示例中,您将学习如何校准鱼眼摄像头和配置传感器单眼(自动驾驶工具箱)对象。

概述

要模拟安装在车辆上的单目摄像头传感器,请执行以下步骤:

  1. 通过使用棋盘式标定相机来估计相机的固有参数。本征参数描述了鱼眼相机本身的特性。

  2. 使用与上一步相同的棋盘,通过再次校准摄像头来估计外部摄像头参数。外部参数描述了鱼眼摄像头在车辆坐标系中的安装位置。

  3. 通过将鱼眼摄像头内部组件转换为针孔摄像头内部组件来消除图像失真。这些内部组件描述了一种合成针孔摄像头,可以假设生成未失真的图像。

  4. 利用针孔摄像机的固有参数和外部参数对单目摄像机传感器进行仿真。然后您可以使用这个传感器来检测物体和车道边界。

估计鱼眼相机的本质

若要估计内部参数,请使用棋盘格进行相机校准。或者,若要更好地显示结果,请使用摄像机校准器对于鱼眼相机,它是有用的地方棋盘接近相机,以捕捉大的明显失真的图像。

%收集一组校准图像。图像=图像数据存储(完整文件(toolboxdir(“愿景”),“视觉数据”,...“校准”,“还装有”));ImageFileName=images.Files;检测校准模式。[imagePoints,boardSize]=检测电路板点(ImageFileName);%生成正方形角点的世界坐标。平方尺寸=0.029;%平方米worldPoints=generateCheckerboardPoints(boardSize,squareSize);%校准照相机。I=读取图像(图像,1);图像大小=[大小(I,1),大小(I,2)];参数=估计FisheyeParameters(图像点,世界点,图像大小);

鱼眼相机外部特性的估计

要估计外部参数,请使用相同的棋盘估计摄像机在车辆坐标系中的安装位置。以下步骤从一张图像估计参数。您也可以拍摄多张棋盘图像以获得多个估计值,并平均结果。

%加载同一棋盘的不同图像,其中棋盘%放在平坦的地面上。它的x轴指向%车辆,其Y轴指向摄像头。图像包括明显失真,如沿墙旁边的棋盘。。imageFileName = fullfile (toolboxdir (“驾驶”),“drivingdata”,“checkboard.png”);I = imread (imageFileName);imshow (I)标题(“扭曲的棋盘图像”);

图中包含axes对象。标题为扭曲棋盘图像的axes对象包含Image类型的对象。

[imagePoints,boardSize]=检测电路板点(I);%生成正方形角点的坐标。平方尺寸=0.029;%平方米worldPoints=generateCheckerboardPoints(boardSize,squareSize);估计moncamera对象配置的参数。%棋盘的高度在这里是零,因为图案是%直接在地面上。originHeight = 0;[俯仰,偏航,横摇,高度]= estimatemonocamerparameters (params。intrinsic。...imagePoints、worldPoints originHeight);

构建一个合成针孔相机为未失真的图像

不失真的图像和提取合成针孔相机的本质。[J1, camIntrinsics] = undistortion fishheyeimage (I, params。intrinsic。“输出”,“全部”);imshow(J1)标题(“无畸变的图像”);

图中包含一个轴对象。标题为“未变形图像”的轴对象包含一个类型为“图像”的对象。

用合成针孔相机的固有特性设置单相机。%请注意,合成相机已消除失真。传感器=单摄像机(camIntrinsics,高度,“节”球场上,“偏航”,偏航,“滚”,卷);

画鸟瞰图

现在您可以验证单眼(自动驾驶工具箱)通过绘制鸟瞰图。

定义鸟瞰图转换参数distaheadof传感器=6;%以米为单位spaceToOneSide = 2.5;%向右看2.5米,向左看2.5米底部偏移=0.2;%观察传感器前方0.2米处outView = [bottomOffset, distAheadOfSensor, -spaceToOneSide, spaceToOneSide]; / /查看全局outImageSize =(南,1000年);%输出图像宽度,以像素为单位birdseeconfig = birdsEyeView(sensor, outView, outImageSize);%将输入图像转换为鸟瞰图像并显示B=变换图像(birdsEyeConfig,J1);%在鸟瞰视图中,在传感器前面放置一个2米的标记imagePoint0=车辆图像(birdsEyeConfig[2,0]);偏移量=5;%偏移标记从文本标签5像素annotatedB=插入标记(B,imagePoint0-偏移);annotatedB=insertText(annotatedB,imagePoint0,“2米”);图imshow (annotatedB)标题(“鸟瞰图”)

Figure包含axes对象。标题为鸟瞰视图的axes对象包含image类型的对象。

上图显示,相机可以准确地测量距离。现在你可以使用单目摄像机进行物体和车道边界检测。看到单目摄像机的视觉感知(自动驾驶工具箱)的例子。