作者丨李迎松@知乎
来源丨https://zhuanlan.zhihu.com/p/159194599
编辑丨3D视觉工坊
你站在桥上看风景, 看风景人在楼上看你。 明月装饰了你的窗子, 你装饰了别人的梦。—《断章》卞之琳
用现代诗人卞之琳先生的诗《断章》来引入今天的主题,再合适不过了。诗中描述的相对性正好可以形象的理解三维重建坐标系的相对关系。看风景的你构成以自我为中心的坐标系,目光所至是你的坐标系方向;楼上人构成以他为中心的坐标系,目光所至构成他的方向,两坐标系之间蕴含着几何转换关系。
图示:(本人灵魂画作,诗的意境完全被破坏了哈哈!)

做三维重建,要是没听说过Structure From Motion(SFM),那你一定属于两类:
·刚入门的小白
·做了好几年的纯摄影测量方向老人
哈哈,开个玩笑,我就是做了好几年的摄影测量老人,其实是叫法不一样而已,摄影测量学课本中没有SFM这样的词,而是叫相对定向+前/后方交会+光束法平差,SFM是计算机视觉领域的叫法,其实理论完全一样。当然现在计算机视觉和摄影测量融合的很深了,而计算机视觉的受众群体也要庞大很多,所以本篇其实是纯计算机视觉角度的讲解。
Structure From Motion,顾名思义,从运动中恢复结构。
这里的运动指相机的运动,可以人拿着相机一边走一边拍照(或者一边转圈一边拍),还可以汽车载着相机一边兜风一边拍照,还可以飞机拖着相机一边飞翔一边拍照,还有卫星…,不说了,真羡慕相机!反正一句话,让相机运动起来。
而结构是指三维结构,包括两类:
-
·相机位姿
-
·场景三维数据
我们来看张图(图片来自著名的开源项目OpenMVG):

图像的上半部分是输入的图像(通过移动相机拍摄的各位置的图像),下半部分是通过SFM恢复的相机位姿和场景三维数据。我再重新组织下图,你们看看:

我为什么把SFM放开始来说呢,这和坐标系和关键矩阵有啥联系?
坐标系和关键矩阵正是SFM的几何基础,如果你不做SFM,只做立体匹配或网格构建什么的,那你即使不知道坐标系和关键矩阵,你也能做出不错的成果,但是如果你做SFM不懂它俩的话,那你可就要面壁思过了。
我再啰嗦一会再入正题!SFM怎么做?
-
·图像特征提取与匹配
-
·相机位姿解算
图像特征提取与匹配是纯二维视觉,我们就不细说了。
相机位姿解算就和今天的主题100%紧密相关。我打个比喻,增量式SFM就是把一堆图像先点个鸳鸯谱,分成一对对,再对最恩爱的一对鸳鸯做图像特征提取与匹配,然后通过特征匹配结果求解关键矩阵,并分解关键矩阵得到鸳鸯间的相对位姿。之后不断的加入新的鸳或鸯,直到所有鸳鸯形成一个紧密相连的鸳鸯群。(我突然感觉这个比喻似乎不太合适,有被和谐的风险,不要举报我!)
言归正传,图像/位姿/关键矩阵,这是我提炼的三个关键信息。图像到三维位姿,就需要坐标系转换(二维到三维当然要坐标系转换了);而关键矩阵,是计算相机位姿的关键。
我就直接告诉你们有三个关键矩阵F、E、H:
F:Fundamental matrix,基础矩阵
E:Essential matrix,本质矩阵
H:Homography matrix,单应矩阵
至于有多关键,我们先聊聊坐标系,再聊关键矩阵。
坐标系有坐标系,才有位置概念,这是基础。
二维的图像到三维的结构,那必定有个坐标系的变换。还记得文章开头的灵魂画作不(想你们也不会忘),里面有两个坐标系,主人公坐标系和看风景人坐标系,他两所看到的景物大小尺度是一样的,只不过俩站的位置、眼睛朝向不一样,存在一个旋转平移变换。在三维重建中,我们分别对应着相机坐标系和世界坐标系,相机坐标系以相机为中心,朝着景物的方向,世界坐标系根据应用可随意设置,比如大地测量,就是大地坐标系。
景物在相机传感器上成像,形成一张二维图像,图像像素所在的坐标系就是影像坐标系。这三个坐标系就是我们今天要了解的视觉三维重建坐标系统:
-
·影像坐标系
-
·相机坐标系
-
·世界坐标系
世界坐标系是从意义上和相机影像无关的坐标系,它只和你的应用需求有关,往往是完全固定的,无论你相机如何移动,我自岿然不动!
比如我们做室外导航地图,那世界坐标系肯定是大地坐标系,即以参考椭球面为基准面建立起来的坐标系;而如果我们做小物体的三维重建,只关心物体尺寸,不在乎绝对位置,则可以建立一个位置朝向都比较随意的坐标系,比如在标定板上,比如在相机本身。
那有人就有疑问了,你建立的这么随意,那他意义在哪呢?
世界坐标系最大的意义就是他是恒定的,恒定意味着统一,你可以把多个位置重建的三维数据都统一到一个世界坐标系下,它们就有了和真实世界一样的相对位置关系,这样你才能从三维数据中了解A的左边是B,B的左边是C。这点相机坐标系是没法做到的,因为相机坐标系以相机为中心,而相机又在不断地移动,所以在相机坐标系中,你在位置1拍摄的场景和你在位置2拍摄的场景就会重合,但是真实世界中两个位置明显不同。
那世界坐标系和相机坐标系怎么转换?
世界坐标系和相机坐标系都是以物理尺寸为单位,所以他们尺度一致,但是原点不一样,朝向也不一样,所以他们存在一个刚性的旋转平移。
反过来,通过影像坐标,就没法直接计算世界坐标了,就需要知道 ,也就是深度信息。要是能直接计算那可不逆天了,视觉三维重建工程师得全下岗了!
坐标系咱们就说到这里。大家会推导投影矩阵就算是通关了。
下面来看看关键矩阵。
关键矩阵(基础矩阵F、本质矩阵E、单应矩阵H)
先阐明:关键矩阵描述的是两张影像的像素点之间的对应关系,用来做SFM两张图像间的相对位姿变换。
基础矩阵和本质矩阵先不直接告诉你们这三个关键矩阵是什么含义,我们一步步推导开来,看到最后你们会恍然大悟,哦,原来是这样!
我们先来看两张影像构成的双视模型。
开始推导:
本文仅做学术分享,如有侵权,请联系删文。
下载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视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~