双目立体标定与极线校正【双目立体视觉几何】

这篇具有很好参考价值的文章主要介绍了双目立体标定与极线校正【双目立体视觉几何】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

   在这篇博文中,我们来了解一下立体标定的过程。双目相机各自经过相机标定后,该如何把两个相机统一起来,获得物体三维信息呢?
   那么在双目立体视觉中,通过把左右相机平面旋转到一个平面内,且行对齐,旋转后的左右相机平面具有相同的焦距f,且具有相同的v0;且要最大化左右相机公共视场(向中心点移动),需要计算一下从未校正的图像中心点到校正后的位置所在;这样就把所有要求的特性全部统一在内参矩阵中了,结合基线建立起的立体三角相似关系,通过获取两者对应点的视差获得三维点云信息。
   下面我们就来了解一下,立体标定具体所要做的工作。

一、左右图像共面且行对准

统一坐标系—>共面—>行对准
双目立体标定与极线校正【双目立体视觉几何】
   如下所要做的,就是要把分属左右相机坐标系中的量,经过世界坐标系中间量统一到右相机坐标系中;
  R 12 = R r ∗ R l T   \ R_{12}= R_r* R_l^\mathrm{T} \,  R12=RrRlT
  T 12 = T r − R 12 ∗ T l   \ T_{12}= T_r-R_{12}* T_l \,  T12=TrR12Tl
  那么N个标定平面就有N个旋转平移参数,分别执行下述过程,然后取平均就能相对精准得到从左相机到右相机的旋转矩阵   R 12   \ R_{12} \,  R12,平移矩阵   T 12   \ T_{12} \,  T12。其中,   R r   \ R_{r} \,  Rr为右摄像头经过张氏标定得到的相对标定物的旋转矩阵,   T r   \ T_{r} \,  Tr为右摄像头通过张氏标定得到的相对标定物的平移向量。   R l   \ R_{l} \,  Rl为左摄像头经过张氏标定得到的相对相同标定物的旋转矩阵,   T l   \ T_{l} \,  Tl为左摄像头经过张氏标定得到的相对相同标定物的平移向量。
双目立体标定与极线校正【双目立体视觉几何】
  如下所要做的,首先把左右像素平面旋转到共面,所用的操作就是让左右像素平面各自正反向旋转   R 12   \ R_{12}\,  R12的一半;
  r l = R 12 1 2   \ r_l= R_{12}^\mathrm{\frac{1}{2}} \,  rl=R1221
  r r = R 12 − 1 2   \ r_r= R_{12}^\mathrm{-\frac{1}{2}}\,  rr=R1221
  其中,   r l   \ r_l \,  rl为左摄像机旋转到共面时的旋转矩阵,   r r   \ r_r \,  rr为右摄像机旋转到共面时的旋转矩阵。
  然后让左右像素平面极线旋转到行对齐,建立以垂直极线与[1;0;0]的法向量,旋转角度为极线与[1;0;0]的夹角的旋转矩阵;然后两矩阵相乘,就到了共面且行对准的目的;
  t = R r ∗ T 12   \ t = R_r*T_{12}\,  t=RrT12
  w w = t × [ 1 ; 0 ; 0 ]   \ ww = t \times[1; 0; 0]\,  ww=t×[1;0;0]
  w w = a c o s ( ∣ t ⋅ [ 1 ; 0 ; 0 ] ∣ n o r m ( t ) ) ∗ w w   \ ww = acos(\frac{| t \cdot [1;0;0]|}{norm(t)})*ww\,  ww=acos(norm(t)t[1;0;0])ww
  R 2 = R o d ( w w )   \ R_2 = Rod(ww)\,  R2=Rod(ww)
  r l 2 = R 2 ∗ R l   \ r_{l2}= R_2*R_l \,  rl2=R2Rl
  r r 2 = R 2 ∗ R r   \ r_{r2}= R_2*R_r\,  rr2=R2Rr
  其中,   t   \ t \,  t为旋转到共面后O1到O2的平移矩阵,也表示着极线的方向。   w w   \ ww \,  ww为垂直极线与[1;0;0]的法向量,长度是两者之间的角度。   r l 2   \ r_{l2} \,  rl2为左摄像机达到共面行对准时的旋转矩阵,   r r 2   \ r_{r2} \,  rr2为右摄像机达到共面行对准时的旋转矩阵。

二、使得最大成像区域

放大率一致—>图像向中心位移
双目立体标定与极线校正【双目立体视觉几何】
  上一步操作主要是在相机坐标系内,利用旋转平移矩阵达到左右相机共面且行对准;
  对应视差的确定是在像素坐标系内,那么对此就涉及到了焦距,像素中心点位置等参数(如果默认倾斜系数存在,那么也是一个不同的参数量);在左右相机标定过程中,因没有绝对一致的相机镜头,那么两者镜头的参数就不会相同,那么世界坐标系中的物体映射在左右像素坐标上的大小与中心位置也不尽相同,匹配时就会产生误差,相应的重建得到的点云大小也会略有差异;那么统一内参,最大化左右相机公共视场(向中心点移动,且化解掉倾斜系数)就显得尤为重要。

统一焦距变量;
  f c n e w = m i n ( f c y l , f c y r ) ;   \ fc_{new} = min(fc_{yl}, fc_{yr}); \,  fcnew=min(fcyl,fcyr);opencv中是   f c n e w = ( f c y l + f c y r ) / 2 )   \ fc_{new} = (fc_{yl}+fc_{yr})/2)\,  fcnew=(fcyl+fcyr)/2
%该值与真实相差大小,直接决定点云离真实大小。

重投影在校正后的左右像素平面上,像素坐标系原点向CCD中心移动,以使左右相机公共视场最大:
  [ x ; y ] = ( [ u ; v ] − O 1 ) / f c ;   \ [x;y] = ([u; v] - O1)/fc;\,  [x;y]=([u;v]O1)/fc;
  x = x − γ ∗ y ;   \ x = x - \gamma * y; \,  x=xγy;%若有,去掉倾斜因子的影响
  [ x 2 ; y 2 ; 1 ] = c o m p d i s t o r t i o n ( [ x ; y ] , k c ) ;   \ [x2; y2; 1]= comp_distortion( [x;y], kc);\,  [x2;y2;1]=compdistortion([x;y],kc);%MATLAB中的迭代畸变补偿
  [ x 3 ; y 3 ; z 3 ] = r l 2 ∗ [ x 2 ; y 2 ; 1 ] ;   \ [x3; y3; z3] = r_{l2}*[x2; y2; 1];\,  [x3;y3;z3]=rl2[x2;y2;1];
  [ x 4 ; y 4 ] = [ x 3 ; y 3 ] z 3 ;   \ [x4; y4] = \frac{[x3; y3]}{z3};\,  [x4;y4]=z3[x3;y3]; %到校正平面上的归一化坐标
  [ u l n e w ; v l n e w ] = − [ x 4 ; y 4 ] ∗ f c n e w + I m g S z 2 ;   \ [u_{lnew}; v_{lnew}] = -[x4; y4] *fc_{new} + \frac{Img_Sz}{2};\,  [ulnew;vlnew]=[x4;y4]fcnew+2ImgSz;
校正后左像素平面的内参为: [ f c n e w 0 u l n e w 0 f c n e w v l n e w 0 0 1 ] (4) \begin{bmatrix} fc_{new} & 0 & u_{lnew} \\ 0 & fc_{new} & v_{lnew}\\ 0 & 0 & 1 \end{bmatrix} \tag{4} fcnew000fcnew0ulnewvlnew1 (4)
  其中,   [ u ; v ]   \ [u;v] \,  [u;v]为未校正左像素平面内一点;   [ x ; y ]   \ [x;y] \,  [x;y]为未校正左相机归一化坐标系内一点;   [ x 2 ; y 2 ]   \ [x2;y2] \,  [x2;y2]为经过畸变补偿过未校正左相机归一化坐标系内一点;   [ x 3 ; y 3 ; z 3 ]   \ [x3;y3;z3] \,  [x3;y3;z3]为极线校正后左相机坐标系内一点;   [ x 4 ; y 4 ]   \ [x4;y4] \,  [x4;y4]为极线校正后左相机归一化坐标系内一点;   r l 2   \ r_{l2} \,  rl2为左摄像机达到共面行对准时的旋转矩阵,   [ u n e w ; v n e w ]   \ [u_{new}; v_{new}] \,  [unew;vnew]为校正后左像素平面的中心点。

三 实现

  经过上述两步,已经得到校正像素平面上的所需参数,由此产生插值坐标,直接由未校正的像素坐标得到校正后的像素坐标;即可匹配,求得视差,得到被测物的三维信息;文章来源地址https://www.toymoban.com/news/detail-495361.html

ny = imageSize(1);
nx = imageSize(2);
[u_orignal, v_orignal] = meshgrid(1:nx, 1:ny);
temp = R_L';
 
u1 = (u_orignal - KK_left_new(1,3))/KK_left_new(1,1);
v1 = (v_orignal - KK_left_new(2,3))/KK_left_new(2,2);
       
L_x = (u1*temp(1,1) + v1*temp(1,2) + temp(1,3))./(u1*temp(3,1) + v1*temp(3,2) + temp(3,3));
L_y = (u1*temp(2,1) + v1*temp(2,2) + temp(2,3))./(u1*temp(3,1) + v1*temp(3,2) + temp(3,3));
 
[L_xc, L_yc] = distort(kc_left_new, L_x, L_y);
 
L_u_old = L_A_old(1, 1)*L_xc + L_A_old(1, 3);
L_v_old = L_A_old(2, 2)*L_yc + L_A_old(2, 3);

到了这里,关于双目立体标定与极线校正【双目立体视觉几何】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Python进行立体几何和立体校正的综合教程

    需要多个视图 在相机的针孔模型中,光线从物体上反射出来,照射到胶片上形成图像。因此,沿着同一条光线的所有点都将对应于图像中的一个点。 因此,给定图像中的一个点,不可能确定其在世界上的准确位置,也就是说,我们无法从单个图像中恢复深度。 我们也无法从

    2024年02月09日
    浏览(34)
  • 从双目标定到立体匹配:pyton实践指南

    立体匹配是计算机视觉中的一个重要领域,旨在将从不同角度拍摄的图像匹配起来,以创建类似人类视觉的3D效果。实现立体匹配的过程需要涉及许多步骤,包括双目标定、立体校正、视差计算等。在这篇文章中,将介绍如何使用Python实现立体匹配的基本步骤和技巧。 下面的

    2024年02月11日
    浏览(43)
  • 使用opencv做双目测距(相机标定+立体匹配+测距)

    最近在做双目测距,觉得有必要记录点东西,所以我的第一篇博客就这么诞生啦~ 双目测距属于立体视觉这一块,我觉得应该有很多人踩过这个坑了,但网上的资料依旧是云里雾里的,要么是理论讲一大堆,最后发现还不知道怎么做,要么就是直接代码一贴,让你懵逼。 所以

    2024年01月20日
    浏览(35)
  • 【双目视觉】双目立体匹配

    在opencv中用的比较多的双目立体匹配算法有两种:BM和SGBM。SGBM是BM立体匹配算法的优化版,属于半全局匹配,相对于BM花的时间要更多,但效果优于BM。本文使用的是SGBM半全局匹配方式。 步骤: 1.打开相机,获取到左目和右目的图像; 2.矫正畸变; 3.图像灰度化; 4.立体匹配

    2024年02月03日
    浏览(47)
  • 双目立体视觉之立体匹配算法

    双目立体视觉是指使用两个摄像机从不同的角度获取同一个场景的左右视图,然后使用双目立体匹配算法来寻找左右视图中的匹配像素点对,最后利用三角测量原理来还原三维空间物理点过程。其中双目立体匹配算法是最为核心的。 立体匹配是一种根据平面图像来恢复真实场

    2024年02月04日
    浏览(43)
  • 双目立体视觉:SAD算法

    SAD(Sum of absolute differences)是一种图像匹配算法。基本思想:差的绝对值之和。此算法常用于图像块匹配,将每个像素对应数值之差的绝对值求和,据此评估两个图像块的相似度。该算法快速、但并不精确,通常用于多级处理的初步筛选。 常见的立体匹配算法主要包括以下四步

    2024年02月06日
    浏览(51)
  • 双目立体视觉空间坐标精度分析

    参考链接:https://zhuanlan.zhihu.com/p/362718946 本文主要参考链接博主的理论推导,并按照自己的理解作分析和修正 双目立体视觉系统的精度由那些因素决定? X/Y/Z三个方向的精度都是一样的吗?如果不是一样,哪个方向精度更好呢? 最常见的情况下,双目立体视觉的最终输出是

    2024年02月10日
    浏览(35)
  • 计算机视觉之三维重建(5)---双目立体视觉

     如下图即是一个平行视图。特点:(1) 两个平面平行。 (2) 基线平行于图像平面,极点 e e e 和 e ′ e\\\' e ′ 位于无穷远处。  1. 对于基础矩阵我们有另一个表达式: F = e ′ × K ′ R K − 1 F=e\\\'×K\\\'RK^{−1} F = e ′ × K ′ R K − 1 ,推导过程如下所示。  2. 在平行视图情况下,极点

    2024年04月12日
    浏览(47)
  • 双目立体视觉(一) 基本原理和步骤

    目录 一、双目立体视觉系统的四个基本步骤 二、各步骤原理 1、相机标定 2、立体校正 3、立体匹配 相机标定 主要包含两部分内容: 单相机的内参标定和双目相机的外参标定,前者可以获得每个相机的焦距、光心、畸变系数等参数,后者可以获得双目相机之间的相机坐标系的

    2024年02月14日
    浏览(42)
  • 立体视觉几何 (二)

    立体匹配的基本概念 : 匹配目标 : 在立体匹配中,主要目标是确定左图像中像素的右图像中的对应像素。这个对应像素通常位于相同的行。 视差(Disparity) : 视差 d 是右图像中对应像素 xr 和左图像中像素 xl 之间的水平位置差。视差是深度信息的关键指标。 匹配方法 : 方法涉

    2024年01月23日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包