双目立体视觉笔记(三)三角测量、极线校正

三角测量和极线校正

·三角测量

假设两个相机像平面精准位于同一平面上,且行对齐,两个光轴严格平行。
在这里插入图片描述
利用三角形关系,我们不难推出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=xlxr,且 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} OlOr,旋转向量: e 1 = T ∣ T ∣ e_{1}=\frac{T}{|T|} e1=TT

确定旋转后的新 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
综合上述局部和全局算法的优缺点,半全局算法依旧采用全局框架,但是在计算能量函数最小化的步骤
时使用高效率的一维路径聚合方法来代替全局算法中的二维最小化算法,使用一维最优来近似二维最优,得到的视差图在效果上和全局算法没有太大的差别,但是算法效率却有非常大的提升。

双目视觉三角测量原理是基于人类双眼看物体存在视差的原理。在计算机视觉中,通过同一基线不同位置获得两幅图像,可以像人类双眼一样估计物体的形状和远近。这个原理利用目标物体在两幅图像中的位置不同来计算图像的视差图,然后通过相似角形原理可以获取目标的维信息。双目视觉系统的测量原理可以通过图像矫正和对应点的搜索来实现。经过图像矫正后,左图中的像素点只需要沿着水平的极线方向搜索对应点即可。通过比较不同点的视差,可以确定物体的远近关系。视差越小表示物体越远,视差越大表示物体越近。双目视觉三角测量是一种绝对的测量方法,而不是估算。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [双目视觉测量技术介绍](https://blog.csdn.net/javastart/article/details/123949531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [双目视觉测距原理,数学推导及维重建资源](https://blog.csdn.net/piaoxuezhong/article/details/79016615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值