系統(tǒng)全面的相機標定課程:單目/魚眼/雙目/陣列 相機標定:原理與實戰(zhàn)
摘要
這是今年的一篇針對高分辨率的固態(tài)激光雷達(非重復(fù)性掃描型)或者多線的激光雷達和相機在無標定板的環(huán)境中自動化外參標定的一篇文章。本文的方法不需要基于巧克力板削咆,只依賴兩個傳感器采集的環(huán)境中的線特征就可以得到像素級精度的標定結(jié)果加酵。在理論層面隙券,作者分析了邊緣特征提供的約束和邊緣特征在場景中的分布對標定精度的影響。同時夭禽,作者分析了激光雷達的測量原理渡讼,并提出了一種基于點云體素分割和平面擬合的高精度的激光雷達點云邊緣特征提取的方法。由于邊緣特征在自然場景中很豐富咪奖,所以作者在室內(nèi)和室外多個數(shù)據(jù)集上進行了實驗并取得了不錯的效果。
代碼已經(jīng)開源:https://github.com/hku-mars/livox_camera_calib
介紹
雷達和相機是自動駕駛車輛中常用的傳感器酱床。雷達可以直接測量環(huán)境的三維信息羊赵,所以經(jīng)常被用在障礙物檢測、跟蹤和建圖扇谣。相機可以提供豐富的顏色信息昧捷,而且能和雷達的數(shù)據(jù)互補。隨著雷達的分辨率快速增長罐寨,對于精準的外參的需求也增加了靡挥。基于激光和視覺可以進行構(gòu)建稠密的點云圖鸯绿,點云著色和精準的3D測量跋破。
當前的標定方法還是主要基于標定板或者特殊的圖像標志,通過檢測瓶蝴、提取和匹配在圖像和點云中的特征然后基于最小二乘的方法計算毒返。傳統(tǒng)的激光雷達如velodybe這種采用重復(fù)掃描和機械結(jié)構(gòu)造成點云稀疏且噪聲很大,這樣可能導(dǎo)致代價函數(shù)產(chǎn)生不穩(wěn)定的結(jié)果舷手。固態(tài)激光雷達例如livox可以很好的利用非重復(fù)性掃描的特性產(chǎn)生稠密的點云饿悬。但由于標定的target常常放在離標定的傳感器不遠的地方,這就造成了在場景深度比較大的場景中聚霜,外參的標定結(jié)果可能會很差狡恬。例如在大場景中的點云著色。此外蝎宇,基于特定標定目標的方法也是相對來說比較麻煩的弟劲,我們其實還是喜歡基于自然場景中的信息進行標定。
為了解決上述的問題姥芥,本文提出了一個不基于target的像素級的自動化標定的方法兔乞。系統(tǒng)通過檢測圖像和點云中的線特征,最小化重投影誤差得到得到準確的外參凉唐。系統(tǒng)可以應(yīng)用在室內(nèi)或者室外的場景中庸追,并且這種不對場景提出需求的方法可以允許我們在數(shù)據(jù)采集的任何時刻進行標定。具體來說台囱,本文的貢獻主要有:
作者自信的研究了lidar的測量原理淡溯,研究結(jié)果表明常用的基于深度不連續(xù)的邊緣特征提取的方法不準確也不可靠。作者提出了新穎可靠的深度連續(xù)邊緣的特征提取算法簿训。
作者在室內(nèi)和室外對本文的方法進行了評測咱娶,結(jié)果標定的結(jié)果都很準確米间,并在自然場景中實現(xiàn)了像素級的標定結(jié)果。除此之外膘侮,本文的方法同時適用與固態(tài)和傳統(tǒng)的機械雷達屈糊。
作者開源了標定的代碼。
相關(guān)工作
外參標定的方法主要分為兩種琼了,基于目標和自然場景標定的方法逻锐。他們之間最大的區(qū)別是如何在傳感器數(shù)據(jù)中定義和檢測特征。一些幾何的物體和棋盤格是最常用的標定目標雕薪,因為他們對平面的法向量進行了明確的約束谦去,而且使問題公式化起來很簡單。但是由于需要額外的準備造成這種方法不實用蹦哼,尤其是在需要動態(tài)變換的環(huán)境中鳄哭。基于標定目標的方法主要有:
Unified intrinsic and extrinsic camera and lidar calibration under uncertainties(2020, ICRA)
Analytic plane covariances construction for precise planarity-based extrinsic calibration of camera and lidar(2020, ICRA)
Automatic extrinsic calibration of a camera and a 3d lidar using line and plane correspondences(2018, ?IROS)
Targetless的方法不用檢測已知形狀的特殊的標定物體纲熏,而是直接利用存在于自然場景中的線特征或者面特征進行標定妆丘。在Camvox: A low-cost and accurate lidar-assisted visual slam system中作者第一次把激光點投影到圖像平面上(colormap),然后基于深度和反射強度給點上色局劲。然后從上色的圖中提取2D的線特征并和在圖像中提取的線特征進行匹配勺拣。相似的,Automatic targetless extrinsic calibration of a 3d lidar and camera by maximizing mutual information中作者通過最大化圖像和colormap的互信息來得到準確的外參鱼填。
也有一些作者直接在點云中基于深度的不連續(xù)性檢測3D邊緣特征药有,然后把3D的邊緣特征投影到2D的圖像平面上來計算殘差。由于基于連續(xù)性檢測的方法不能保證激光點云嚴格的落在邊緣上苹丸,所以邊緣檢測的精度比較差愤惰。也有一些基于運動的方法,例如:Extrinsic calibration of multiple lidars of small fov in targetless environments和Online targetless end-to-end camera-lidar self-calibration都是基于運動的方式來計算外參赘理,然后再基于環(huán)境信息優(yōu)化這個外參宦言,但是這種基于運動的方法需要比較強的激勵。
本文的方法是Targetless的方法商模,本文直接利用了點云中檢測的3D的線特征奠旺,這樣就沒有遮擋的問題了;同時本文提出了一個更準確和可靠的邊緣特征提取的方法施流;本文只基于單個的一對雷達的掃描就可以得到不錯的結(jié)果响疚。
方法
A. 概述
下圖定義了對應(yīng)的坐標系:雷達系L,相機系C和2D的圖像平面瞪醋。同時認為激光是視覺之間的外參是一個未知量忿晕。由于環(huán)境中存在大量的邊緣特征,本文的方法基于邊緣特征對齊雷達和圖像趟章。
上圖也表明了單個邊的約束杏糙。可以看出來蚓土,雷達相對于相機的一些自由度的位姿是不能得到的:
沿著邊緣的平移量宏侍;
垂直于邊緣的平移量
繞邊緣點和焦點構(gòu)成的平面的法向量的旋轉(zhuǎn)
繞邊緣方向的旋轉(zhuǎn)
實際上,一個邊緣特征可以構(gòu)建兩個關(guān)于外參的有效的約束蜀漆。為了獲得足夠的外參的約束谅河,作者檢測了不同位置的不同朝向的邊緣特征。
B.邊緣特征檢測和匹配
1)邊緣檢測:一些存在的工作把點云投影到圖像平面确丢,然后從投影的點云中檢測特征绷耍,例如邊緣特征和互信息關(guān)聯(lián)。利用投影后的點檢測特征的一個問題是由于遮擋引起的多值和零值的問題鲜侥,如下圖a所示褂始。如果相機在激光雷達的上方,A部分就會因為遮擋導(dǎo)致相機看得到但是激光看不到描函,結(jié)果導(dǎo)致沒有點投影到這部分崎苗,深度值全部都是0;另外B部分激光雷達看得到但是相機看不到舀寓,這就導(dǎo)致這部分點干擾前景點的投影胆数。這就導(dǎo)致前景點和背景點都投影到了圖像的相同區(qū)域,一個地方有多個深度值互墓。這種現(xiàn)象對于低分辨率的LIDAR可能不明顯必尼,但是在高分辨率的雷達中很明顯。這種問題會導(dǎo)致在投影的點云中提取錯誤的特征篡撵,或者造成和圖像中特征匹配錯誤的匹配判莉。
為了避免投影造成的零值或者多值問題,作者之間在點云上檢測邊緣特征育谬。這里主要有兩種邊:深度連續(xù)的和深度不連續(xù)的骂租,如上圖4所示。深度不連續(xù)的邊指的前景后背景物體深度有跳變的地方斑司;而深度連續(xù)的邊指平面上深度連續(xù)的連接線渗饮。很多存在的方法都是基于深度是否連續(xù)來提取線特征,因為可以很容易基于點的深度來檢測宿刮。但是在研究了lidar的測量原理后互站,作者認為這種方法在高精度的標定中是不可靠,不準確的僵缺。像下圖胡桃,實際的激光脈沖不是理想的點,而是具有一定發(fā)散角的光束磕潮。當從前景物體掃描到背景物體時翠胰,一部分激光脈沖被前景物體反射容贝,而其余的則被背景反射,產(chǎn)生兩個反射脈沖到激光接收器之景。在前景物體反射率高的情況下斤富,第一個脈沖的信號將占主導(dǎo)地位,使光束中心線偏離前景物體,這也會導(dǎo)致前景物體的錯點超出實際邊緣。當從前景物體掃描到背景物體時消返,一部分激光脈沖被前景物體反射侨把,而其余的則被背景反射,產(chǎn)生兩個反射脈沖到激光接收器。在前景物體反射率高的情況下,第一個脈沖引起的信號將占主導(dǎo)地位,即使光束中心線偏離前景物體潦嘶,這也會導(dǎo)致前景物體的假點超出實際邊緣。這兩種現(xiàn)象都會錯誤地使前景物體膨脹崇众,并在邊緣提取和校準中造成重大錯誤衬以。
為了避免前景點膨脹或者錯點導(dǎo)致的深度不連續(xù)的邊緣,本文提取深度連續(xù)的邊校摩。像上圖6顯示的過程:
首先把點云劃分為大小一定的體素(室內(nèi)0.5m看峻,室外1m);
對于每個體素衙吩,反復(fù)使用 RANSAC 來擬合和提取體素中的平面互妓;
然后,保存在一定角度范圍內(nèi)的平面對(例如坤塞,[30°, 150°])并求解平面相交線(即深度連續(xù)邊)冯勉。
如圖 6 所示,本文的方法能夠在一個體素內(nèi)提取多條相互垂直或平行的相交線摹芙。此外灼狰,通過選擇合適的體素的尺寸,我們可以檢測出來曲線邊緣浮禾。
下圖顯示了在外參正確的情況下提取場景中深度連續(xù)和不連續(xù)的邊交胚。不連續(xù)的邊的提取是基于Bundle adjustment for lidar mapping中介紹的曲率的概念做的∮纾可以看出來蝴簇,深度連續(xù)邊的噪聲更小,更準確匆帚。對于圖像中的線特征熬词,可以直接基于Canny算法。把檢測出來的線特征保存成2Dtree的格式用于快速的索引匹配。
2)匹配:檢測出來的激光的邊緣特征需要和視覺的邊緣特征匹配互拾。對于每一個雷達邊緣歪今,采樣邊緣上的點,每一個采樣點通過當前估計出來的(可能不是最準的)外參投影到相機平面:
其中:
利用剛體變換可以得到激光點在相機坐標系下的位置颜矿,然后利用針孔模型把相機坐標系下的點投影到圖像平面上寄猩,得到激光點在圖像上的位置:
最后根據(jù)相機的內(nèi)參標定參數(shù),得到相機的畸變系數(shù)或衡,去畸變后激光點在圖像中的位置為:
然后利用圖像中的邊緣像素構(gòu)成的kd-tree搜出來k個最近的點焦影,可以得到一個集合Q车遂,然后計算:
可以得到均值和方差封断,然后利用邊緣上的一點q和由協(xié)方差矩陣的最小特征值對應(yīng)的特征向量得到邊緣特征方向n得到邊緣特征的表達式。同時舶担,作者也把邊緣特征的方向投影到了圖像平面并驗證其和計算得到的n的正交性(一個線段方向坡疼,一個法向量)。這也可以快速的去除那些距離很近但是又不平行的錯誤匹配衣陶。下圖顯示了提取的 LiDAR 邊緣特征(紅線)柄瑰、圖像邊緣特征(藍線)和匹配(綠線)。
C. 外參標定
1)測量噪聲:提取得到的雷達邊緣點和對應(yīng)的圖像邊緣特征(q,n)受到測量噪聲的影響剪况,設(shè)滿足零均值高斯分布的w是圖像中邊緣特征的噪聲教沾,方差為1.5(由于像素的離散性)。同樣的译断,激光點云的邊緣特征也有測量噪聲授翻。在實際的測量中,激光雷達通過掃描電機中編碼器的方向和激光點的飛行時間來測量深度信息孙咪。設(shè)ωi表示測量得到的電機軸向方向堪唐,而δωi ~ N (0_2*1 , Σωi )表示ωi在切平面上的測量噪聲(如上圖所示),然后利用“田”運算通過測量得到真實的測量角:
其中N(ωi)=[N1翎蹈,N2]是 ωi 處切平面的正交基淮菠,x表示叉乘對象的協(xié)方差矩陣。田s2操作表示的是在切平面ωi的δωi范圍內(nèi)的單位向量荤堪。同樣的合陵,di是深度測量的結(jié)果,他也受一個零均值的高斯噪聲δdi的影響澄阳,真值可以表示為:
把這個結(jié)果和上邊由于電機編碼器噪聲引入的誤差結(jié)合起來可以得到:
因此:
該噪聲模型將用于產(chǎn)生一致的外部校準曙寡。
2)標定公式化和優(yōu)化:LPi是激光點云中檢測到的邊緣上的一個點,ni是和激光邊緣對應(yīng)的圖像邊緣的法向量寇荧,qi是激光邊緣對應(yīng)的圖像邊緣上的一點(均值)举庶。把激光點的噪聲加上,如果利用真值的外參把點投影到圖像平面上應(yīng)該在圖像的對應(yīng)線特征上揩抡,所以:
其中w是圖像和激光點的噪聲户侥,都服從零均值的高斯分布镀琉。這個公式可以看圖9,第一部分是激光點投影到圖像平面蕊唐,第二部分是圖像上邊緣特征的一點屋摔,相減后投影到ni方向上就是ri。
公式9表明了一個激光線特征上的點可以提供一個約束替梨,這和我們上邊介紹的是一樣的钓试,一個線特征上有兩個獨立的點,可以提供兩個約束副瀑。此外弓熏,公式9就是一個關(guān)于外參的殘差方程,其中包含測量量糠睡,激光點挽鞠,視覺線特征和一些未知的噪聲量。這個非線性的方程可以迭代的求解狈孔。
這里其實就是外參給的擾動信认,我們不斷的尋找讓殘差下降的方向迭代求解。把公式9和10可以得到殘差的方程:
這里的公式推導(dǎo)也比較簡單均抽,對于T直接左乘一個擾動就可以得到JT嫁赏,對于w就按正常的求導(dǎo)過程就可以。
其中ri是圖9b中介紹的那樣油挥。公式11給出了一個邊緣特征提供的約束潦蝇,把N個邊緣整合到一起可以得到:
公式13可以寫成:
公式說明,這里是高斯分布的線性變換喘漏,可以參考狀態(tài)估計中相關(guān)的知識护蝶。
根據(jù)公式14,就可以構(gòu)建關(guān)于外參的極大似然估計了(包括最小的方差):
這個優(yōu)化問題的解是:
這里就是一個把公式15展開求解優(yōu)化量的過程翩迈。
其中外參可以由下式更新:
利用公式16和更新的公式持灰,我們就可以迭代的求解真實的外參了。迭代的終止條件是變化量小于某個閾值负饲。
3)標定的不確定度:除了估計外參堤魁,我們也可以得到外參的不確定度。這樣可以知道當前的標定結(jié)果和真值之間的誤差返十。為了得到不確定度妥泉,我們需要把公式13都乘上一個量,然后求解得到的對應(yīng)的變化量:
這就表明 δT洞坑,外參真值和估計結(jié)果的誤差盲链,并在切空間中參數(shù)化后,滿足以 δT*為均值的高斯分布,當收斂時刽沾, δT接近0本慕,協(xié)方差為:
D. 邊的分布對標定結(jié)果的影響
公式12中JT表示的是外參的變化對殘差的影響。當有很少或者邊的分布很不好(同一個方向侧漓,在一個小的區(qū)域內(nèi))锅尘,JT就會很小導(dǎo)致不確定度增大(公式19中JT在分母上)。從這個角度來說布蔗,利用協(xié)方差矩陣可以直接得到環(huán)境的質(zhì)量好壞藤违。不考慮相機畸變,利用針孔的投影模型可以得到:
其中XYZ是雷達的邊緣點在相機系下的表示纵揍。從結(jié)果表示靠近圖像中心的點的導(dǎo)數(shù)是比較小的顿乒。因此邊緣特征在圖像中均勻分布是比較好的。另外由于激光的測量噪聲隨著深度的增加而增加骡男,所以場景的深度最好適中淆游。
E. 標定初始化和粗對齊
本文提出的基于優(yōu)化的方法在有一個比較好的初值的時候可以得到很準的標定的結(jié)果傍睹。為了保證算法收斂到最優(yōu)值隔盛,作者把通過最大化以下定義的邊緣匹配百分比 (P.C.) 來粗略校準外參的初始化步驟集成到了算法的pipeline中:
其中分子是匹配到的雷達邊,分母是雷達邊的總個數(shù)拾稳。匹配基于投影到圖像平面后的LiDAR 邊緣點與其最近邊緣的距離和方向(參見第 III-B.2 節(jié))吮炕。粗配準是通過在給定范圍內(nèi)旋轉(zhuǎn)(網(wǎng)格大小 0.5 度)和平移(網(wǎng)格大小 2cm)的替代網(wǎng)格搜索來執(zhí)行的。
實驗和結(jié)果
作者在室內(nèi)和室外各個場景中都進行了實驗访得,根據(jù)圖片看標定后數(shù)據(jù)對齊的效果都很好龙亲,標定的速度也很快。
我也在實際的環(huán)境中做了實驗悍抑,感覺精度還是很準的鳄炉,其中在安裝的時候我們是有一個大概的外參初值的,這個對優(yōu)化問題的求解很重要搜骡,所以我們最好手動給:
下一步就是標固態(tài)和機械雷達了拂盯。
參考文獻:
[1] Yuan C , ?Liu X , ?Hong X , et al. Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environments[J]. ?2021.