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.記錄每次激光線與黑色豎線的交點座標。

一條豎線計算來標定會引入很多誤差,也可以設計多條豎線,用極大似然估計來減少誤差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章