图像拼接步骤——相机标定

文章目录

  • 前言
  • 什么是相机标定
  • 为什么要进行相机标定
    • 标定参数
    • 切向畸变和径向畸变
      • 枕形畸变和桶形畸变
  • 如何进行相机标定

前言

在图像拼接技术中,有如下几个关键的步骤:
相机标定,预处理操作(畸变矫正、滤波),图像投影变换、图像配准(特征点提取及匹配)图像拼接(几何变换)、图像融合、亮度与颜色的均衡处理等。

什么是相机标定

相机标定简单来说是根据相机的几何模型求最终的投影矩阵的过程(从世界坐标系换到像素坐标系),也就是求解内外参以及畸变参数的过程。

为什么要进行相机标定

在图像拼接中,良好的相机标定是拼接的基础,标定结果影响拼接效果的好坏。
由于安装设计(透镜和成像平面不平行)及摄相机间的差异,会造成视频图像之间存在缩放(镜头焦距不一致造成)、倾斜(垂直旋转)、方位角(水平旋转)差异。这些均属于物理差异,因此我们需要对物理差异预先校准,从而得到一致性好的图像,便于后续图像拼接。

标定参数

标定参数包括:内参、外参以及畸变参数

1.外参数矩阵:在两幅图的图像拼接中,外参矩阵可描述两幅图像之间的旋转平移关系。
2.内参数矩阵:相机内部参数(焦距)
3.畸变参数(k1,k2,p1,p2,k3):由于透镜的存在,光线投影到成像平面会产生畸变,主要包括切向和径向畸变,图像拼接步骤——相机标定_第1张图片

切向畸变和径向畸变

安装过程中,透镜和成像平面不平行会造成切向畸变p。
而由于透镜的先天条件(形状),会造成径向畸变(越靠近边缘,畸变就会越严重)。
径向畸变模型:
以下公式由泰勒展式得出,(因为畸变比较小,可用泰勒级数的低阶项来近似),(x,y)为理想坐标坐标(无畸变),(xdis,ydis)为校正前坐标(有畸变)图像拼接步骤——相机标定_第2张图片
切向畸变模型:图像拼接步骤——相机标定_第3张图片
因此同时包含切向和径向的畸变模型:
图像拼接步骤——相机标定_第4张图片

枕形畸变和桶形畸变

径向畸变又包含如下两种。

桶形畸变:因为镜头中央的放大倍率大于边缘的放大倍数,大多出现这种畸变的镜头是广角镜头,牺牲直线投影来得到更宽的视野。

枕形畸变:由于镜头边缘的放大倍率大于中心的放大倍数引起,朝着中心弯曲,倾向于出现在变焦镜头的较长焦距端。

图像拼接步骤——相机标定_第5张图片

由此,当我们得到标定的畸变参数后,反演补偿即可对相机进行校正。而校正的过程就将相当于将扭曲的曲线变回到直线的过程,校正后的图像,拼接效果更佳,不会破坏实际景物的视觉一致性。
图像拼接步骤——相机标定_第6张图片


补充:
图像畸变校正算法有着重复性和数据并行性,所以采用FPGA来加速是一种很好的方式,另外该算法实质上也是进行像素操作,从曲线变成直线,就容易出现像素丢失等现象,因此需要引入插值算法来进行填充。(FPGA实现校正的时候,希望将畸变图像从存储器中读取,然后根据畸变参数进行校正,校正后的图像存储在输出端的存储器中,最终送到显示器显示)

如何进行相机标定

采用Matlab进行标定
方法:
打印一张标定棋盘格图片,并将其贴在一个平面上,作为标定物。
通过调整标定物或摄像机的方向,为标定物拍摄一些不同方向的照片。
利用棋盘格角点,估算内外以及畸变参数。

步骤如下(以单目相机校准为例):
1、标定棋盘格的获取
在matlab命令行输入,并等待

open checkerboardPattern.pdf

图像拼接步骤——相机标定_第7张图片
2、将棋盘格固定,后用相机拍摄,得到不同方向的照片。
3、把拍摄的图片存放在特定文件夹下,比如D:\matlab\toolbox\vision\visiondata\calibration\myself
点击Add images添加所拍摄的图片图像拼接步骤——相机标定_第8张图片
4、自动跳转到标定板的规格选择界面:棋盘格中一个格子的尺寸,默认为25mm×25mm,需要根据自己所用棋盘格图案的实际尺寸来调节,必须和实际长度相同。图像拼接步骤——相机标定_第9张图片
5、添加完成后会出现检测结果,如下图所示,总图像10张,失败1张。添加失败的原因可能是图像较远无法清晰识别出棋盘格,单击view images可查看为被添加进去的图像。图像拼接步骤——相机标定_第10张图片
6、普通相机选择Standard模式,鱼眼相机选择Fisheye模式图像拼接步骤——相机标定_第11张图片
7、参数选项
径向畸变(即Radial Distortion下选择3个系数Coefficients)
勾选Skew(歪斜)(倾斜因子很小,也可以不考虑)
切向畸变(Tangential Distortior)
图像拼接步骤——相机标定_第12张图片
8、单击Calibrate进行标定图像拼接步骤——相机标定_第13张图片
9、右上角:重投影误差(平均误差小于0.5像素即可)
右下角:可切换视图(以相机为中心或以图像为中心),相当于每次拍摄照片相对于相机的位置,也就是相机的外参。图像拼接步骤——相机标定_第14张图片
10、点击“Export Camera Parameters”,输出相机参数到matlab命令窗口
图像拼接步骤——相机标定_第15张图片
得到如下的结果:图像拼接步骤——相机标定_第16张图片
11、命令行键入如下可直接得到相机内参矩阵

cameraParams.IntrinsicMatrix 

图像拼接步骤——相机标定_第17张图片
命令行键入如下可得到径向畸变参数

 cameraParams.RadialDistortion 

在工作区也可以查看相应的参数

图像拼接步骤——相机标定_第18张图片
双目标定和单目标定相同,只是需要输入左右相机的图片。

有了旋转矩阵,平移向量以及畸变参数,可以得到输出像素与输入像素之间的对应关系。


根据畸变参数如何采用FPGA进行图像校正

你可能感兴趣的:(图像拼接基础,音视频)