主要内容

鱼眼校正基础知识

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

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

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

鱼眼相机模型

计算机视觉工具箱校准算法使用Scaramuzza提出的Fisheye相机模型[1].该模型使用全向相机模型。该过程将成像系统视为紧凑的系统。为了将3-D World Point联系到2-D图像,您必须获得相机外在和内在参数。使用外在参数将世界要点转换为相机坐标。使用内在参数将相机坐标映射到图像平面中。

外在的参数

外部参数包括一个旋转,R的翻译,t.相机坐标系的原点是在它的光心和它的x- 和y-axis定义图像平面。

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

内在参数

对于Fisheye相机模型,内在参数包括投影功能的多项式映射系数。对准系数与传感器对准和从传感器平面转换到相机图像平面中的像素位置。

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

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

  • 表示标量因子。

  • 是由Scaramuzza模型描述的多项式系数,其中

  • 是(uv),只取决于某点到影像中心的距离:

内在参数还考虑了拉伸和失真。拉伸矩阵补偿传感器到透镜的错位,并且失真矢量调整图像平面的(0,0)位置。

以下等式涉及真实扭曲的坐标(u”v'')理想的扭曲坐标(uv)。

鱼眼相机的MATLAB标定

为了消除鱼眼图像中的镜头失真,可以检测棋盘标定模式,然后标定摄像机。控件可以找到棋盘格点detectCheckerboardPointsgeneratecheckerboardpoint功能。的estimateFisheyeParameters函数使用检测点并返回fisheyeParameters包含Fisheye相机的内在和外在参数的对象。你可以使用FisheyecalibrationErrors.检查校准的准确性。

正确的鱼眼图像用于镜头失真

通过检测核对校准模式并校准相机,从鱼眼图像中删除镜头失真。然后,显示结果。

收集一组棋盘标定图像。

图像= imageDatastore (“calibrationImages”);

从图像中检测校准模式。默认情况下,“PartialDetecteds”名称值参数设置为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 = undastortfisheyeImage(i,params.intrinsics);图imshowpair(i,J1,“蒙太奇”) 标题(原图(左)与修正图(右)

图中包含一个轴。标题为原始图像(左)和修正图像(右)的轴包含一个类型图像的对象。

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

图中包含一个轴。具有低比例因子的标题输出视图的轴包含类型图像的对象。

参考

Scaramuzza, D., A. Martinelli和R. Siegwart。“易于校准全方位摄像机工具箱”IEEE智能机器人和系统国际会议的诉讼程序(IRO).北京,中国,2006年10月7日至15日。

另请参阅

功能

对象

相关话题