原文链接: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"/>opencv基础:结构光立体成像原理及标定

如图 opencv基础:结构光立体成像原理及标定 是激光发射器, opencv基础:结构光立体成像原理及标定 是目标点, opencv基础:结构光立体成像原理及标定 是相机成像面。在该单点激光系统有几个不变的量, opencv基础:结构光立体成像原理及标定 为相机光心与激光发射器的距离称为基线长, opencv基础:结构光立体成像原理及标定 为激光线与基线的夹角, opencv基础:结构光立体成像原理及标定 为焦距长。

目标:获得 opencv基础:结构光立体成像原理及标定 点在相机坐标系下三维坐标值。

那么关键是获得opencv基础:结构光立体成像原理及标定 值也就是 opencv基础:结构光立体成像原理及标定 点的 opencv基础:结构光立体成像原理及标定 值, opencv基础:结构光立体成像原理及标定opencv基础:结构光立体成像原理及标定 坐标值可以通过相机的透视投影求得。

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

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

基线长 opencv基础:结构光立体成像原理及标定opencv基础:结构光立体成像原理及标定 角认为是已知量,下面标定讲到如何标定得到。

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

opencv基础:结构光立体成像原理及标定 可以由像素、光心坐标与像元大小得到。

最后计算得:

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

  • 线结构光原理

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

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

<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"/>opencv基础:结构光立体成像原理及标定

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

<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"/>opencv基础:结构光立体成像原理及标定

激光 opencv基础:结构光立体成像原理及标定 射出一个面激光照射在物体上形成一条激光线。现假设地面与相机感光面平行, opencv基础:结构光立体成像原理及标定 点与 opencv基础:结构光立体成像原理及标定 点是激光线上的位置不同的两点,其中 opencv基础:结构光立体成像原理及标定 点在相机上的成像在图像的 opencv基础:结构光立体成像原理及标定 轴的中心点上(不准确)。面 opencv基础:结构光立体成像原理及标定 与地面垂直,那么 opencv基础:结构光立体成像原理及标定 是地面到光心 opencv基础:结构光立体成像原理及标定 的高,同时也是点 opencv基础:结构光立体成像原理及标定 的高,也就是 opencv基础:结构光立体成像原理及标定 方向的值。

  • 线结构光测高

opencv基础:结构光立体成像原理及标定可以通过上面单点激光方法求得opencv基础:结构光立体成像原理及标定值,这是线结构光法求高。

  • 线结构光测距

这里有一个容易混淆的地方,高与距离,点 opencv基础:结构光立体成像原理及标定 的高是 opencv基础:结构光立体成像原理及标定 值,而点 opencv基础:结构光立体成像原理及标定 到相机的距离是 opencv基础:结构光立体成像原理及标定

此时基线与激光面的夹角 opencv基础:结构光立体成像原理及标定 (oap)变为 opencv基础:结构光立体成像原理及标定 (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"/>opencv基础:结构光立体成像原理及标定

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

利用单点激光测距公式 opencv基础:结构光立体成像原理及标定opencv基础:结构光立体成像原理及标定 可通过图像上激光点的y值确定。

  • 线结构光标定

线结构光标定的目的是为了获得几个不变的量,焦距 opencv基础:结构光立体成像原理及标定 、基线长 opencv基础:结构光立体成像原理及标定 、角度 opencv基础:结构光立体成像原理及标定

如图单点激光测距。

<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"/>opencv基础:结构光立体成像原理及标定

公式 opencv基础:结构光立体成像原理及标定 表示这几个量之间的关系,此时焦距 opencv基础:结构光立体成像原理及标定 、基线长 opencv基础:结构光立体成像原理及标定 、角度 opencv基础:结构光立体成像原理及标定变成了未知数。为求解这几个未知数,假设有Object1、Object2、Object3这些点,这些点的高度差都为L,L为已知量,那么每一个点都可以由上面的公式得到:

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

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

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

那么有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"/>opencv基础:结构光立体成像原理及标定

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

标定方法如下:

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

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

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

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

相关文章:

  • 2021-10-20
  • 2021-09-22
  • 2021-07-30
  • 2021-06-25
  • 2021-08-13
  • 2021-12-17
  • 2022-12-23
  • 2021-07-28
猜你喜欢
  • 2021-12-05
  • 2022-12-23
  • 2021-04-24
  • 2021-08-19
相关资源
相似解决方案