三维重建学习(一~六)传统视觉几何
三维重建学习(一)摄像机几何
计算机视觉之三维重建(1)—摄像机几何_摄像机像平面-CSDN博客
【2022B站最好最全的【三维重建】课程!!!北邮教授竟然把三维重建讲的如此通俗易懂,学不会UPZHIJIE 退网下架!!!-人工智能/计算机视觉/三维重建】https://www.bilibili.com/video/BV1DP41157dB?p=4&vd_source=bd967f0d540a64617b8b612bc0f0f9a3
针孔摄像机
基本上就是初中学习的小孔成像的原理。注意,我们平常所说的照片直接就是“虚拟像平面”,不用正负号。
小孔成像模型,运用了相似三角形原理。k方向也就是常说的z方向,深度方向。下面这张图演示了从jok面上做的二维映射。
加了透镜提高亮度,还是相似三角形原理。
物体聚焦有特定距离,如果实际物体过近,会导致失焦。
透镜还会产生畸变。
径向畸变:图像像素点以畸变中心为中心点,沿着径向产生的位置偏差,从而导致图像中的像发生形变。
- 枕形畸变
- 桶形畸变
拿不到连续的图片,只能拿到像素点。
坐标系变化需要修正,从摄像机坐标系-》像平面坐标系-》像素坐标系
- 偏置
- 单位变换 像素/m
转换非线性,解决非线性问题。
由于设备性能,导致X,Y上的像素转换率不同,一个用阿尔法表示,一个用贝塔表示。
同时摄像机的像平面有偏移,并不是90度垂直于摄像机平面Z方向。
最终得到了摄像机模型如下:
5个自由度,也就是内参数可改变的参数。独立的,不互相影响。
规范化摄像机
世界坐标系
真实的世界坐标系,因此会引出摄像机外参数,来进行坐标系转换。(旋转+平行)
R为旋转,三行三列。T为平行,三行一列。
摄像机几何
各个符号的物理意义与维度
自由度总共11个。
5个摄像机内参数,6个摄像机外参数(旋转3个,平移3个)。
投影变化的性质:
- 点投影为点
- 线投影为线
- 近大远小
- 角度不再保持
- 平行线相交
其他摄像机模型
弱透视与透视投影摄像机
摄像机与物体过远距离当作平面计算,变成等比缩放,自由度为8,减少计算量。
正交投影摄像机
工业设计行业多
弱透视
三维重建(二)摄像机标定
参考文献:【2022B站最好最全的【三维重建】课程!!!北邮教授竟然把三维重建讲的如此通俗易懂,学不会UPZHIJIE 退网下架!!!-人工智能/计算机视觉/三维重建】https://www.bilibili.com/video/BV1DP41157dB?p=2&vd_source=bd967f0d540a64617b8b612bc0f0f9a3
计算机视觉之三维重建(2)—摄像机标定_三维重建添加缩放因子-CSDN博客
摄像机标定:求摄像机内外参数矩阵。
针孔模型&透镜摄像机标定问题
小写p表示像素平面上的坐标
大写P表示世界坐标。
搞一个盒子,拍照。获得图像与世界坐标中一一对应的点。
摄像机投影矩阵有11个未知量。
一对点可以有两个方程。那需要11个点最好。但是一对点两个,最少得要6对,12个方程,无解,用最小二乘法去接近最优解。但平常有噪声,点越多,最小二乘法得得结果误差越小。超定问题。
提取摄像机参数
总:
径向畸变的摄像机标定
忽视m1,m2偷鸡。
2D平面上的变换
3D平面上的变换
三维重建学习(三)单视几何
计算机视觉之三维重建(3)—单视几何_影消线方程-CSDN博客
单视图极难实现三维重建(信息有限)。
- 无穷远点、无穷远线与无穷远平面
- 影消点,影消线
- 单视重构
影消点:三维空间中的无穷远点在图像平面上的投影点。
识别线有助于重构场景。
图像中的两条直线的交点如果在影消线上,则这两条线在3D空间是平行线。
利用
三维重建学习(四)三维重建基础与极几何
三维重建基础
单视图有个坏处,会产生多义性。
双眼(双摄像头)使两个直线产生焦点,即可固定位置。
多视图几何的关键问题
- 摄像机几何:从一张或者多张图像中求解摄像机的内外参数
- 场景几何:通过二至多幅图寻找3D场景坐标
- 对应关系:已知一个图像中的p点,如何在另外一个图像中找到p‘点。
极几何及基础矩阵
- 极几何
极几何描述了同一场景或者物体的两个视点图像间的几何关系。
- 本质矩阵
- 基础矩阵
平行视图
本质矩阵对规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述;
要用规范化相机。
基础矩阵估计
什么是基础矩阵
基础矩阵对一般的透视摄像机拍摄的两个视点的图像间的极几何关系进行代数描述。
一对点只能提供一个方程。
又变成齐次线性方程组求解。
求出的F不是要求的基础矩阵。
因为基础矩阵的秩为2。
总结
三维重建(五)双目平行视觉
计算机视觉之三维重建(5)—双目立体视觉_平行视图-CSDN博客
三角测量用到了相似三角形。
http://vision.middlebury.edu/stereo
核心问题:
1.如何获得平行视图?
2.如何建立点对应关系?
图割:能量函数的方法。
PAMI:顶级期刊,主要是常用的基础的可靠的算法。
在视野中,物体远一点好,中间一点好。偏移会小。
三维重建学习(六)多视图几何(运动恢复结构)
SfM:Structure from Motion(SfM)通过三维场景的多张图像,恢复出该场景的三维结构信息以及每张图片对应的摄像机参数。
算法实现流程:
- 特征点提取
在这个步骤中,需要对每张图片提取出一些特征点,并计算它们的描述子。在特征点提取的过程中,可以使用 SIFT,SURF 等算法。一般来说,一个好的特征点需要具备旋转不变性、尺度不变性和灰度不变性。 - 特征匹配
将不同图片中的特征点进行匹配,找到它们之间的对应关系。可以使用 KNN,FLANN 等算法进行特征匹配。需要注意的是,在匹配的过程中,需要使用一些鲁棒的技巧来避免匹配误差的影响。 - 相机姿态估计
通过特征点匹配,可以得到不同图片之间的几何变换关系。通过这些变换关系,可以估计出相机的姿态,包括相机的位置和方向。常用的算法包括 RANSAC 算法和 P3P 算法。 - 三角测量
在相机姿态估计的基础上,通过三角测量的方法来估计场景中每个特征点的三维位置。一般来说,需要使用两个相机的视角来进行三角测量,这个过程叫做三角化。 - 重建场景
在完成了每张图片的三维重建之后,需要将它们融合起来来构建整个场景的三维模型。可以使用 BA(Bundle Adjustment)等算法对重建结果进行优化。
需要注意的是,由于 SfM 算法是一种迭代的算法,所以在每个步骤中都需要不断地调整参数和优化结果,以获得更加准确和稳定的结果。
数学原理
三种典型的运动恢复结构任务
欧式结构恢复(摄像机内参数已知,外参数未知)
仿射结构恢复(摄像机为仿射相机,内外参数未知)
透视结构恢复(摄像机为透视相机,内、外参数未知)
欧式结构恢复问题
歧义:恢复的结构与真实场景之间相差一个相似变换(旋转,平移,缩放)
度量重构:恢复的场景与真实场景之间仅存在相似变换的重构。
仿射结构恢复
基于因式分解的仿射结构恢复
算法步骤:
- 数据中心化
- 因式分解获得运动与结构
数据中心化
](https://pic.imgdb.cn/item/66a376efd9c307b7e983f761.png)
有解:2mn>8m+3n-8
透视结构恢复
透视结构恢复方法
在相差一个4X4的可逆变换的情况下恢复摄像机运动与场景结构。
代数方法
- 代数方法(通过基础矩阵)
- 捆绑调整(Bundle Adjustment,BA)
两两摄像机求解。
BA 捆绑调整
误差平均了。
PnP问题
PnP(Perspective-n-Point)问题:指通过世界中N个三维点坐标及其在图像中N个像点坐标,计算出相机或物体位姿的问题。
P3P求解摄像机位姿:
核心思路:
- 求解A,B,C三点在当前摄像机坐标系下的坐标;
- 通过A,B,C在当前摄像机下的坐标以及其在世界坐标系下的坐标,估计摄像机相对于世界坐标系的旋转与平移。
回顾
本质矩阵与单应矩阵区别
场景结构
- 本质矩阵:描述规范化摄像机下两视图间的对极约束与场景结构无关,其仅以来相机间的旋转和平移;
- 基础矩阵:描述两视图间的对极约束与场景结构无关,其仅依赖相机内、外参数及相机间的旋转和平移;
- 单应矩阵:要求场景中的点位于同一个平面;或者是两个相机之间只有旋转而无平移。
约束关系
- 本质矩阵:建立规范化摄像机下点和极线的对应关系;
- 基础矩阵:建立点和极线的对应关系;
- 单应矩阵:建立点和点的对应。