本發(fā)明涉及網(wǎng)格地圖,尤其涉及一種實(shí)時(shí)網(wǎng)格地圖更新方法。
背景技術(shù):
1、常用的3d模型表示方法包括點(diǎn)云地圖、占位網(wǎng)格地圖、tsdf地圖、surfel面片地圖和網(wǎng)格地圖。其中,網(wǎng)格地圖(mesh地圖)相對(duì)其它地圖,具有能夠近似表達(dá)絕大部分復(fù)雜3d模型結(jié)構(gòu)、避免不連續(xù)、存儲(chǔ)花銷小且擴(kuò)展性高等優(yōu)點(diǎn)。
2、但現(xiàn)有方法在構(gòu)建和更新mesh地圖時(shí),需要不斷進(jìn)行重新三角化,該過程的時(shí)耗與3d點(diǎn)數(shù)量呈指數(shù)關(guān)系,時(shí)耗非常高,因此主要適用于離線處理的場(chǎng)景,這限制了其在實(shí)時(shí)應(yīng)用場(chǎng)景中的普及,不適用于對(duì)實(shí)時(shí)性要求高的應(yīng)用場(chǎng)景。例如在xr(擴(kuò)展現(xiàn)實(shí))應(yīng)用場(chǎng)景,需要實(shí)時(shí)更新mesh地圖,滿足諸如虛實(shí)遮擋、虛實(shí)碰撞、光場(chǎng)估計(jì)、體感互動(dòng)、觸覺交互等空間計(jì)算和人機(jī)交互需求,現(xiàn)有網(wǎng)格地圖更新方法無法在xr設(shè)備上實(shí)時(shí)運(yùn)行。
技術(shù)實(shí)現(xiàn)思路
1、鑒于上述的分析,本發(fā)明實(shí)施例旨在提供一種實(shí)時(shí)網(wǎng)格地圖更新方法,用以解決現(xiàn)有網(wǎng)格地圖更新方法時(shí)耗高的問題。
2、一方面,本發(fā)明實(shí)施例提供了一種實(shí)時(shí)網(wǎng)格地圖更新方法,包括以下步驟:
3、獲取當(dāng)前時(shí)刻的點(diǎn)云數(shù)據(jù),確定點(diǎn)云數(shù)據(jù)中每個(gè)三維點(diǎn)所屬的體素單元;
4、對(duì)于當(dāng)前時(shí)刻的點(diǎn)云數(shù)據(jù)對(duì)應(yīng)的每個(gè)體素單元,若判斷所述體素單元的類型為表面,則基于所述體素單元的三維點(diǎn)采用高斯過程估計(jì)對(duì)所述體素單元進(jìn)行表面重建得到所述體素單元當(dāng)前時(shí)刻的重建結(jié)果;
5、對(duì)于當(dāng)前時(shí)刻的點(diǎn)云數(shù)據(jù)對(duì)應(yīng)的每個(gè)體素單元,若體素單元?dú)v史庫中不存在所述體素單元,則將所述體素單元加入所述體素單元?dú)v史庫;否則,基于所述體素單元當(dāng)前時(shí)刻的三維點(diǎn)或重建結(jié)果對(duì)所述體素單元?dú)v史庫進(jìn)行更新。
6、基于上述方法的進(jìn)一步改進(jìn),所述重建結(jié)果包括表面重建方向、每個(gè)表面重建方向的重建點(diǎn)和每個(gè)重建點(diǎn)的不確定度;
7、基于所述體素單元當(dāng)前時(shí)刻的三維點(diǎn)或重建結(jié)果對(duì)所述體素單元?dú)v史庫進(jìn)行更新,包括:
8、若所述體素單元?dú)v史庫中所述體素單元未進(jìn)行表面重建,則將體素單元?dú)v史庫中所述體素單元的三維點(diǎn)和當(dāng)前時(shí)刻所述體素單元的三維點(diǎn)合并,基于合并后的三維點(diǎn)判斷所述體素單元是否為表面類型,若是,則采用高斯過程估計(jì)對(duì)所述體素單元進(jìn)行重建得到所述體素單元的重建結(jié)果,對(duì)體素單元?dú)v史庫中所述體素單元進(jìn)行更新;
9、若所述體素單元?dú)v史庫中所述體素單元進(jìn)行了表面重建,則根據(jù)當(dāng)前時(shí)刻的重建結(jié)果的不確定度對(duì)體素單元?dú)v史庫中所述體素單元進(jìn)行更新。
10、基于上述方法的進(jìn)一步改進(jìn),根據(jù)當(dāng)前時(shí)刻的重建結(jié)果的不確定度對(duì)體素單元?dú)v史庫中所述體素單元進(jìn)行更新,包括:
11、依次遍歷所述體素單元的當(dāng)前時(shí)刻的重建結(jié)果中每個(gè)表面重建方向的每個(gè)重建點(diǎn),若所述重建點(diǎn)的不確定度和體素單元?dú)v史庫中所述體素單元對(duì)應(yīng)的重建點(diǎn)的不確定度均小于第四閾值,則采用以下公式更新體素單元?dú)v史庫中所述體素單元對(duì)應(yīng)的重建點(diǎn)和不確定度:
12、mgpp=(cgpp*mgpvar+mgpp*cgpvar)/(cgpvar+mgpvar);
13、mgpvar=cgpvar*mgpvar/(cgpvar+mgpvar);
14、否則,若所述重建點(diǎn)的不確定度小于體素單元?dú)v史庫中所述體素單元對(duì)應(yīng)的重建點(diǎn)的不確定度,則采用以下公式更新體素單元?dú)v史庫中所述體素單元對(duì)應(yīng)的重建點(diǎn)和不確定度:
15、mgpp=cgpp;
16、mgpvar=cgpvar;
17、其中,cgpp表示所述體素單元的當(dāng)前時(shí)刻的重建點(diǎn);cgpvar表示所述體素單元的當(dāng)前時(shí)刻的重建點(diǎn)的不確定度,mgpp表示體素單元?dú)v史庫中所述體素單元對(duì)應(yīng)的重建點(diǎn),mgpvar表示體素單元?dú)v史庫中所述體素單元對(duì)應(yīng)的重建點(diǎn)的不確定度。
18、基于上述方法的進(jìn)一步改進(jìn),基于所述體素單元的三維點(diǎn)采用高斯過程估計(jì)對(duì)所述體素單元進(jìn)行表面重建得到所述體素單元當(dāng)前時(shí)刻的重建結(jié)果,包括:
19、基于主成分分析確定所述體素單元的表面重建方向;
20、對(duì)于每個(gè)表面重建方向,基于所述體素單元的三維點(diǎn)采用高斯過程估計(jì)得到重建點(diǎn)及每個(gè)重建點(diǎn)的不確定度,得到該表面重建方向的重建結(jié)果。
21、基于上述方法的進(jìn)一步改進(jìn),基于主成分分析采用以下方式確定所述體素單元的表面重建方向:
22、對(duì)所述體素單元內(nèi)的所有三維點(diǎn)進(jìn)行主成分分析得到對(duì)應(yīng)的特征值和特征向量;
23、計(jì)算最小特征值對(duì)應(yīng)的特征向量與三個(gè)坐標(biāo)軸間的夾角并從小到大排序得到第一夾角、第二夾角和第三夾角;
24、若第二夾角與第一夾角的差大于等于第二閾值,則第一夾角對(duì)應(yīng)的坐標(biāo)軸方向?yàn)楸砻嬷亟ǚ较颍?/p>
25、若第二夾角與第一夾角的差小于第二閾值,且第三夾角與第二夾角的差大于等于第三閾值,則第一夾角和第二夾角對(duì)應(yīng)的坐標(biāo)軸方向均為表面重建方向;
26、若第二夾角與第一夾角的差小于第二閾值,且第三夾角與第二夾角的差小于第三閾值,則三個(gè)坐標(biāo)軸方向均為表面重建方向。
27、基于上述方法的進(jìn)一步改進(jìn),對(duì)于每個(gè)表面重建方向,基于所述體素單元的三維點(diǎn)采用高斯過程估計(jì)得到重建點(diǎn)及每個(gè)重建點(diǎn)的不確定度,包括:
28、對(duì)所述表面重建方向的零平面進(jìn)行網(wǎng)格劃分得到網(wǎng)格點(diǎn);
29、以所述三維點(diǎn)為觀測(cè)點(diǎn),基于所述觀測(cè)點(diǎn)在所述表面重建方向上的值采用高斯過程估計(jì)得到所述網(wǎng)格點(diǎn)在所述表面重建方向上的數(shù)值及不確定度,得到重建點(diǎn)及每個(gè)重建點(diǎn)的不確定度。
30、基于上述方法的進(jìn)一步改進(jìn),對(duì)于每個(gè)表面重建方向,基于所述體素單元的三維點(diǎn)采用高斯過程估計(jì)得到重建點(diǎn)及每個(gè)重建點(diǎn)的不確定度,包括:
31、對(duì)所述表面重建方向的零平面進(jìn)行網(wǎng)格劃分得到網(wǎng)格點(diǎn);
32、將所述三維點(diǎn)投影在所述表面重建方向的零平面上得到投影點(diǎn);
33、對(duì)于每個(gè)網(wǎng)格點(diǎn),查找最鄰近投影點(diǎn),將所述最鄰近投影點(diǎn)對(duì)應(yīng)的三維點(diǎn)加入觀測(cè)點(diǎn)集合;
34、以所述觀測(cè)點(diǎn)集合中的三維點(diǎn)為觀測(cè)點(diǎn),基于所述觀測(cè)點(diǎn)在所述表面重建方向上的值采用高斯過程估計(jì)得到所述網(wǎng)格點(diǎn)在所述表面重建方向上的數(shù)值及不確定度,得到重建點(diǎn)及每個(gè)重建點(diǎn)的不確定度。
35、基于上述方法的進(jìn)一步改進(jìn),基于所述觀測(cè)點(diǎn)在所述表面重建方向上的值采用以下公式得到所述網(wǎng)格點(diǎn)在所述表面重建方向上的數(shù)值及不確定度:
36、
37、其中,predm×1表示網(wǎng)格點(diǎn)在表面重建方向上的數(shù)值向量,varm×1表示網(wǎng)格點(diǎn)在表面重建方向上的數(shù)值的不確定度向量,m表示網(wǎng)格點(diǎn)的數(shù)量,n表示觀測(cè)點(diǎn)的數(shù)量,obsn×1表示觀測(cè)點(diǎn)在表面重建方向上的數(shù)值向量,noise表示觀測(cè)點(diǎn)的噪聲,k表示高斯過程估計(jì)的核函數(shù)矩陣,i表示單位矩陣,diag(·)表示取矩陣的對(duì)角線元素。
38、基于上述方法的進(jìn)一步改進(jìn),采用以下方式確定點(diǎn)云數(shù)據(jù)中每個(gè)三維點(diǎn)所屬的體素單元:
39、若當(dāng)前時(shí)刻點(diǎn)云數(shù)據(jù)不是世界坐標(biāo)系,則將當(dāng)前時(shí)刻的點(diǎn)云數(shù)據(jù)轉(zhuǎn)換到世界坐標(biāo)系得到世界坐標(biāo)系下當(dāng)前時(shí)刻的點(diǎn)云數(shù)據(jù);
40、根據(jù)世界坐標(biāo)系下當(dāng)前時(shí)刻的點(diǎn)云數(shù)據(jù)的每個(gè)三維點(diǎn)的坐標(biāo)和體素單元的邊長計(jì)算得到每個(gè)三維點(diǎn)所屬體素單元的編號(hào)。
41、基于上述方法的進(jìn)一步改進(jìn),采用以下方式判斷所述體素單元的類型:
42、對(duì)所述體素單元內(nèi)的所有三維點(diǎn)進(jìn)行主成分分析得到對(duì)應(yīng)的特征值;
43、若最大特征值與次大特征值的比值大于等于第一閾值,則判斷所述體素單元的類型為非表面,否則所述體素單元的類型為表面。
44、與現(xiàn)有技術(shù)相比,本發(fā)明通過在每個(gè)時(shí)刻獲取當(dāng)前時(shí)刻的點(diǎn)云數(shù)據(jù),確定每個(gè)三維點(diǎn)所屬的體素單元,從而對(duì)當(dāng)前時(shí)刻的點(diǎn)云數(shù)據(jù)進(jìn)行體素單元切分,這些體素單元相互獨(dú)立,可以并行處理,從而提高更新的效率;對(duì)每個(gè)體素單元,如果判斷其類型為表面類型,則對(duì)其進(jìn)行表面重建,而對(duì)于非表面類型的體素單元?jiǎng)t不進(jìn)行重建,從而進(jìn)一步簡化處理過程提高效率;對(duì)于每個(gè)體素單元,若歷史庫中不存在,則直接添加進(jìn)歷史庫中從而進(jìn)行更新,若歷史庫中有該體素單元,則基于當(dāng)前時(shí)刻該體素單元的重建結(jié)果對(duì)體素單元?dú)v史庫進(jìn)行更新,從而快速更新網(wǎng)格地圖。
45、本發(fā)明中,上述各技術(shù)方案之間還可以相互組合,以實(shí)現(xiàn)更多的優(yōu)選組合方案。本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分優(yōu)點(diǎn)可從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過說明書以及附圖中所特別指出的內(nèi)容中來實(shí)現(xiàn)和獲得。