三维计算机视觉

相机模型与多视几何

相机标定与稀疏重建

立体视觉三维重建

(1)人脑中的腹部通道进行物体视觉,目前主要采用基于学习的方法

(2)背部通道进行空间的视觉,目前主要采用基于几何的方法

三维视觉中,主体的方法是几何方法,深度学习方法予以辅助

(3)前额皮质,通过信息融合实现高级认知

场景的三维结构和相机的六自由度空间位姿是智能机器人感知,决策,动作的基础信息

计算机视觉框架

三维与二维之间的联系




Python双坐标 python两坐标点间距离_世界坐标系


三维视觉主要是Marr

特征提取 2.5维深度 三维模型

三维视觉研究内容

(1)场景结构 (2)相机位姿(相机参数) 六自由度位姿(位置 朝向)

首先拍摄图像序列,离线重建

核心通过二维图像,获取场景精准三维结构和相机六自由度位姿


Python双坐标 python两坐标点间距离_世界坐标系_02


从运动恢复结构,场景结构 和 位姿是同时计算,更准确的是结构和运动的同步估计

先离线建图后在线确定位置


Python双坐标 python两坐标点间距离_世界坐标系_03


同步构图和定位 场景结构和位姿实时计算

闭环检测:绕场景一周,回到原点

漫反射 小孔成像 孔大时成像为孔,孔小时成像为物体倒像

小光圈(曝光实践增长,高亮度图像)


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_04


大光圈 (曝光时间短,图像暗)

光圈过小(产生衍射现象,图像模糊)


Python双坐标 python两坐标点间距离_深度学习_05


在聚焦一定范围内都可以认为是清晰成像,两个弥散圈的距离叫做景深

焦距一定 光圈调节景深

大光圈 景深小

小光圈 景深大


Python双坐标 python两坐标点间距离_深度学习_06


Python双坐标 python两坐标点间距离_Python双坐标_07


小孔相机成像推导

二维平面的成像(简化小孔成像)


Python双坐标 python两坐标点间距离_世界坐标系_08


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_09


相似三角形推导

平行线 在 二维中相交


Python双坐标 python两坐标点间距离_世界坐标系_10


无穷远的元素在欧式空间存在不参于计算

需要新坐标系

射影空间看作是欧式空间的扩展


Python双坐标 python两坐标点间距离_二维_11


欧式空间看作开放的

射影空间看作是封闭的


Python双坐标 python两坐标点间距离_世界坐标系_12


Python双坐标 python两坐标点间距离_世界坐标系_13


欧式空间到射影空间之间的转换


Python双坐标 python两坐标点间距离_世界坐标系_14


对应同一个欧式空间点

最后一维表示 欧式空间中存在不参与计算 射影空间中表示无穷远


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_15


三维射影空间到二维射影空间的转换


写一起,表示二维齐次


是相机的参数 焦距单位 一般为cm,mm


与图像


写一起需要相同量纲,转化为像素(物理长度跨越多少个像素)


三维图像点 与场景有关

二维图像点与成像有关


Python双坐标 python两坐标点间距离_Python双坐标_16


左图像点的齐次坐标 右三维点 齐次坐标

左矩阵 相机物理性质 右矩阵 投影矩阵

相机模型 坐标系

前述定义相机光心为中心的三维坐标系会随着相机变化

原则上三维场景点不应以相机变化而变化

需要进行坐标转换 更常见 定义在世界坐标系中

欧式空间中,坐标系之间转换满足刚体变换


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_17


世界坐标系 与 相机模型之间的转化 在 齐次坐标系下

每个世界坐标系通过矩阵变化 转化为相机坐标系


Python双坐标 python两坐标点间距离_世界坐标系_18


外参 即是 外姿


是世界坐标系 下的表达


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_19


求解相机位姿 就是求解



几何视觉的目的,从图像信息还原周边场景三维结构,相机位姿,可选参数

成像过程 右到左

几何视觉 左到右


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_20


感光源


完整版内参数矩阵


Python双坐标 python两坐标点间距离_二维_21


左上角 带有主点


坐标都为正


中心 坐标 只有



Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_22


成像时直线弯折

去畸变算法 直线成像为直线

多视几何

几何视觉下,单幅图像无法重建场景结构 (深度学习正在研究单幅重建)

三维到二维 是降维 (丢失)

二维到三维 会产生歧义


Python双坐标 python两坐标点间距离_Python双坐标_23


多幅图像 完成场景几何重建 左 到 右


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_24


已知,交点为三维重建点


可以唯一确定


Python双坐标 python两坐标点间距离_世界坐标系_25


依次绘制空间点云位置,空间射线相交,需要已知内外参数


Python双坐标 python两坐标点间距离_Python双坐标_26


实际中,只能已知左边,右边所有值都是未知,多个方程进行求解

两视图几何


Python双坐标 python两坐标点间距离_二维_27


将世界坐标系建立于左边的图像 image1


为 单位矩阵


为 0 向量 (已知)


第二个相机的位姿是相对于第一个的平移和旋转


Python双坐标 python两坐标点间距离_二维_28


对应的三维点 肯定在射线上


Python双坐标 python两坐标点间距离_深度学习_29


投影到右方图像 投影点


与光心相连


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_30


投影线称为对极线,


两条对极限构成对极平面


三维降为二维 将所有量约束到平面,包括了内参数,外参数。

已知



未知


红色点


(空间反投射线含内参和外参)


降维作用,如对空间旋转的作用

二维平面 ,旋转,只需一个角度,三维需要三个欧拉角

数学刻画对极平面

通过基本矩阵



Python双坐标 python两坐标点间距离_深度学习_31


Python双坐标 python两坐标点间距离_世界坐标系_32


这里的极线指的是image2上的极线


点在极线上,二次型为0(直线法向量关系)


Python双坐标 python两坐标点间距离_世界坐标系_33


联系起来,已知和未知(


)联系起来


中包含的


Python双坐标 python两坐标点间距离_Python双坐标_34


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_35


计算出


后,射线相交为



求解方程,算法 8点法

给定一组点,得到


的方程组


Python双坐标 python两坐标点间距离_世界坐标系_36


为 1 有8个未知量


Python双坐标 python两坐标点间距离_深度学习_37


秩为2没法用,8个自由度


Python双坐标 python两坐标点间距离_python计算坐标点欧式距离_38


需要非平凡解


为平凡解


Python双坐标 python两坐标点间距离_世界坐标系_39


这样计算出得


可能秩为3 不满足约束


Python双坐标 python两坐标点间距离_世界坐标系_40


Python双坐标 python两坐标点间距离_二维_41


八个对应点 在同一平面,即


不满秩


Python双坐标 python两坐标点间距离_Python双坐标_42


求出


需要进行分解


需要引入本质矩阵


标定参数 已知


Python双坐标 python两坐标点间距离_Python双坐标_43


本质矩阵 自由度为5 由


构成


Python双坐标 python两坐标点间距离_深度学习_44


计算模型为:(1)计算基本矩阵 8个点 (2)计算本质矩阵 5个点

对外点无法控制,迭代次数固定下,使用模型点数越少,在同样计算资源下,模型正确概率有量级提升。


Python双坐标 python两坐标点间距离_二维_45


在图像匹配的过程中,无法避免有外点的操作,去除外点,可以通过基本矩阵,使得模型更加鲁棒。


Python双坐标 python两坐标点间距离_Python双坐标_46