当前位置:网站首页>双目立体视觉笔记(三)三角测量、极线校正
双目立体视觉笔记(三)三角测量、极线校正
2022-08-04 12:29:00 【郑学长】
三角测量和极线校正
·三角测量
假设两个相机像平面精准位于同一平面上,且行对齐,两个光轴严格平行。
利用三角形关系,我们不难推出Z值:
如果主点 c x l c_{x}^{l} cxl, c x r c_{x}^{r} cxr坐标相同则可简化为:
因为视差 d = x l − x r d = x^{l}-x^{r} d=xl−xr,且 Z Z Z为我们的深度值 d e p t h depth depth,故:
d e p t h = f T d depth = \frac{fT}{d} depth=dfT
·视差与深度图关系
(1)视差与深度成反比,视差接近0时,微小的视差变化会产生较大的深度变化。
(2)当视差较大时,微小的视差变化几乎不会引起深度多大的变化。
(3)因此,立体视觉系统仅物体距离相机较近时具有较高的深度精度。
·极线校正
(1)校正的过程:就是将相机在数学上对准到同一观察平面上,使得相机像素行是严格对齐的。
(2)校正的目的:对两幅图像的二维匹配搜索变成一维,节省计算量,排除虚假匹配点。
·校正算法
为了将相机极点变换到无穷远使得极线水平对准,我们创建一个旋转矩阵,首先是 X X X轴的旋转,我们将 X X X轴旋转到与基线相同的方向即旋转后新 X X X轴就是 O l − O r O_{l}-O_{r} Ol−Or,旋转向量: e 1 = T ∣ T ∣ e_{1}=\frac{T}{|T|} e1=∣T∣T。
确定旋转后的新 Y Y Y轴,只需满足与 e 1 e_{1} e1正交即可:选择与主光轴和 e 1 e_{1} e1相交的方向:
e 2 = e 1 × ( R l [ 0 , 0 , 1 ] T + t l ) e_{2}=e_{1} \times (R_{l}[0,0,1]^{T}+t_{l}) e2=e1×(Rl[0,0,1]T+tl)
新的 Z Z Z轴,与 e 1 , e 2 e_{1},e_{2} e1,e2垂直且满足右手法则: e 3 = e 1 × e 2 e_{3}=e_{1} \times e_{2} e3=e1×e2,
最终得到的旋转矩阵: R n e w = [ e 1 , e 2 , e 3 ] R_{new}=[e_{1},e_{2},e_{3}] Rnew=[e1,e2,e3],
新的旋转矩阵: R l n e w = R n e w R l t R_{l}^{new}=R_{new}R_{l}^{t} Rlnew=RnewRlt, R r n e w R n e w R r t R_{r}^{new}R_{new}R_{r}^{t} RrnewRnewRrt,
校正后,baseline T T T计算:
下式中 c l r c_{lr} clr是指右相机光心在左相机坐标系下的坐标(也等于与右相机光心[0,0,0]的距离), t求解公式的意义是左相机光心在右相机校正后的坐标系下的坐标(也等于与右相机校正后的坐标系下光心[0,0,0]的距离)。故baseline就是x轴方向的距离。

·视差图转深度图
视差图是校正后的坐标系下得到的值,首先将其转换为校正后坐标系下的深度图
已知:
则:
把上式写成矩阵形式:
式中 Q ′ , w Q^{'},w Q′,w定义如下:
将校正后的坐标系下深度图转换到校正前的相机坐标系下
已知:校正前的相机坐标系下坐标 ( x , y , z ) (x,y,z) (x,y,z)转到校正后相机坐标系下坐标 ( x ′ , y ′ , z ′ ) (x^{'},y^{'},z^{'}) (x′,y′,z′)转换关系如下:
则已知校正后的求校正前的公式如下:
再将其投影到图像坐标系下:
即:
将上两步合并得到校正后坐标系下的视差图 ( u ′ , v ′ , d i s p ) (u^{'},v^{'},disp) (u′,v′,disp) 与校正前的坐标系下的深度图 ( u , v , d e p t h ) (u,v,depth) (u,v,depth)的转换矩阵 Q Q Q,已知:
则:
·立体匹配
三维重建的核心就是立体匹配。通过寻找匹配点,利用三角测量或对极约束得到其在空间中的3D信息。
立体匹配算法主要分为全局、局部、半全局。
(1)全局立体匹配算法:
全局立体匹配算法主要是采用了全局的优化理论方法估计视差,建立全局能量函数,通过最小化全局能量函数得到最优视差值。通过二维相邻像素视差之间的约束(如平滑性约束)而得到更好的匹配效果,但是对内存的占用量大,速度慢不适合实时运行。主要的算法有图割(graph cuts)、信念传播(belief propagation)、动态规划等算法。
(2)局部立体匹配算法:
主要是采用局部优化方法进行视差值估计,局部立体匹配算法有 SAD,SSD 等算法,与全局立体匹配
算法一样,也是通过能量最小化方法进行视差估计,但是在能量函数中,只有数据项,而没有平滑项。
该算法由于每个像素计算互不干扰可以并行计算,所以可以实时。但由于所基于的局部窗口视差相同的
假设在很多情况下并不成立导致匹配效果较差。
(3)半全局立体匹配算法SGM
综合上述局部和全局算法的优缺点,半全局算法依旧采用全局框架,但是在计算能量函数最小化的步骤
时使用高效率的一维路径聚合方法来代替全局算法中的二维最小化算法,使用一维最优来近似二维最优,得到的视差图在效果上和全局算法没有太大的差别,但是算法效率却有非常大的提升。
边栏推荐
- ES 节点2G内存分析
- 力扣每日一题-第48天-345. 反转字符串中的元音字母
- 03 多线程与高并发 - ReentrantLock 源码解析
- 为什么密码云服务平台是云时代的必然之选?
- LeetCode每日一题(858. Mirror Reflection)
- FHQ-Treap 简介
- yolo系列的head模块
- Focusing on data sources, data quality and model performance to build a credit profile of small and micro enterprises
- DateTimeFormatter api
- 【UML】信息系统分析与设计知识点总结
猜你喜欢

A comprehensive understanding of MOS tubes, an article is enough

Why is Luo Zhenyu's A-share dream so difficult to fulfill?

Hit the interview!The latest interview booklet of Ali Jin, nine silver and ten is stable!

鲜花“刺客”收割七夕

程序猿七夕礼物-如何30分钟给女朋友快速搭建专属语聊房

接入华为游戏防沉迷,点击防沉迷弹窗后游戏闪退

LeetCode每日一题(858. Mirror Reflection)
![Valentine's Day Romantic 3D Photo Wall [with source code]](/img/a9/2c26f4f048f3c0a9a65551bc734233.png)
Valentine's Day Romantic 3D Photo Wall [with source code]

动规(16)-并查集基础题——格子游戏

Motion Rule (16)-Union Check Basic Questions-Grid Game
随机推荐
Programmer Qixi Gift - How to quickly build an exclusive chat room for your girlfriend in 30 minutes
"Lonely Walking on the Moon" is a powerful medicine, it can't cure the internal friction of happy twist
A Survey of Multi-Label Classification under Supervised and Semi-Supervised Learning
情人节浪漫3D照片墙【附源码】
聚焦数据来源、数据质量和模型性能构建小微企业信用画像
关于mysql join 的一些说明
TensorFlow学习记录(三):高阶操作 & 神经网络与全连接层
Django使用腾讯云发送短信并存入redis
DateTimeFormatter api
飞书更新招聘功能 候选人可选择面试时间
【HMS core】【FAQ】Account Kit、MDM能力、push Kit典型问题合集6
RobotFramework二次开发(一)
动规(18)-并查集基础题——团伙
高速电路PCB布局布线参考
罗振宇的A股梦,咋这么难圆?
用VbScript控制光驱
Motion Rule (16)-Union Check Basic Questions-Grid Game
《独行月球》猛药,治不了开心麻花内耗
云原生Devops 的实现方法
#夏日挑战赛#OpenHarmony 给你的输入法加点彩—星球崛起