VSLAM实践(二):基于python+opencv的双目相机标定及深度图获取

VSLAM实践(二):基于python+opencv的双目相机标定及深度图获取

本篇文章主要分享两部分的代码,第一部分为双目相机的标定,第二部分是双目相机三维坐标的获取;

关于双目相机标定,不同于单目相机标定只求相机内参及畸变系数,双目标定主要多了左右相机相对位置关系的标定,本例中所用双目左右相机横向距离为40mm,此参数将作为相机标定效果的一个衡量指标;双目标定的基本思路为:先采用棋盘分别针对左右相机进行标定,然后再用双目标定函数对上述结果进行进一步修正,从而得到更加合理准确的内参,双目标定函数中注意设置flags=cv2.CALIB_USE_INTRINSIC_GUESS。最后需要强掉的一点是,在拍摄棋盘图片时,尽量保证棋盘平整,可从多方位多角度拍10-20张图片,图片数目过少也会影响标定精度。

另一部分,关于双目深度图获取思路为:首先根据左右相机的内参,畸变系数及相对位置关系(R,t)求得立体矫正参数,包括旋转矩阵R1,R2,投影矩阵P1,P2,以及像素到世界坐标系的映射矩阵Q(4*4),然后对输入图像根据上述参数进行立体校正去畸变后,求解左右图片的视差图,最后用映射矩阵与视差图中的时差信息求得三维坐标,此三维坐标的坐标系为左侧相机的相机坐标系;

深度图需要注意的几点有:1)StereoBM_create函数中的numDisparities及blockSize对于结果影响很大,本例中相片像素为320*240,numDisparities取0,blockSize=5,取0以后怎么操作的,其实我也不清楚…;2)注意disparity的数据类型是CV_16S,还是CV_32f

-- coding:utf-8 --

import cv2
import numpy as np
import glob

设置寻找亚像素角点的参数,采用的停止准则是最大循环次数30和最大误差容限0.001

criteria = (cv2.TERM_CRITERIA_MAX_ITER | cv2.TERM_CRITERIA_

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值