首页 > 编程知识 正文

opencv双目视觉,双目立体视觉算法

时间:2023-05-04 02:07:50 阅读:243000 作者:3573

一、重投影残差 1.1基本概念

重投影残差,按照字面意思解释就是在第二次重新投影的二维像素点与第一次投影得到的像素点之间的残差(欧式距离)大小,残差的大小反映的就是测量仪器的精度以及外界因素对测量结果的干扰,即测量误差的大小。

如下图所示:

假设P是世界坐标系中的一个三维点(真实物点),第一次投影指的就是双目相机C1、C2拍摄时,P点投影到二维像平面上所捕获到的图像点,即图中的P1和P2点;然后利用双目视觉原理,针对P1、P2这对匹配点以及标定求出的内外、畸变参数等等,可以求出一个三维点(理论值);然后利用求出来的三维点与相机的位姿关系进行第二次投影得到P’2点;一般用重投影点P’2与获取的二维像点P2的欧式距离e值的大小反映的就是重投影误差的大小。

二、关键坐标系之间的转换 2.1 像素坐标系与图像坐标系


(u , v)表示的是像素坐标,单位Pixel;
(x , y)表示的是图像坐标,单位mm;
(u0 , v0)表示的是光心位置,有时候表示为(Cx,Cy);
dx , dy分别表示的是每个像素在横纵坐标的实际物理尺寸,单位mm;

2.2 图像坐标系与相机坐标系



以上公式最后的f,根据标定数据,在x和y方向分别以fx和fy代入,注意这里的fx和fy表示的是实际物理长度,单位mm,转换过程(三维坐标->像素坐标)如下图所示,不过有的情况标定得到得是实际长度(mm),则最后得fx和fy还需要除去dx、dy:

2.3 统一坐标重投影计算

如果世界坐标系与相机坐标系不统一的话,在进行透视投影之前需要把世界坐标系下的三维点云通过外方位参数[R|T]统一到相机坐标系下,在转换为像平面像素坐标,具体公式如下:


拆分:

R、t:世界坐标系相对于相机坐标系的外方位参数;
(X,Y,Z):世界坐标系下的坐标;
(x,y,z):转换的相机坐标系下的坐标;
(u,v):像素坐标。

2.4 残差计算

(u1,v1)记为获取的二维图像的匹配点,通过畸变矫正(undistortPoints())之后的结果,还要进行立体矫正(stereoRectify())
结果记为(x,y)(图像坐标),设(u,v)为矫正之后的像素坐标:
u = x/dx + Cx
v = y/dy + Cy
最后将得到的(u,v)和上式中的(u’,v’)做欧式计算,结果为残差值的大小

code: https://download.csdn.net/download/qq_39707351/11201279 Results:


按顺序依次为,三维点坐标,重投影像素坐标,匹配点像素坐标,残差大小(pixel)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。