opencv基础:结构光立体成像原理及标定

原文链接:https://zhuanlan.zhihu.com/p/78512354(建议参考原文链接)
https://mp.weixin.qq.com/s?__biz=MzU1MjY4MTA1MQ==&mid=2247485340&idx=1&sn=1b656f13931f2fd6694bab4e0b1c48d2&chksm=fbff2ca8cc88a5be551733cd9efe39d5cbc2c37cf73589aab147d299e57a425219320761ca71&scene=21#wechat_redirect(三维重建原理)

线结构光法是一种可以精确获得物体三维坐标的方法,将线结构光传感器安装在机器人上就赋予了机器人视觉感知的能力。本文将从单点激光测距原理、线结构光原理与线结构光标定这三部分对线结构光进行介绍。

  • 单点激光测距原理

单点激光测距原理是线结构光的基本原理,通过该方法得到物体距离相机的距离进而得到物体的三维坐标。单点激光测距原理图如下图所示。

<img src="https://pic2.zhimg.com/v2-4220dc7a9adb8eeb9b19abb66bd2a849_b.jpg" data-caption="" data-size="normal" data-rawwidth="866" data-rawheight="522" class="origin_image zh-lightbox-thumb" width="866" data-original="https://pic2.zhimg.com/v2-4220dc7a9adb8eeb9b19abb66bd2a849_r.jpg"/>

如图 [公式] 是激光发射器, [公式] 是目标点, [公式] 是相机成像面。在该单点激光系统有几个不变的量, [公式] 为相机光心与激光发射器的距离称为基线长, [公式] 为激光线与基线的夹角, [公式] 为焦距长。

目标:获得 [公式] 点在相机坐标系下三维坐标值。

那么关键是获得[公式] 值也就是 [公式] 点的 [公式] 值, [公式][公式] 坐标值可以通过相机的透视投影求得。

[公式] 值如何求解。做两条辅助线 [公式] 过相机光心与 [公式] 平行交相机成像面 [公式][公式] 过目标点与基线 [公式] 平行。这样构造成两个相似三角形,根据相似三角形有如下公式:

[公式] [公式]
[公式] [公式]

基线长 [公式][公式] 角认为是已知量,下面标定讲到如何标定得到。

[公式] [公式]
[公式] [公式]

[公式] 可以由像素、光心坐标与像元大小得到。

最后计算得:

[公式]

  • 线结构光原理

以上讨论的单点激光,下面讨论线结构光。

线结构光分为两种形式如下图所示,其区别在于激光与相机的位置摆放不同(位置不同只与标定有关)。

<img src="https://pic2.zhimg.com/v2-a9fe737b997ad0ba7b199eba6d390d2d_b.jpg" data-caption="" data-size="normal" data-rawwidth="504" data-rawheight="409" class="origin_image zh-lightbox-thumb" width="504" data-original="https://pic2.zhimg.com/v2-a9fe737b997ad0ba7b199eba6d390d2d_r.jpg"/>

本文只讨论第一种方式。第一种方式的模型如图所示。

<img src="https://pic4.zhimg.com/v2-28753694ebdc2a2b3910deef08c1b54f_b.jpg" data-caption="" data-size="normal" data-rawwidth="826" data-rawheight="513" class="origin_image zh-lightbox-thumb" width="826" data-original="https://pic4.zhimg.com/v2-28753694ebdc2a2b3910deef08c1b54f_r.jpg"/>

激光 [公式] 射出一个面激光照射在物体上形成一条激光线。现假设地面与相机感光面平行, [公式] 点与 [公式] 点是激光线上的位置不同的两点,其中 [公式] 点在相机上的成像在图像的 [公式] 轴的中心点上(不准确)。面 [公式] 与地面垂直,那么 [公式] 是地面到光心 [公式] 的高,同时也是点 [公式] 的高,也就是 [公式] 方向的值。

  • 线结构光测高

[公式]可以通过上面单点激光方法求得[公式]值,这是线结构光法求高。

  • 线结构光测距

这里有一个容易混淆的地方,高与距离,点 [公式] 的高是 [公式] 值,而点 [公式] 到相机的距离是 [公式]

此时基线与激光面的夹角 [公式] (oap)变为 [公式] (oap')。

现举例如何求激光线上任意点的高。如图是激光线。

<img src="https://pic3.zhimg.com/v2-8838dadd86b1b3ff9ef0c741f0ab42d6_b.jpg" data-caption="" data-size="normal" data-rawwidth="1125" data-rawheight="506" class="origin_image zh-lightbox-thumb" width="1125" data-original="https://pic3.zhimg.com/v2-8838dadd86b1b3ff9ef0c741f0ab42d6_r.jpg"/>

黑色线是激光线由于照射在不规则的物体上形成的图像。红色线是相机x轴方向的中心点(是光心在成像平面上投影的x值,不一定是图像像素中心)。激光线上任意一点的高(z值)是其所在相同高度平面激光中心点的高。那就将问题转化为单点激光测距问题。

利用单点激光测距公式 [公式][公式] 可通过图像上激光点的y值确定。

  • 线结构光标定

线结构光标定的目的是为了获得几个不变的量,焦距 [公式] 、基线长 [公式] 、角度 [公式]

如图单点激光测距。

<img src="https://pic2.zhimg.com/v2-dd3875723bd1fd156ceba68dde6f1411_b.jpg" data-caption="" data-size="normal" data-rawwidth="1710" data-rawheight="940" class="origin_image zh-lightbox-thumb" width="1710" data-original="https://pic2.zhimg.com/v2-dd3875723bd1fd156ceba68dde6f1411_r.jpg"/>

公式 [公式] 表示这几个量之间的关系,此时焦距 [公式] 、基线长 [公式] 、角度 [公式]变成了未知数。为求解这几个未知数,假设有Object1、Object2、Object3这些点,这些点的高度差都为L,L为已知量,那么每一个点都可以由上面的公式得到:

[公式]

[公式]

[公式]
[公式]

那么有4个未知量,至少有4个方程来求解。如图是标定板。

<img src="https://pic2.zhimg.com/v2-ce628a1ba7861e6b8f57f97d7a07046d_b.jpg" data-caption="" data-size="normal" data-rawwidth="1710" data-rawheight="940" class="origin_image zh-lightbox-thumb" width="1710" data-original="https://pic2.zhimg.com/v2-ce628a1ba7861e6b8f57f97d7a07046d_r.jpg"/>

黑色竖线是画在标定板上,红色横线表示相机在不同高度的位置。

标定方法如下:

1.调整相机与标定板平行,相机中轴线与黑色竖线平行;

2.调整相机高度上升或下降使激光线沿黑色竖线上升或下降,每次调整相机都拍照;

3.记录每次激光线与黑色竖线的交点坐标。

一条竖线计算来标定会引入很多误差,也可以设计多条竖线,用极大似然估计来减少误差。

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值