本發(fā)明涉及相機(jī)標(biāo)定,具體為一種基于球體的多目相機(jī)外參標(biāo)定方法。
背景技術(shù):
1、相機(jī)外參描述了一組相機(jī)在世界坐標(biāo)系的位置及旋轉(zhuǎn)關(guān)系。在視覺測(cè)量及視覺三維重建領(lǐng)域,相機(jī)外參的標(biāo)定精度直接影響了測(cè)量及重建結(jié)果的精確性,以往的相機(jī)外參標(biāo)定方法預(yù)設(shè)一組固定的三維點(diǎn),根據(jù)三維點(diǎn)到二維點(diǎn)的重投影誤差優(yōu)化相機(jī)外參;
2、這樣的方法雖然速度快,但是無法確保設(shè)備空間范圍內(nèi)所有三維點(diǎn)的重投影誤差均最小,所以在全局范圍內(nèi)計(jì)算精度低,由于引入系統(tǒng)誤差,還可能導(dǎo)致結(jié)果不收斂,且尺寸與真實(shí)世界大小不符。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供一種基于球體的多目相機(jī)外參標(biāo)定方法,可以有效解決上述背景技術(shù)中提出無法確保設(shè)備空間范圍內(nèi)所有三維點(diǎn)的重投影誤差均最小,所以在全局范圍內(nèi)計(jì)算精度低,由于引入系統(tǒng)誤差,還可能導(dǎo)致結(jié)果不收斂,且尺寸與真實(shí)世界大小不符的問題。
2、為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:一種基于球體的多目相機(jī)外參標(biāo)定方法,包括以下步驟:
3、步驟s1,將已知半徑的球體置于多目相機(jī)環(huán)繞式設(shè)備內(nèi)部,讓球體做空間上的位移并拍攝記錄下每次的球體標(biāo)定圖片;
4、步驟s2,基于已知的相機(jī)內(nèi)參對(duì)球體標(biāo)定圖片原圖進(jìn)行畸變矯正,得到畸變矯正圖序列;
5、步驟s3,由于圖像存在畸變,去畸變后球在圖像中表現(xiàn)為橢圓,因此,對(duì)畸變矯正圖序列做橢圓檢測(cè),篩選未拍到標(biāo)定球的圖片序列,即保證在每一次拍攝下,球體像素均完整存在于多目相機(jī)環(huán)繞式設(shè)備的每個(gè)相機(jī)像平面內(nèi),同時(shí)從圖像檢測(cè)出對(duì)應(yīng)球的圓心坐標(biāo)和長(zhǎng)短軸的大?。?/p>
6、步驟s4,已知相機(jī)內(nèi)參,和圖像中圓心坐標(biāo)和長(zhǎng)短軸大小,以此為約束條件,把n×3的隨機(jī)矩陣當(dāng)做球三維點(diǎn)初始值,將m×6×1的隨機(jī)矩陣作為相機(jī)位姿的初始值,送入光束法平差優(yōu)化系統(tǒng),優(yōu)化得到符合真實(shí)大小的相機(jī)外參和三維點(diǎn)。
7、根據(jù)上述技術(shù)方案,步驟s1為數(shù)據(jù)準(zhǔn)備部分,理想情況下,多次拍攝的球體像素序列應(yīng)在每個(gè)相機(jī)的像平面上均勻分布;
8、步驟s2為圖片序列矯正部分,球體標(biāo)定圖片原圖為球體每次位移,多目相機(jī)環(huán)繞式設(shè)備所記錄的原始圖片序列;
9、步驟s3對(duì)畸變矯正圖序列做橢圓檢測(cè),使用球體顏色作為約束,削減計(jì)算量使其能精準(zhǔn)的檢測(cè)到橢圓,如果在某次球體移動(dòng)圖像序列中存在未檢測(cè)到、檢測(cè)不完整的圖像,則篩除本次球體標(biāo)定圖像序列,即保證在每一次拍攝下,球體像素均完整存在于多目相機(jī)環(huán)繞式設(shè)備的每個(gè)相機(jī)像平面內(nèi);
10、步驟s4通過光束法平差優(yōu)化系統(tǒng)得到外參,具體地,在三維場(chǎng)景下,將n×3的隨機(jī)矩陣當(dāng)做球在真實(shí)空間中的三維點(diǎn),將m×6×1的隨機(jī)矩陣作為相機(jī)位姿的初始值,輸入到光束法平差系統(tǒng)中;
11、首先對(duì)相機(jī)外參做矩陣變換,對(duì)每個(gè)相機(jī)位姿的前3個(gè)參數(shù)當(dāng)做旋轉(zhuǎn)參數(shù),后3個(gè)參數(shù)當(dāng)做平移參數(shù),利用opencv的rodrigues算法將旋轉(zhuǎn)參數(shù)變換為矩陣
12、r,_=cv2.rodrigues(rvec)
13、
14、設(shè)球心oi在真實(shí)空間中的三維點(diǎn)坐標(biāo)為(xw,yw,zw),第j個(gè)相機(jī)的外參矩陣為tj,則空間中的三維點(diǎn)在相機(jī)坐標(biāo)系下的坐標(biāo)(xc,yc,zc)為:
15、
16、相機(jī)內(nèi)參矩陣kj也已知,可以表示為:
17、
18、使用opencv的fitellipse橢圓檢測(cè)方法,從圖像ij中可以得到橢圓圓心的像素點(diǎn)坐標(biāo)(xo,yo)和長(zhǎng)短軸的大小a,b,即:
19、(xo,yo),(a,b),_=cv2.fitellipse(ij)
20、已知球的真實(shí)半徑r和圖像中橢圓的長(zhǎng)軸和短軸的大小a,b,當(dāng)焦距fx=fy=f時(shí),基于球心在相機(jī)坐標(biāo)系的三維點(diǎn)坐標(biāo),可以計(jì)算球在圖像中的長(zhǎng)軸a和短軸b的大?。?/p>
21、
22、當(dāng)焦距fx≠fy時(shí),長(zhǎng)軸a和短軸b的大小:
23、
24、則可以計(jì)算橢圓的大小誤差:
25、
26、球心重投影得到的像素點(diǎn)坐標(biāo)與圖像中的橢圓圓心坐標(biāo)重合,因此這里構(gòu)建一個(gè)關(guān)于重投影誤差的非線性最小二乘問題,球心oi在圖像中的重投影坐標(biāo)(xc,yc)為:
27、
28、則重投影誤差可以定義為:
29、e2=(xc-xo)2+(yc-yo)2
30、基于此,損失函數(shù)可以定義為,其中λ,μ為權(quán)重,則:
31、e=λe1+μe2
32、這里采用bundle?adjustment來最小化重投影誤差,即:
33、
34、如此,便得到準(zhǔn)確且符合真實(shí)世界尺寸的多目相機(jī)外參。
35、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:
36、本發(fā)明在多目相機(jī)環(huán)繞式設(shè)備范圍內(nèi)對(duì)已知直徑的球體進(jìn)行多次移動(dòng)并拍攝記錄球體標(biāo)定圖片,基于相機(jī)內(nèi)參對(duì)球體標(biāo)定圖片原圖進(jìn)行畸變矯正,得到畸變矯正圖序列,對(duì)畸變矯正序列做橢圓檢測(cè),篩選未拍到標(biāo)定球圖片的同時(shí),檢測(cè)橢圓圓心的像素坐標(biāo)以及橢圓的長(zhǎng)軸和短軸,將相機(jī)內(nèi)參、橢圓的圓心像素坐標(biāo)、橢圓的長(zhǎng)軸和短軸加入到光束法平差系統(tǒng)來標(biāo)定相機(jī)外參,獲得符合真實(shí)世界實(shí)際大小的相機(jī)外參,提高多目相機(jī)標(biāo)定的準(zhǔn)確性。
1.一種基于球體的多目相機(jī)外參標(biāo)定方法,其特征在于:包括以下步驟:
2.根據(jù)權(quán)利要求1所述的一種基于球體的多目相機(jī)外參標(biāo)定方法,其特征在于:所述步驟s1為數(shù)據(jù)準(zhǔn)備部分,理想情況下,多次拍攝的球體像素序列應(yīng)在每個(gè)相機(jī)的像平面上均勻分布;