极线几何与立体视觉

一个人想着一个人 提交于 2020-02-16 03:13:05

极限几何与立体视觉

1. 试画图说明极线几何关系,并指出极点、极线所在,解释极线约束。

答:
极线几何
我们使用一个相机进行拍摄目标物体的时候,会 发现几个物体都重合了,但是当我们再放台相机的时候,就可以把这些物体的特征获取到。
也就是双目视觉对应关系,同时也可用于相邻两帧间的运动估计。
在这里插入图片描述
极线几何的关系
在这里插入图片描述极线约束:匹配点必须在极线上
基线:左右像机光心连线;
极平面:空间点,两像机光心决定的平面;
极点:基线与两摄像机图像平面的交点;
极线:极平面与图像平面交线

2. 结合本质矩阵的定义,说明本质矩阵的意义,同时思考与上一周中平面点对应透视矩阵的区别。

本质矩阵
本质矩阵 E(Essential Matrix):反映【空间一点 P 的像点】在【不同视角摄像机】下【摄像机坐标系】中的表示之间的关系。
前面我们已经知道了各个坐标系之前的转换:
相机坐标系与世界坐标系
在这里插入图片描述
相机坐标系与图像坐标系
在这里插入图片描述

两相机坐标系某点与对应图像坐标系的关系:
在这里插入图片描述
同一点在两相机坐标系之间的关系:
在这里插入图片描述
两边同时叉积t:
在这里插入图片描述
再与p∼r​点积:
在这里插入图片描述
本质矩阵求解
基本方程
在这里插入图片描述
线性方程求解
在这里插入图片描述
有九个点(非共面)时,可获得线性解:
在这里插入图片描述
注意:解与真实解相差一个比例系数

使用SVD分解求解平移和旋转矩阵
在这里插入图片描述
可以证明,本质矩阵有2个相同的非零特征值在这里插入图片描述
因此,最终可以得到4个解,但仅有一个合理解

3. 说明三维重构的步骤,并指出输入及输出要求。

三维重构
三维重构的步骤:

1.提取特征点,建立特征匹配
2.计算视差
3.计算世界坐标
4.三角剖分
5.三维重构

提取特征点并建立匹配:
在这里插入图片描述
特征匹配方式:

特征点提取+特征匹配
光流匹配
块匹配
立体矫正+平行匹配

视差计算:
在这里插入图片描述
计算世界坐标–形成点云数据:
在这里插入图片描述
三角剖分:采用经典的Delauney算法:
在这里插入图片描述

Delauney算法示意:
在这里插入图片描述
Delaunay三角网是唯一的(任意四点不能共圆),在Delaunay三角形网中任一三角形的外接圆范围内不会有其它点存在。
三维重构:基于计算坐标,采用OpenGL绘制三角片:
在这里插入图片描述
效果不好的主要原因,是图像中深度变化较大,同时灰度变换,而特征点选取的比较稀疏.
立体视觉可计算空间点的三维坐标。基线越长,距离越近,精度越高
根据双目视觉进行三维重构包括特征点提取、匹配、坐标计算、三角剖分、三维重构等几个步骤

4. 说明特征匹配的步骤,进一步说明基于k-d树的特征匹配方法的思路。

特征匹配的步骤:
输入图像—SIFT特征点检测—特征点描述—特征点匹配和滤波—识别结果
在这里插入图片描述
暴力搜索与2NN判据
设两帧图像中的对应特征点集xi,yi和x′i,y′i,共N个特征点 对应点 xj=(xj,yj),匹配点为距离最小点 x′j=x′j∗,y′j∗=minNk=1||xj−x′k|| ,对应距离d∗j 进一步得到次小点𝐱′′,对应距离d∗’j, 则匹配点满足:d∗j<α∗d∗’j, 认为正常匹配
在这里插入图片描述
快速搜索方式—-二叉树
1.算法复杂度o(N2)。特征点数量多时,匹配效率低。
2.二叉搜索树(BST)提供了高效搜索方式
3.以下是一颗一维的二叉搜索树,尝试搜索和11最近的点。
在这里插入图片描述
K-D树
对于每一层,可以指定一个划分维度(轴垂直分区面axis-aligned splitting planes)。最简单的就是按照关键字轮流划分(例如:奇数层按照x轴划分,也即第一个关键字;偶数层按照y轴划分,也即第二个关键字)。
在这里插入图片描述
K-D树的建立方式
对于所有的样本点,统计它们在每个维上的方差,挑选出方差中的最大值,对应的维就是分裂域的值。数据方差最大表明沿该维度数据点分散得比较开,这个方向上进行数据分割可以获得最好的分辨率;然后再将所有样本点按其第该维的值迕行排序,位于正中间的那个数据点选为分裂结点对应域。重复上述过程直至获得所有叶子节点显示了构建返棵二叉树的所有步骤。

下面以一个简单的例子来解释上述k-d tree的构建过程。

假设样本集为:{(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)}。
在这里插入图片描述
K-D树最近邻查询算法

1.首先通过将查找点数据根结点数据对应维 上的值相比较,按照二叉搜索的方式,顺着“搜索路径”找到最近邻的近似点,也就是 与查询点处于同一个子空间的叶子节点;
2.为了防止漏查与查找点 跟进的距离的点,回溯搜索路径,并且判断搜索路径上节点的其他子节点空 间中是否还有距离查询点更近的数据点,如果有,则需要跳到其他子节点空间中去搜索。
3.重复返个过程直到搜索路径为空。

在这里插入图片描述
BBF(Best Bin First)
​ BBF的查询思路就是将“查询路径”上的节点进行排序,如按各自分割超平面(称为Bin)与查询点的距离排序,优先考虑距离小的点。BBF还设置了一个运行超时限制,当优先级队列中的所有节点都经过检查或者超出时间限制时,算法返回当前找到的最好结果作为近似的最近邻。
随机化K-D森林
同时独立建立多个k-d树,每棵树在具有大方差的各维中(如top-5)随机选择。查询时,并行查询多个k-d树,按照BBF准侧将候选节点放在同一队列中。
在这里插入图片描述

5. 说明RANSAC方法的基本思想及实施步骤

RANSAC
稳健(robust): 对数据噪声的敏感性
在这里插入图片描述
基本思想
RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:

1.有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。
2.用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。
3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
4.然后,用所有假设的局内点去重新估计模型,因为它仅仅被初始的假设局内点估计过。
5.最后,通过估计局内点与模型的错误率来评估模型。

这个过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为比现有的模型更好而被选用
实施步骤
SIFT与RANSAC结合
RANSAC算法在SIFT特征筛选中的主要流程:
(1) 从样本集中随机抽选一个RANSAC样本,即4个匹配点对
(2) 根据这4个匹配点对计算变换矩阵M
(3) 根据样本集,变换矩阵M,和误差度量函数计算满足当前变换矩阵的一致集consensus,并返回一致集中元素个数
(4) 根据当前一致集中元素个数判断是否最优(最大)一致集,若是则更新当前最优一致集
(5) 更新当前错误概率p,若p大于允许的最小错误概率则重复(1)至(4)继续迭代,直到当前错误概率p小于最小错误概率

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!