必威体育Betway必威体育官网
当前位置:首页 > IT技术

基于多目鱼眼相机的全景拼接----------相机标定(一)

时间:2019-09-30 20:12:13来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

相机标定

相机标定分为内标定与外标定,内标定得到相机相关的内参数,外标定得到相机的外参数R、T,之后还要标定多个相机之间的位置关系,具体见相关博文。

本篇主要讲相机的内标定,网上内标定的代码工具很多,我采用了Omnidirectional CameraCalibration toolbox for Matlab 工具箱,可以到https://sites.Google.com/site/scarabotix/ocamcalib-toolbox 下载。

一、工具箱简介

工具箱允许用户通过两个步骤轻松快速地校准全向摄像头。首先,它要求用户收集几张不同位置和方向的棋盘图片。然后,用户被要求提取角点。使用新版本的工具箱,该操作完全自动完成。因此,不需要手动提取。完成这两个步骤后,校准完全自动执行。

校准完成后,工具箱提供两个函数(CAM2WORLD和WORLD2CAM),它们表示给定像素点与其投射到单位球面上的关系(这是从单个有效视点发出的3D矢量)。这种关系显然取决于镜像的形状和相机的内在参数。OCamCalib工具箱相对于其他工具箱的新颖方面如下:

  • 该工具箱是唯一一个具有自动角提取功能的工具箱(不需要手动提取)。
  • 该工具箱不需要关于镜子形状的先验知识。
  • 它不需要单独校准透视摄像机:系统摄像机镜像被视为一个独特的紧凑型系统,它封装了摄像机的固有参数和镜面参数。
  • 图像中心的检测是自动执行的。它不需要镜子的圆形外部边界的可视性。与其他工具箱不同,它需要镜像外部边界的可见性来确定图像中心,OCamCalib Toolbox自动识别中心,无需任何用户交互! 

二、相机模型

p为图像的像素点,(u,v)为相对于全向图像中心的像素坐标(见下图)。令P是从单个有效视点发出的相应3D矢量,以及(x,y,z)其相对于轴原点的坐标。

由于相机和镜像轴应该完美对齐,因此请注意x和y分别与u和v成比例。从而,

   

我们希望校准估计的函数是将图像点p映射到其对应的3D向量P中的函数。所以我们可以写 

你可能会发现我们可以在函数f中包含  α,所以我们可以平等地写出: 

确实,记住P 不是 3D点,而是矢量; 因此最后的简化是允许的!

此外,因为反射镜是旋转对称的,函数f(u,v)仅取决于图像中心点的距离  。

所以,我们仍然可以将以前的等式简化为以下等式:

如果你得到了我目前解释的内容,那么我们需要校准的只是函数f( ρ)。现在,让我们来介绍一下这个函数的样子。

我们的模型 通过多项式描述函数  f( ρ),其系数是要估计的校准参数。那是:

所以要估计的参数是:a 0,a 1,a 2,a 3,a 4,... 实际上,OcamCalib工具箱要求指定要使用的多项式程度。实际上,越是增加多项式阶数,校准的准确度就越高。高阶多项式不适用。通过使用这个工具箱,我经历了四阶多项式给出了最好的校准结果。  

三、使用方法   

  • matlab进入对应目录 

    比如 C:\Users\popsheng\Desktop\Scaramuzza_OCamCalib_v3.0_win

    • 输入ocam_calib 

      打开下面的界面 

  • 拍照要求

    attention

    In order to obtain good calibration results, I suggest the following:

    1. APProach the checkerboard to the mirror or to the fisheye as much as you can (see sample images below). This will improve the calibration and will increase the chances that the Automatic Checkerboard extraction tool finds all the corners! Make sure that every corner of the checkerboard is visible in each image. For the Automatic Checkerboard Extraction tool it is furthermore important that a white border is present around the pattern.
    2. Take pictures of the checkerboard in order to cover all the visible area of the camera, e.g. from all around the mirror. By doing this, you allow calibration to compensate for possible misalignments between the camera and mirrors axes. The second and most important reason for doing this is that it helps the automatic detection of the center of the omnidirectional image.
  • Load images 

    Before loading the images, make sure that they are in the same folder of the toolbox files.(Copy all the images into OCamCalib folder)

  • click on the button Read names

    • 会提示:Basename camera calibration images (without number nor suffix): 

      比如图片文件名是image1.jpg、image2.jpg… 这一步我们就输入image

    • 接下来会提示:Image format: ([]='r'='ras', 'b'='bmp', 't'='tif', 'g'='gif', 'p'='pgm', 'j'='jpg', 'm'='ppm') >> g 告诉我们指示文件类型

  • Extraction of grid corners

    • 会提示:Extraction of the grid corners on the images Type the images you want to process (e.g. [1 2 3], [] = all images) = 即我们可以选择处理那几张图片,直接回车表示处理全部图片

    • 接下来会提示:Number of squares along the X direction ([]=10) = 以及 Number of squares along the Y direction ([]=10) = 表示棋盘角点的个数,如果我们使用官网的棋盘,那么X就是5,Y就是6

    • 接下来会提示:Size dX of each square along the X direction ([]=30mm) = 以及 Size dX of each square along the Y direction ([]=30mm) = 棋盘方格宽度,可以点击回车

    • 接下来会提示:X coordinate (along height) of the omnidirectional image center = ([]=960) = 以及 Y coordinate (along width) of the omnidirectional image center = ([]=1280) =用于指定图像中心点坐标,可以直接回车,软件默认使用(height/2, width/2),

    • 接下来是:EXTRACTION OF THE GRID CORNERS 

      Do you want to use the automatic image selection 

      or do you want to process the images inpidually ( [] = automatic, other = inpidual )? 这一步表示我们可以选择处理某些图片,回车表示自动进行图像选择(忽略角点遮挡的图像),也是推荐的做法,回车即可

    软件会一次处理每张图片,即找到棋盘格角点,如下图所示:

  • lick on the button Calibration

    • 会提示:Degree of polynomial expansion ([]=4) = 即去除畸变的多项式展开度(幂值),默认值即可,直接回车

  • Find center 

    软件会依次迭代查找每个图像的中心并计算输出 

    Iteration 1...2...3...4...5...6...7...8...9... 

    ...

    Note, if at any time you would like to modify the coordinates of the center, you can simply modify the value of the variables ocam_model.xc and ocam_model.yc, which respectively contain row and column of the center location.

  • Calibration Refinement 

    非线性迭代估计相机内外参数,这一步我们可以设置迭代次数,还可以在处理的过程中点击回车停止迭代: 

    This function alternately refines EXTRINSIC and INTRINSIC calibration parameter

    by using a non linear Minimization method 

    Because of the computations involved this refinement can take some seconds 

    Loop interrupting: Press enter to stop refinement. (OCamCalib GUI must be selected!) 

    Maximum number of iterations ([] = 100, 0 = abort, -1 = no limit) =

  • Reproject on images 

    软件会根据估计的新校准参数重新投影所有格子角,且图像中心用红色圆圈进行了标注。

  • Show Extrinsic 

    软件会展示棋盘格的空间位置:

  • Analyse ERROR

    可以查看所有棋盘的每个点的重新投影错误(畸变和正常的差)的分布。颜色指的是棋盘的不同图像:

  • Recompute corners

    重新计算角点,提升准确率

    • 会提示:wintx ([] = 20) = 

      winty ([] = 20) = 即容错窗口大小,回车默认即可

  • Show Calib Results 

    展示校准结果: 

  • Load, Save, and Export the calibration results 

    一次点击Save Load Export Data即可,根目录下的 calib_results.txt就是我们需要的文件

注意: 

1、拍摄棋盘图像,以覆盖摄像机的所有可见区域,例如从镜子周围。通过这样做,您可以通过校准来补偿相机与镜像轴之间可能的错位。这样做的第二个也是最重要的原因是它有助于自动检测全方位图像的中心。

2、棋盘纸周围有一定的白色区域,可以用白色的木板等刚性物体。

3、尽可能的多拍几组照片,多距离、多姿态、

相关阅读

全景中的包围曝光和HDR应用

全景摄影的过程就是一部与大光比做斗争的史诗大片,因为总有一个角度会拍到光源,这对新手们非常头痛。如何解决大光比?如何

全景相机公司IDEALOEYE观界科技完成数千万元级A轮融资

近日成都观界创宇科技有限公司(IDEALOEYE,简称“观界科技”)完成A轮数千万元级融资,由清研新一代人工智能基金领投,第十区VR

随时随地体验影院级音效,酷我音乐首推全景环绕音效

如果你自认为是一名音乐爱好者,那么,你知道现在最受发烧友们喜爱的音乐播放器是哪个吗?网易云音乐?音质较差有目共睹。虾米音乐?曲

图像拼接

图像拼接 转载自 https://blog.csdn.net/wahaha_nescafe/article/details/8501539 https://blog.csdn.net/wahaha_ne

全景视频资源网(VR),可下载全景视频

http://www.vrzy.com/

分享到:

栏目导航

推荐阅读

热门阅读