主要内容

配置单目鱼眼照相机

本示例演示如何将鱼眼摄像头模型转换为针孔模型,并构建相应的单目摄像头传感器模拟。在本示例中,您将学习如何校准鱼眼摄像头和配置传感器单眼目的。

概述

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

  1. 通过使用棋盘校准相机来估计内部相机参数。内在参数描述了Fisheye相机本身的属性。

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

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

  4. 使用固有的针孔摄像机参数和外部参数来配置单眼摄像机传感器进行仿真。然后,您可以使用此传感器来检测对象和车道边界。

估计鱼眼照相机的本质

若要估计内部参数,请使用棋盘格进行相机校准。或者,若要更好地显示结果,请使用摄像机校准器应用程序。对于Fisheye相机,将棋盘靠近相机是有用的,以捕获图像中的大明显失真。

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

鱼眼相机外部特性的估计

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

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

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

[imagePoints,boardSize]=检测电路板点(I);%生成正方形角点的坐标。平方尺寸=0.029;%平方米worldPoints=generateCheckerboardPoints(boardSize,squareSize);%估计用于配置Monocamera对象的参数。%棋盘的高度在这里是零,因为图案是%直接在地上。原始高度=0;[俯仰、偏航、横滚、高度]=估计的单摄像机参数(内部参数,...图像点,世界点,originheight);

构建一个未变形图像的合成针孔摄像头

%贴上图像并提取合成针孔照相机的内在内部。[J1,Camintrinsics] = undastortfisheyimage(I,Params.Intrinsics,'输出','满的');imshow(J1)标题('不朽的形象');

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

%使用合成针孔照相机固有的单纸。%请注意,合成相机已消除失真。传感器=单摄像机(camIntrinsics,高度,'沥青', 沥青,“偏航”,偏航,“滚”,卷);

画鸟瞰图

现在您可以验证单眼通过绘制鸟瞰图。

%定义鸟瞰图转换参数distaheadof传感器=6;%以米为单位spacetooneside = 2.5;%向右看2.5米,向左看2.5米底部偏移=0.2;%观察传感器前方0.2米处Outview = [底部OFFSET,DistaheadofSensor,--spacetoonide,Spacetoonide];Outimagesize = [NaN,1000];%输出图像宽度(以像素为单位)birdseyeconfig = birdseyeview(传感器,outview,远处);%将输入图像转换为鸟瞰图像并显示B=变换图像(birdsEyeConfig,J1);%在鸟瞰视图中,在传感器前面放置一个2米的标记imagePoint0=车辆图像(birdsEyeConfig[2,0]);偏移量=5;从文本标签到5个像素的%偏移量标annotatedB=插入标记(B,imagePoint0-偏移);annotatedB=insertText(annotatedB,imagePoint0,“2米”);数字imshow(annotatedb)标题(“鸟瞰图”)

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

上面的曲线表明,相机测量的距离准确。现在,您可以使用单眼相机进行对象和车道边界检测。看看单目摄像机的视觉感知例子。

另见

应用程序

功能

物体

相关话题