激光三角法


什么是激光三角法


單目+線結構光
注意:這個激光器發射出的是一個激光平面,也叫光刀面,激光平面照射到物體上就形成了一道線激光
一組3D激光傳感器由一束激光組成,它將激光平面(以淺灰色顯示的光片)投射到場景中的物體上。激光散射在場景中激光平面與物體相交的點上,形成特征線(深灰色)。照相機從不同的角度捕捉線條。相機內傳感器的方向由矩形表示。

坐標系間的轉換

世界坐標系、相機坐標系、圖像坐標系、像素坐標系

世界坐標系->相機坐標系

相機坐標系->圖像坐標系



步驟:相機標定->激光平面標定->三維重建

相機標定:詳見

相機標定的目的就是獲得相機內參矩陣和畸變參數等一系列參數,相機標定的方法有很多,這里我們一般使用的是張正友標定法詳見

激光平面標定

目的

獲得激光平面在相機坐標系下的平面方程Ax+By+Cz+D=0,從而可以獲得圖像線激光上像素點的深度。
注意:平面方程是在相機坐標系下定義的,所以一旦激光平面標定完成之后,激光器和相機的相對位置就必須固定不動了。

流程

相機標定->提取激光線->激光線上的點轉化到相機坐標系->擬合激光平面

提取激光線:


方法:極值法、閾值法、灰度質心法

這三個方法都可以用這一個圖來解釋,首先圖像中的激光線是由一定的寬度的,而且激光線的中心亮度最大,激光線從中心到兩側邊緣亮度逐漸減小。
1.極值法就是尋找圖像中每一行的最大值作為激光線的光條中心。
2.閾值法就是首先設定一個閾值T,然后從圖像的兩側向中間尋找灰度值為T的像素點A、B,最后取A、B的中心作為激光線的光條中心。
3.灰度質心法就是用到了重心公式,把圖像的灰度值當作質量,灰度值越大,也就是質量越大,找到圖像中每一行的重心當作激光線的光條中心。
這三個方法其實都非常容易受到噪聲的干擾,所以需要進一步的改進方法。

激光線上的點轉化到相機坐標系

接下來的這一步,將激光線上的像素點的像素坐標轉化到相機坐標系下是重點,因為我們最后需要激光平面的方程就是定義在相機坐標系下的,所以需要將剛才提取到的激光線像素坐標轉化到相機坐標系下。
首先需要明確的是,在相機標定過程中定義的世界坐標系是以標定板所在的平面為z=0(xoy平面)的平面,也就是說標定板平面在世界坐標系下的平面方程為z=0,接下來需要求的是標定板平面在相機坐標系下的方程。
通過相機標定,我們能得到世界坐標系到相機坐標系的R、T,這里的R和T是從世界坐標系到相機坐標系的,求逆后得到相機坐標系到世界坐標系下的R、T。
將公式展開之后把第三行提取出來,然后把z=0帶入就可以求出相機坐標系下標定板平面的方程了。得到這個方程之后,我們就可以求出打在標定板平面上的激光線上的點在相機坐標系下的3維坐標了。
\(\begin{eqnarray} \left( \begin{matrix} x_w\\y_w\\z_w \end{matrix} \right) &=&R^{-1}\left( \begin{matrix} x_c\\y_c\\z_c \end{matrix} \right)+(-T)\\ &=&\left( \begin{matrix} r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} & r_{33} \end{matrix} \right) \left( \begin{matrix} x_c\\y_c\\z_c \end{matrix} \right)+\left( \begin{matrix} t_x\\t_y\\t_z \end{matrix} \right)\\ &=&\left( \begin{matrix} r_{11}x_c+r_{12}y_c+r_{13}z_c+t_x\\ r_{21}x_c+r_{22}y_c+r_{23}z_c+t_y\\ r_{31}x_c+r_{32}y_c+r_{33}z_c+t_z \end{matrix} \right) \end{eqnarray}\)
因此\(r_{31}x_c+r_{32}y_c+r_{33}z_c+t_z = 0\),將\(z_w=0\)代入即為標定板在相機坐標系下的方程得到這個方程之后,我們就可以求出打在標定板平面上的激光線上的點在相機坐標系下的三維坐標了。

擬合激光平面


最后通過剛才求出的很多激光線上的點在相機坐標系下的三維坐標,通過最小二乘法擬合即可得到激光平面方程。

三維重建

以上相機標定和激光平面標定都是激光三角法的准備工作,接下來才正式進入三維重建的過程。
對掃描拍攝到的圖像進行三維重建,這個過程也分為三個步驟。
1.首先是提取激光線,也就是之前提到的三個方法:極值法、閾值法、灰度質心法
2.然后根據標定得到的激光平面方程,可以求得激光線上的點在相機坐標系下的三維坐標,每一幀圖像都可以得到一條激光線上的三維點坐標,但都是相機坐標系下的坐標,需要轉化到世界坐標系下,所以需要進行多幀拼接,也就是把所有相機坐標系下求得的三維點轉化到一個世界坐標系下,這里定義第一幀圖像的相機坐標系定義為世界坐標系,接下來每一幀圖像都需要變換到這個世界坐標系下,也就是求外參R、T,這里需要根據儀器的不同求出不同的R、T,以旋轉掃描為例,在儀器運轉過程中相機只會發生旋轉運動,所以只需要求旋轉矩陣R即可,根據相機坐標系的定義,z軸指向鏡頭的前方,y軸指向鏡頭的上方,所以旋轉掃描是圍繞y軸旋轉,對應的旋轉矩陣R就是這樣的。
3.最終將所有相機坐標系下的三維點都變換到世界坐標系下,得到的所有三維點坐標就是重建物體的三維模型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM