主要内容

鱼眼校正基础知识

摄像机标定是计算摄像机外部参数和内部参数的过程。一旦校准了相机,就可以使用图像信息从2维图像中恢复3维信息。你也可以用鱼眼相机来校正图像。计算机视觉工具箱™包含针孔摄像机模型和鱼眼摄像机模型的校准算法。你可以使用鱼眼模型与相机的视野(FOV)达195度。

在测程中使用鱼眼摄像机,直观地解决同步定位和测绘(SLAM)问题。其他应用包括监视系统、GoPro、虚拟现实(VR)捕捉360度视场(fov)和拼接算法。这些相机使用一系列复杂的镜头来扩大相机的视场,使其能够捕捉宽的全景或半球形图像。然而,镜头通过扭曲图像中的透视线来实现这种极其广角的视角

由于鱼眼镜头产生的极端失真,针孔模型不能建模鱼眼相机。

鱼眼相机模型

计算机视觉工具箱校准算法使用Scaramuzza提出的鱼眼相机模型[1]。该模型使用全向相机模型。该过程将成像系统视为一个紧凑的系统。为了将三维世界点与二维图像关联,必须获得相机外部参数和内部参数。世界点使用外部参数转换为相机坐标。相机坐标映射为into使用内部参数的图像平面。

外在的参数

本征参数包括旋转,R,以及翻译,t.相机坐标系的原点是它的光学中心和它的x-及y-axis定义图像平面。

从世界点到相机点的转换是:

内在参数

对于鱼眼相机模型,固有参数包括投影函数的多项式映射系数。对准系数与传感器对准以及从传感器平面到相机图像平面中像素位置的变换有关。

下面的方程将一个图像点映射到其相应的三维向量中。

  • 是真实点的理想图像投影。

  • 表示标量因子。

  • 是由Scaramuzza模型描述的多项式系数,在哪里

  • 是的函数(uv),只取决于点到图像中心的距离:

固有参数也解释了拉伸和变形。拉伸矩阵补偿传感器到镜头的失调,失真向量调整图像平面的(0,0)位置。

以下方程式与实际扭曲坐标相关(u”v“)到理想的畸变坐标(uv).

MATLAB中的鱼眼摄像机标定

为了从鱼眼图像中去除镜头失真,可以检测棋盘校准模式,然后校准相机。你可以用detectCheckerboardPointsgenerateCheckerboardPoints功能。的estimateFisheyeParameters函数使用检测到的点并返回fisheyeParameters对象,该对象包含鱼眼摄影机的内部和外部参数。你可以使用鱼眼校准错误检查校正的准确性。

校正镜头畸变的鱼眼图像

通过检测棋盘校准图案并校准相机,消除鱼眼图像中的镜头失真。然后,显示结果。

收集一组棋盘校准图像。

图像= imageDatastore (“calibrationImages”);

从图像检测校准模式。“PartialDetections”名称值参数默认设置为true,允许检测部分棋盘格。

[imagePoints, boardSize] = detectCheckerboardPoints(图像。文件,“高失真”,真正的);

为棋盘格正方形的角生成世界坐标。

squareSize = 20;%毫米worldPoints = generateCheckerboardPoints (boardSize squareSize);

根据图像和世界点估计鱼眼摄像机标定参数。使用第一个图像来获取图像大小。

I = readimage(图片,10);imageSize = [size(I,1) size(I,2)];params = estimateFisheyeParameters (imagePoints worldPoints图象尺寸);

从第一幅图像中去除镜头失真并显示结果。

J1=无失真FisheyeImage(I,参数内部);图imshowpair(I,J1,“蒙太奇”)头衔(“原始图像(左)vs.校正图像(右)”

图中包含一个轴对象。标题为“Original Image(左)vs. Corrected Image(右)”的axis对象包含一个Image类型的对象。

J2 = undistortFisheyeImage(参数。intrinsic。“OutputView”“一样”“ScaleFactor”, 0.2);图imshow (J2)标题(“具有低比例因子的输出视图”

Figure包含一个axes对象。标题为“输出视图”且比例因子较低的axes对象包含一个image类型的对象。

工具书类

Scaramuzza, D., A. Martinelli和R. Siegwart。"方便校准全方位摄像机的工具箱"IEEE智能机器人和系统国际会议记录(IROS). 中国北京,2006年10月7日至15日。

另请参阅

功能

对象

相关话题