双目三维重建-1相机标定

目的

双目系统中存在两个相机,我们希望分别对两个相机进行标定,获取到每个相机的内参和畸变系数,那么我们就需要用相机拍摄一些标定板的图片。

为了同时标定另外一个相机,所以这些标定板的图像我们在另外一个相机也拍摄了

为了称呼简单一点,我们将相机1称呼为左相机

下面是右相机的图片

需要注意的是,两个相机的图片是同时拍的。

也就是说我拿着标定板 放在两个相机前面,然后两个相机同时拍摄了标定板的图片。

开始标定

打开祖传的pycharm设置好环境,然后开始敲代码

首先看我们用的棋盘格标定板,数一下它的角点,我们用的是11乘8的

准备三维点坐标数据

那么我们先把棋盘格标定板上的角点坐标给计算出来(三维点坐标哈,Z统一为0)

得到的三维点数据长这个样子

开始读图片

开始读图片了,我们把图片放在一个文件夹里面,然后用代码把图片读出来

用好glob,走遍天下都不怕

这样图片的路径都加载进来了,等下遍历这个对象获取到路径然后把图片读取进来就可以了

这里开始读图片进来,用的是imread函数

这个函数有个参数需要说一下,第一个参数是图片的路径,第二个参数可以设置灰度拉伸,或者读的彩色图转灰度图,或者保留其位深度啥的,这个参数需要注意

 转灰度图

把读进来的图片转单通道灰度图

这个函数的第二个参数可选的有很多,常用的就这个

在图片上检测棋盘格的角点

这个函数需要输入棋盘格的尺寸,输错了就找不到角点

那么执行这个算子之后,会给到我们一堆二维像素点,这个就是代表找到的角点的位置

定位到角点,亚像素精确化(可选)

有一个操作就是我们初步定位到角点之后,在找到的角点周围再次定位一个更精确的角点位置,就是这个操作

这个算子第一个参数是输入的图片

第二参数刚才初步找到的角点

第三个参数就是一个窗口宽高,用于在之前找到的角点多大范围内再次确定更加精确的角点

第四个参数其实也是一个窗口宽高,只是这个窗口是用于排除这个精确角点的范围的,也就是这个窗口里面的位置,不考虑精确角点的位置。

第五个参数是一个终止条件

意思是角点位置相邻两次迭代变化量小于0.001像素或者迭代次数到达30次就停止迭代。

将找到的角点数据收集起来

放在一个集合里面,后续相机标定的时候需要用

单相机标定

这样就得到了双目系统中每个相机的内参和畸变系数,这些数据保存下来,后面的双目标定流程还会用到。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄晓魚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值