18

一文详解双目相机标定理论

 3 years ago
source link: https://mp.weixin.qq.com/s/t5aYb31tyh-wbdBLcMys_Q
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
计算机视觉工坊
计算机视觉工坊
专注于计算机视觉、VSLAM、目标检测、语义分割、自动驾驶、深度学习、AI芯片、产品落地等技术干货及前沿paper分享。这是一个由多个大厂算法研究人员和知名高校博士创立的平台,我们坚持工坊精神,做最有价值的事~
108篇原创内容
Official Account

01 前言

双目相机标定,从广义上讲,其实它包含两个部分内容:
  • 两台相机各自误差的标定(单目标定)
  • 两台相机之间相互位置的标定(狭义,双目标定)
在这里我们所说的双目标定是狭义的,讲解理论的时候仅指两台相机之间相互位置的标定,在代码实践的时候,我们才说完整的双目标定。首先来思考一个问题:为什么要进行双目标定?

这是因为在许多三维重建算法中,我们都要知道两台相机之间的相对位置关系,这样才能进行距离计算。

双目标定前后,双目模型对比如下图所示:
640?wx_fmt=png
图1 标定模型 [1]
  • 基线:两个光心的连线称为基线;
  • 极平面:物点(空间点M)与两个光心的连线构成的平面称为极平面;
  • 极线:极平面与成像平面的交线
  • 极点:极线的一端,基线与像平面的交点
  • 像点:极线的一端,光心与物点连线与像平面的交点;
可以看出:
  • 校正前,相机的光心不是相互平行的
  • 校正后,极点在无穷远处,两个相机的光轴平行,像点在左右图像上的高度一致
标定+校正后图片:
640?wx_fmt=png
图1 立体校正后左右相机图像发生一定扭曲 [2]这样的好处是:比如后续的立体匹配时,只需在同一行上搜索左右像平面的匹配点即可,能使效率大大提高。

注:可以看出来,最重要的,我们要知道右相机相对于左相机的位姿关系,那我们才可以做校正!

02 单目理论回顾

先来回顾下单目标定理论,理想的单目相机模型可以简化为(图片来自于[1]):
640?wx_fmt=png
而四大坐标系,包括世界坐标系、相机坐标系、图像坐标系、像素坐标系,它们之间的转换关系如下:
640?wx_fmt=png
最终,从理想的相机模型,从世界坐标系到像素坐标系的转换关系:
640?wx_fmt=png
但由于制造原因,使得成像过程(从相机坐标系到图像坐标系转换过程中)存在着畸变,主要有两类,径向畸变和切向畸变,它们可以通过以下公式进行修正:
640?wx_fmt=png

03 双目标定公式推导

640?wx_fmt=png
图3 标定模型 [2]
640?wx_fmt=png
另外,右相机主点相对于左相机主点,显然还有:
640?wx_fmt=png
640?wx_fmt=png
代入上式,因为拍摄了多张图片,利用最小二乘法,也可以是奇异值分解(数学的部分比较复杂,在这里忽略),总而言之,最小化误差,即可得到我们最佳估计的 矩阵,有了这两个矩阵,我们做个旋转、平移就可以了。注:虽然得到了旋转、平移矩阵,也但是极线校正的方法有很多,这个我们之后讲。

04 极线校正理论推导

双目标定后,我们得到了右相机相对于左相机的位姿关系,也就是R、T矩阵,下面一步即做极线校正。校正好处是之后做立体匹配搜索的时候,只需要在同高度附近进行搜索,大幅提升效率。根据前文的推导,在获取了R、T矩阵后,我们就要进行极线校正(立体校正),使两部相机光轴平行,如下所示:
640?wx_fmt=png
640?wx_fmt=png
图4(a) 立体校正前 [2]图4(b) 立体校正后 [2]但是平行的方法有很多,可以:
  • 左相机不动,右相机动。
  • 也可以两部相机旋转到中间等等。
最常见的校正方法就是Bouguet极线校正方法

Bouguet极线校正方法:左右相机成像平面各旋转一半,使得左右图像重投影造成的误差最小,左右视图的共同面积最大。

具体步骤(这块理论推导可以去看论文,这里只给出结论,看不懂没关系,不妨碍我们使用它):
640?wx_fmt=png

640?wx_fmt=png

得到这两个变换矩阵,左、右相机分别乘以这两个矩阵即可完成变换,其中已经包含了平移信息!

再计算重投影矩阵,其实现了像素坐标系(左相机)到世界坐标系之间的转换:
640?wx_fmt=png
校正后,可以根据需要对图像进行裁剪,需重新选择一个图像中心,和图像边缘从而让左、右叠加部分最大。
640?wx_fmt=png
                         图2 裁剪效果演示 [2]

05 参考文献

1.opencv双目视觉标定,激光结构光提取,指定特征点获取世界坐标:https://blog.csdn.net/slzx5511/article/details/1038447192.[立体视觉] 双目立体标定与立体校正:https://blog.csdn.net/u011574296/article/details/738264203.工业相机双目标定:https://zhuanlan.zhihu.com/p/636189864.本质矩阵和基础矩阵区别是什么?:https://www.zhihu.com/question/27581884备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾:一个超干货的3D视觉学习社区本文仅做学术分享,如有侵权,请联系删文。下载1在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。下载2在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。下载3在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

640?wx_fmt=png▲长按加微信群或投稿

640?wx_fmt=jpeg

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近3000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款640?wx_fmt=jpeg 圈里有高质量教程资料、可答疑解惑、助你高效解决问题觉得有用,麻烦给个赞和在看~640?wx_fmt=gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK