黃思捷,梁正友,2,孫宇,李軒昂
(1.廣西大學(xué)計(jì)算機(jī)與電子信息學(xué)院,南寧530004;2.廣西多媒體通信與網(wǎng)絡(luò)技術(shù)重點(diǎn)實(shí)驗(yàn)室,南寧530004)
利用三維掃描技術(shù)對(duì)物體進(jìn)行三維重建是當(dāng)今游戲、影視、虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)中的一項(xiàng)新技術(shù),已被廣泛應(yīng)用到游戲、影視動(dòng)漫、虛擬現(xiàn)實(shí)、產(chǎn)品展示、人機(jī)交互、機(jī)器人導(dǎo)航控制等諸多領(lǐng)域。在應(yīng)用方面,劉振[1]利用Kinect 對(duì)地面進(jìn)行土壤表面的三維點(diǎn)云形態(tài)結(jié)構(gòu)模型構(gòu)造通過(guò)彩色圖像、深度圖像和點(diǎn)云初始配準(zhǔn)的方法。鄭立華[2]用Kinect 相機(jī)獲取不同視角下果樹(shù)的原始三維點(diǎn)云,針對(duì)傳統(tǒng)最近點(diǎn)迭代算法對(duì)待配準(zhǔn)點(diǎn)云的空間位置要求苛刻的問(wèn)題,提出了改進(jìn)的點(diǎn)云配準(zhǔn)算法,完成對(duì)蘋(píng)果書(shū)的建模。吳劍鋒[3]針對(duì)Kinect Fusion 硬件要求高,重建效率低,無(wú)法滿足快速地重建場(chǎng)景的缺點(diǎn)。提出基于點(diǎn)云融合算法的Kinect 快速三維重建算法,應(yīng)用Kinect 的多深度圖像融合的三維重建算法實(shí)現(xiàn)目標(biāo)物體的三維重建。
為重建出完整的三維模型,需要對(duì)建模物體從不同的視角進(jìn)行掃描,每次掃描的獲得的點(diǎn)云(待配準(zhǔn)點(diǎn)云)往往擁有獨(dú)立的局部坐標(biāo)系統(tǒng),需要轉(zhuǎn)換成統(tǒng)一的全局坐標(biāo),這一過(guò)程稱為點(diǎn)云配準(zhǔn)[4]。點(diǎn)云配準(zhǔn)是三維重建的核心步驟,配準(zhǔn)精度會(huì)直接影響三維模型的整體精度[5]。
根據(jù)采集視角數(shù)的不同,點(diǎn)云配準(zhǔn)可以分為雙視角配準(zhǔn)和多視角配準(zhǔn)。雙視角配準(zhǔn)是在輸入點(diǎn)云和目標(biāo)點(diǎn)云之間構(gòu)造一個(gè)三維空間變換,使輸入點(diǎn)云在此變換作用下能夠最大限度地和目標(biāo)點(diǎn)云整合成一個(gè)整體。其代表性的算法為迭代最近點(diǎn)(Iterative Closest Point,ICP)配準(zhǔn)算法[6],其核心思想是以迭代最近點(diǎn)的方法,使兩個(gè)點(diǎn)云相互靠近,最終使兩個(gè)點(diǎn)云之間的距離誤差最小。ICP 算法存在的問(wèn)題是容易陷入局部最優(yōu)和缺少重疊區(qū)域?qū)е屡錅?zhǔn)精度不高。Kristijan Lenac等人[7]把遺傳算法和ICP 算法相結(jié)合起來(lái),利用遺傳算法找到近似匹配點(diǎn)之后,使用ICP 算法來(lái)提高精度,收到較好效果。Zhang Hong 等人[8]提出一種半概率裁剪的ICP 改進(jìn)算法,利用幀對(duì)模型方法和幀對(duì)幀方法之間轉(zhuǎn)換后,使用傳統(tǒng)ICP 算法對(duì)相機(jī)的姿態(tài)進(jìn)行細(xì)化,最后使用TUM RGB-D 數(shù)據(jù)集來(lái)評(píng)估配準(zhǔn)的精度。
在多視角點(diǎn)云配準(zhǔn)下,多視角點(diǎn)云配準(zhǔn)是通過(guò)計(jì)算各輸入點(diǎn)云和目標(biāo)點(diǎn)云之間的剛體變換關(guān)系,然后利用變換關(guān)系讓各輸入點(diǎn)云向目標(biāo)點(diǎn)云進(jìn)行變換。其代表性的算法是Chen Yang 等人[9]提出的多個(gè)視角的順序配準(zhǔn)算法。該算法先隨機(jī)選擇一個(gè)點(diǎn)云作為目標(biāo)點(diǎn)云,然后按照點(diǎn)云之間的對(duì)應(yīng)關(guān)系依次以此點(diǎn)云為基準(zhǔn),后一個(gè)點(diǎn)云為待配準(zhǔn)點(diǎn)云,采用雙目視角的配準(zhǔn)方法進(jìn)行配準(zhǔn),依次完成多視角的點(diǎn)云配準(zhǔn)。此算法操作方便、易上手,但是前、后點(diǎn)云配準(zhǔn)之后會(huì)有誤差積累,在進(jìn)行多次進(jìn)行雙目視角的配準(zhǔn)之后累計(jì)的誤差會(huì)被放大,最后影響三維模型整體的精度和可靠性[10-11]。針對(duì)這些問(wèn)題,不少學(xué)者提出了解決方案。閆利等人[10]提出一種閉合條件約束的配準(zhǔn)方法。該方法先采用“點(diǎn)-切平面”迭代最近點(diǎn)算法分別求解各點(diǎn)云之間的坐標(biāo)轉(zhuǎn)換參數(shù),再以單站點(diǎn)云為配準(zhǔn)單元,以轉(zhuǎn)換參數(shù)作為I 觀測(cè)值構(gòu)建條件方程,以條件平差方法對(duì)轉(zhuǎn)換參數(shù)作改正以達(dá)到全局最優(yōu)。李健等人[11]提出結(jié)合轉(zhuǎn)臺(tái)約束下利用圖像幾何特征進(jìn)行粗配準(zhǔn)和使用迭代最近點(diǎn)ICP 算法實(shí)現(xiàn)點(diǎn)云的精確配準(zhǔn)的方法,對(duì)累積誤差導(dǎo)致的閉環(huán)問(wèn)題以及不同角度拍攝引起的色差問(wèn)題,通過(guò)全局誤差修正與色差修正算法處理,提升重建結(jié)果的精度。徐思雨等人[12]設(shè)計(jì)一個(gè)目標(biāo)函數(shù),將多視角配準(zhǔn)問(wèn)題分解成多個(gè)雙視角配準(zhǔn)問(wèn)題,提出逐步求精的解決策略獲得精確的多視角配準(zhǔn)結(jié)果。郭瑞科等人[13]提出一種基于KD-Tree(K-維樹(shù))點(diǎn)云均勻采樣簡(jiǎn)化算法,通過(guò)對(duì)傳統(tǒng)四點(diǎn)算法(4-Points Congruent Sets Algorithm,4PCS)中的閾值參數(shù)進(jìn)行統(tǒng)一,確定了各誤差閾值參數(shù)和點(diǎn)云密度之間的關(guān)系;然后通過(guò)基于姿態(tài)校正的方法解決對(duì)稱視角點(diǎn)云引起的誤配準(zhǔn)問(wèn)題。
盡管多視角點(diǎn)云配準(zhǔn)研究取得不錯(cuò)的進(jìn)展,但仍有進(jìn)一步提高配準(zhǔn)精度的需要。本文使用一臺(tái)Kinect V2 傳感器作為采集設(shè)備搭建了一套閉合多視角三維點(diǎn)云的配準(zhǔn)系統(tǒng)。首先,將建模物體放在旋轉(zhuǎn)圓盒上,利用Kinect V2 對(duì)建模物體每隔60°進(jìn)行一次點(diǎn)云采集,一共采集6 個(gè)點(diǎn)云,形成一個(gè)有序而且閉環(huán)的點(diǎn)云序列。其次,對(duì)建模物體0°到180°視角范圍內(nèi)的3 個(gè)點(diǎn)云,通過(guò)兩邊的兩個(gè)點(diǎn)云分別與中間點(diǎn)云使用ICP算法進(jìn)行兩兩配準(zhǔn)生成前部點(diǎn)云。以同樣的方法對(duì)180°到360°視角范圍內(nèi)的3 個(gè)點(diǎn)云進(jìn)行處理后生成后部點(diǎn)云。再次,用基于圓盒特征和小型包圍盒約束的方法對(duì)前部點(diǎn)云和后部點(diǎn)云進(jìn)行粗匹配。最后,使用基于圓盒特征和SVD(Singular Value Decomposition)奇異值剛性變換矩陣評(píng)估法對(duì)前部點(diǎn)云和后部進(jìn)行細(xì)匹配。在進(jìn)行多視角點(diǎn)云配準(zhǔn)時(shí),通過(guò)精心安排配準(zhǔn)的順序,避免誤差累積的問(wèn)題。同時(shí),提出的粗配準(zhǔn)方法和細(xì)配準(zhǔn)方法都充分利用圓盒的幾何特征,通過(guò)圓盒穩(wěn)定和明顯幾何特征進(jìn)行基于特征的點(diǎn)云配準(zhǔn),克服傳統(tǒng)ICP 需要對(duì)前部點(diǎn)云進(jìn)行迭代計(jì)算的缺點(diǎn)。實(shí)驗(yàn)結(jié)果表明,所提出的方法克服了多視角點(diǎn)云配準(zhǔn)的誤差累積問(wèn)題,提高了三維點(diǎn)云的配準(zhǔn)質(zhì)量。
本文基于Kinect V2 的閉合多視角三維測(cè)量系統(tǒng)如圖1 所示。將待測(cè)物體置于圓盒上,Kinect V2 置于物體前方,測(cè)量時(shí)手動(dòng)旋轉(zhuǎn)圓盒,Kinect V2 每間隔60°采集一幀圖像,待物體旋轉(zhuǎn)一周后采集結(jié)束。測(cè)量時(shí),把圓盒和待測(cè)物體作為建模物體一起掃描。圓盒是一個(gè)幾何特征明顯并且外形變化有規(guī)律的物體,其外形在本研究中被當(dāng)做一個(gè)在建模物體中人為加入的作為配準(zhǔn)所需要的幾何特征。
圖1 測(cè)量系統(tǒng)
為實(shí)現(xiàn)對(duì)被測(cè)目標(biāo)的閉合多視角三維測(cè)量,建立如圖2 所示的方法框架,下面對(duì)各個(gè)主要步驟做一簡(jiǎn)要說(shuō)明:
步驟一:采集及預(yù)處理。將待測(cè)物體放置在一個(gè)圓盒上,對(duì)圓盒和待測(cè)物體每隔60°采集點(diǎn)云一次,獲得6 個(gè)點(diǎn)云,它們形成一個(gè)有序而且閉環(huán)的點(diǎn)云序列。然后去除建模物體(含圓盒和待測(cè)物體)以外的點(diǎn)云,為隨后配準(zhǔn)做準(zhǔn)備。
步驟二:生成前部點(diǎn)云和后部點(diǎn)云。對(duì)建模物體0°到180°視角范圍內(nèi)的3 個(gè)點(diǎn)云,用兩邊的兩個(gè)點(diǎn)云分別與中間點(diǎn)云用ICP 算法進(jìn)行兩兩配準(zhǔn)生成前部點(diǎn)云。以同樣的方法對(duì)180°到360°角范圍內(nèi)的3 個(gè)點(diǎn)云進(jìn)行處理后生成后部點(diǎn)云。
步驟三:粗配準(zhǔn)。對(duì)前部點(diǎn)云和后部點(diǎn)云的圓盒點(diǎn)云重疊部分分別提取重疊的特征區(qū)域,用本文提出的小型包圍盒約束粗配準(zhǔn)方法前部點(diǎn)云和后部點(diǎn)云進(jìn)行粗配準(zhǔn)。
步驟四:細(xì)配準(zhǔn)。完成粗配準(zhǔn)之后,對(duì)前部點(diǎn)云和后部點(diǎn)云的圓盒點(diǎn)云重疊部分分別提取重疊的特征區(qū)域,得到重疊特征區(qū)域分別記為然后使用基于SVD 奇異值剛性變換矩陣評(píng)估法求出的剛性變化矩陣,剛性變化矩陣包括旋轉(zhuǎn)矩陣R和平移矩陣T。并利用求出的旋轉(zhuǎn)矩陣R和平移矩陣T對(duì)后部點(diǎn)云進(jìn)行剛性變換,使它向前部點(diǎn)云進(jìn)行變換,完成配準(zhǔn)。
對(duì)建模物體進(jìn)行點(diǎn)云配準(zhǔn)需要采集完整的點(diǎn)云。由于Kinect V2 一次只能采集建模物體一部分的點(diǎn)云;因此,本文采用六面采集方法,對(duì)建模物體按圓周順序每隔60°的不同角度采集六個(gè)點(diǎn)云,這些點(diǎn)云包含建模對(duì)象的完整點(diǎn)云信息。
Kinect V2 的深度攝像頭一般采集范圍為z軸方向0.5 米到 4.5 米,y軸方向±60°,x軸方向±70°(根據(jù)需求,可適當(dāng)擴(kuò)大其采集范圍,一定條件下,距離越近精度越高)。由于Kinect V2 采集范圍非常大,所以采集到的點(diǎn)云將會(huì)包括地面、背景、場(chǎng)景內(nèi)其他物體等不需要的點(diǎn)云。這些不必要的點(diǎn)云會(huì)影響點(diǎn)云配準(zhǔn)、特征提取等操作,最后對(duì)三維建模的精度造成不良影響。為避免采集到多余的點(diǎn)云,本文對(duì)Kinect V2 的采集范圍進(jìn)行精確的設(shè)置:z軸范圍設(shè)定在0.05 米到2 米,x軸范圍設(shè)定在-0.5 米到0.5 米。同時(shí),還需要對(duì)地面點(diǎn)云進(jìn)行單獨(dú)采集,以便去除其中包含的地面點(diǎn)云。對(duì)建模物體點(diǎn)云進(jìn)行采集步驟如下:
步驟一:設(shè)置Kinect V2 采集的有效范圍。將Kinect V2 放置在一個(gè)物體上,如圖6 所示,使Kinect V2達(dá)到一定的高度,因?yàn)樗杉奈矬w隨后要放在一個(gè)圓盒之上。如果Kinect V2 的高度不夠,會(huì)導(dǎo)致目標(biāo)物體部分區(qū)域無(wú)法采集到,導(dǎo)致生成的點(diǎn)云產(chǎn)生殘缺和空洞,最終影響隨后點(diǎn)云配準(zhǔn)精度。
步驟二:對(duì)地面進(jìn)行點(diǎn)云采集,獲取地面點(diǎn)云G。
步驟三:將圓盒放置于地面上并進(jìn)行點(diǎn)云采集,采集圓盒點(diǎn)云C。
步驟四:將目標(biāo)物體放置在圓盒之上,對(duì)目標(biāo)物體按圖3 所示方向以0→1→2→3→4→5 順序采集點(diǎn)云,獲得建模物體的6 個(gè)閉合多視角點(diǎn)云序列Mi,i∈{1,2,3,4,5,6}。建模對(duì)象點(diǎn)云采集完成。
圖3 點(diǎn)云的采集
由于采集到的建模物體多視角點(diǎn)云含有地面點(diǎn)云信息以及離群點(diǎn),需要去除這些干擾配準(zhǔn)的點(diǎn)。
對(duì)地面點(diǎn)云G遍歷其中每一個(gè)點(diǎn)并求出在y軸坐標(biāo)(高度)中最大的值,設(shè)為yG_max。然后,對(duì)建模物體多視角點(diǎn)云中每一個(gè)點(diǎn)進(jìn)行遍歷,若點(diǎn)(x,y,z)的y坐標(biāo)值小于yG_max,則該點(diǎn)為地面點(diǎn)云,將該點(diǎn)從建模物體多視角點(diǎn)云中去除。
在除去地面點(diǎn)云之后,對(duì)建模物體多視角點(diǎn)云還要去除離群點(diǎn)。本文采用PCL(Point Cloud Library)點(diǎn)云庫(kù)中RadiusOutlierRemoval 濾波器[14]對(duì)點(diǎn)云進(jìn)行采樣濾波,其原理是:首先,設(shè)置濾波器的兩個(gè)參數(shù),一個(gè)參數(shù)為圓的半徑長(zhǎng)度r,另外一個(gè)參數(shù)為以r為半徑生成圓內(nèi)包含點(diǎn)云的個(gè)數(shù)n。然后,在建模物體多視角點(diǎn)云中任取一點(diǎn)云為圓心、半徑為r的圓,如果在領(lǐng)域內(nèi)的點(diǎn)云數(shù)量大于n,那么認(rèn)定該點(diǎn)是非離群點(diǎn);否則判斷該點(diǎn)為離群點(diǎn),并將其去除。例如,在圖3,設(shè)半徑為r,n為1 時(shí),如圖4 中的點(diǎn)云A 將判定為離群點(diǎn)將其去除,而B(niǎo) 和C 的點(diǎn)云將判斷為非離群點(diǎn)將其保留。
圖4 除去離群點(diǎn)
作為多視角點(diǎn)云配準(zhǔn)代表性,順序配準(zhǔn)算法[9]直接易行,但前后配準(zhǔn)點(diǎn)云之間有誤差累積,影響整體配準(zhǔn)的精度與可靠性[10-11]。在順序配準(zhǔn)算法基礎(chǔ)上,文獻(xiàn)[10-11]采用各種全局優(yōu)化措施減少誤差累計(jì)問(wèn)題,但是計(jì)算復(fù)雜。本文提出一種解決累積誤差的方案,對(duì)于采集到的6 個(gè)有序閉合視角點(diǎn)云序列,我們對(duì)0°至180°的三個(gè)點(diǎn)云中的兩個(gè)兩邊點(diǎn)云分別與中間點(diǎn)云用ICP 算法進(jìn)行兩兩配準(zhǔn)生成前部點(diǎn)云。以同樣的方法對(duì)180°到360°視角范圍內(nèi)的3 個(gè)點(diǎn)云進(jìn)行處理后生成后部點(diǎn)云(本小節(jié))。由于采用兩個(gè)兩邊點(diǎn)云分別與中間點(diǎn)云用ICP 算法進(jìn)行兩兩配準(zhǔn),而不是對(duì)三個(gè)點(diǎn)云順序配準(zhǔn),因此沒(méi)有產(chǎn)生累積誤差。最后,對(duì)生成的前部點(diǎn)云和后部點(diǎn)云進(jìn)行配準(zhǔn)(2.4 小節(jié)),最終完成閉環(huán)多視角點(diǎn)云的配準(zhǔn)。
當(dāng)兩個(gè)點(diǎn)云有一定的重疊(重疊率超60%情況下),ICP 算法能得到正確的配準(zhǔn)結(jié)果[15]。按照2.1 小節(jié)方案采集點(diǎn)云時(shí),兩個(gè)相鄰的點(diǎn)云有非常大的重疊,可用直接用ICP 算法進(jìn)行配準(zhǔn)。
將采集到的0°至180°的三個(gè)點(diǎn)云預(yù)處理后記為Ml(左邊)、Mm(中間)、Mr(右邊)。從上下文可知Ml和Mm兩個(gè)點(diǎn)云之間在視角上有theta=60°的角度差,Mr和Mm兩個(gè)點(diǎn)云之間在視角上有theta=-60°的角度差。對(duì)Ml(作為輸入點(diǎn)云)和Mm(作為目標(biāo)點(diǎn)云)進(jìn)行配準(zhǔn),首先使用公式(1)進(jìn)行旋轉(zhuǎn)操作對(duì)輸入點(diǎn)云進(jìn)行變換,隨后再使用ICP 進(jìn)行配準(zhǔn)。
其中data為輸入點(diǎn)云,new_data為變換后的點(diǎn)云,theta為輸入點(diǎn)云到目標(biāo)點(diǎn)云的視角差。
對(duì)Mr(作為輸入點(diǎn)云)和Mm(作為目標(biāo)點(diǎn)云)Ml(作為輸入點(diǎn)云)和Mm(作為目標(biāo)點(diǎn)云)進(jìn)行配準(zhǔn),使用公式(1)進(jìn)行旋轉(zhuǎn)操作對(duì)輸入點(diǎn)云進(jìn)行變換,隨后再使用ICP 算法進(jìn)行配準(zhǔn)。
通過(guò)以上操作,將0°至180°的三個(gè)點(diǎn)云配準(zhǔn)成前部點(diǎn)云S。用同樣的方法將180°至360°視角范圍內(nèi)的3 個(gè)點(diǎn)云進(jìn)行處理后生成后部點(diǎn)云P。生成的前部點(diǎn)云和后部點(diǎn)云為完成建模物體的閉環(huán)多視角點(diǎn)云配準(zhǔn)打下基礎(chǔ)。
前部點(diǎn)云和后部點(diǎn)云視角差為180°,如圖5 所示。兩個(gè)點(diǎn)云之間重疊區(qū)域非常稀少,直接使用ICP算法會(huì)由于缺少重疊區(qū)域中的特征,造成配準(zhǔn)效果差,甚至配準(zhǔn)失敗。針對(duì)以上問(wèn)題,我們利用建模物體中圓盒具有幾何特征穩(wěn)定的特點(diǎn),提出利用圓盒特征和小型包圍盒約束相結(jié)合的粗配準(zhǔn)算法,基于圓盒交接區(qū)域特征和SVD 奇異值剛性變換矩陣評(píng)估法相結(jié)合的細(xì)配準(zhǔn)算法。先用提出的粗匹配算法進(jìn)行配準(zhǔn),獲得良好的初始位置;然后,再用提出的細(xì)配準(zhǔn)算法進(jìn)行配準(zhǔn),有效解決上述問(wèn)題。
2.4.1 基于局部角度閾值的特征提取
前部點(diǎn)云S和后部點(diǎn)云P位置關(guān)系如圖5 所示(從y軸截面上看)。其中,兩圓弧分別代表圓盒前部和后部,4 個(gè)圓圈分別是前部點(diǎn)云S、后部點(diǎn)云P在后續(xù)配置中要用到的特征區(qū)域。我們采用基于角度閾值的特征提取方法提取前部點(diǎn)云S和后部點(diǎn)云P分別對(duì)應(yīng)的特征區(qū)域,該方法形式化描述如下:設(shè)點(diǎn)云B∈{S,P} ,vector(1 , 0,0 )是x軸正方向向量 (vector正),vector(- 1,0,0 )是x軸負(fù)方向向量(vector負(fù)),圓盒點(diǎn)云C在y軸的最大值與最小值分別為ymax和ymin,用公式(2)對(duì)點(diǎn)云B進(jìn)行特征區(qū)域的提取,得到特征區(qū)域記為Bt。公式(2)中γ為預(yù)設(shè)的角度閾值。
圖5 前部點(diǎn)云S和后部點(diǎn)云P
2.4.2 使用圓盒特征和小型包圍盒約束的粗配準(zhǔn)
基于特征的粗配準(zhǔn)方法首先要確定要靠攏的特征區(qū)域。由于每次建模物體不一樣,導(dǎo)致每一個(gè)建模物體交接區(qū)中的域特征區(qū)域的幾何特征有很大區(qū)別,魯棒性不高。這種擁有幾何特征不明顯會(huì)的特征區(qū)域會(huì)導(dǎo)致點(diǎn)云配準(zhǔn)精度不高。針對(duì)上述問(wèn)題,本文把建模物體放置在圓盒之上,將前部點(diǎn)云的圓盒部分和后部點(diǎn)云的圓盒部分的特征區(qū)域進(jìn)行點(diǎn)云配準(zhǔn),求解它們的出剛性變換矩陣,隨后通過(guò)剛性變換矩陣對(duì)建模對(duì)象和圓盒作為一個(gè)整體進(jìn)行變換。由于使用圓盒,從不同位置分割都不會(huì)破壞其幾何特征,具有很高的魯棒性。
設(shè)點(diǎn)云S為目標(biāo)點(diǎn)云,點(diǎn)云P為輸入點(diǎn)云,粗匹配的目標(biāo)是將輸入點(diǎn)云P通過(guò)平移變換移動(dòng)到與S交接的位置上。粗匹配的過(guò)程如下:
步驟一:對(duì)點(diǎn)云S用公式(2)提取到特征區(qū)域St,計(jì)算出St在x軸的最大值Smax_x和z軸的最大值Smax_z,設(shè)定一個(gè)包圍盒大小的閾值h,如圖5 所示。并設(shè)包圍盒的 4 個(gè)頂點(diǎn)分別為:(Smax_x+h,Smax_z+h)、(Smax_x+h,Smax_z-h)、(Smax_x-h,Smax_z+h)、(Smax_x-h,Smax_z-h)。
步驟二:對(duì)點(diǎn)云P用公式(2)提取到特征區(qū)域Pt,然后計(jì)算出其在x軸最大值Pmax_x和在z軸最小值Pmin_z。
步驟三:設(shè)閾值Δx為在x軸上P每次移動(dòng)的量,Δz為在z軸上P每次移動(dòng)的量。Pmax_x當(dāng)前所處于位置的x軸坐標(biāo)值大于(Smax_x+h),Δx應(yīng)設(shè)負(fù)值,Pmax_x當(dāng)前所處于位置的x軸坐標(biāo)值小于(Smax_x-h),Δx應(yīng)設(shè)正值。Pmin_z和Δz也做同樣的處理。如果Δx和Δz設(shè)置過(guò)大,可能會(huì)導(dǎo)致每次平移中讓Pmax_x和Pmin_z都無(wú)法有效進(jìn)入包圍盒范圍內(nèi)。如果Δx和Δz設(shè)置過(guò)小,會(huì)增加迭代的次數(shù)。所以設(shè)置Δx和Δz合適大小的數(shù)值,不僅能讓Pmax_x和Pmin_z有效進(jìn)入包圍盒范圍內(nèi)完成粗配準(zhǔn),而且還能減少迭代的次數(shù)。對(duì)P中的每個(gè)點(diǎn)(x,z)進(jìn)行平移操作使用公式(3):
步驟四:用公式(3)對(duì)點(diǎn)(Pmax_x,Pmin_z)進(jìn)行平移得到的點(diǎn)用公式(4)判斷是否落在包圍盒內(nèi):
(3)使用圓盒交接區(qū)域特征的細(xì)配準(zhǔn)
在完成前部點(diǎn)云和后部點(diǎn)云粗配準(zhǔn)后,前部點(diǎn)云和后云部點(diǎn)集獲得良好初始位置,已經(jīng)具備進(jìn)行細(xì)配準(zhǔn)的條件。接下來(lái)要對(duì)前部點(diǎn)云和后部點(diǎn)云進(jìn)行基于特征的細(xì)配準(zhǔn)。
本文所采用細(xì)配準(zhǔn)方法是把包含建模對(duì)象和圓盒的點(diǎn)云作為一個(gè)整體來(lái)進(jìn)行剛性變換。首先,設(shè)粗配準(zhǔn)后的前部點(diǎn)云為S,后部點(diǎn)云為P。使用公式(2)進(jìn)行分別對(duì)S和P特征提取,分別得到相應(yīng)的特征區(qū)域St和Pt。使用SVD 奇異值剛性變換矩陣評(píng)估法對(duì)St和Pt求出旋轉(zhuǎn)矩陣R和平移矩陣T。最后對(duì)后部點(diǎn)云P使用剛性變換公式(公式(5))進(jìn)行剛性變換。
其中R為旋轉(zhuǎn)矩陣,T為平移矩陣,Pl是剛性變換后的點(diǎn)云。
由于本文是利用特征區(qū)域St和Pt進(jìn)行SVD 奇異值剛性變換矩陣評(píng)估法來(lái)獲取旋轉(zhuǎn)矩陣R和平移矩陣T。而傳統(tǒng)ICP 算法中必須對(duì)建模物體特征區(qū)域的每一個(gè)點(diǎn)進(jìn)行遍歷計(jì)算,而本文只需要對(duì)圓盒的特征區(qū)域進(jìn)行計(jì)算,需要計(jì)算的點(diǎn)數(shù)量比傳統(tǒng)ICP 要少,因此,本文的細(xì)配準(zhǔn)算法計(jì)算效率比傳統(tǒng)的ICP 算法要高。同時(shí)由于引進(jìn)擁有幾何特征明顯的圓盒作為特征,避免傳統(tǒng)ICP 算法在少量特征點(diǎn)云的情況下配準(zhǔn)精度不高的問(wèn)題,解決了建模物體的前部點(diǎn)云和后面點(diǎn)云配準(zhǔn)精度低的問(wèn)題。
本文使用Kinect V2 作為深度數(shù)據(jù)采集的設(shè)備。Kinect V2 的深度攝像頭適用于室內(nèi)弱光的環(huán)境下,所以本文選擇在白天關(guān)閉照明的室內(nèi)進(jìn)行深度信息采集。在程序?qū)崿F(xiàn),本文采用Visual Studio 2015 作為編譯環(huán)境,并且使用PCL 點(diǎn)云庫(kù)和OpenCV 作為第三方編程庫(kù)。所有程序代碼在PCL 點(diǎn)云庫(kù)基礎(chǔ)上進(jìn)行算法改進(jìn),采用C++實(shí)現(xiàn),運(yùn)行于Windows 10 64 位系統(tǒng)、Intel Core i7-7700HQ CPU@2.80GHz 處理器、8G 內(nèi)存的筆記本電腦上。圖6 為本文Kinect V2 拍攝場(chǎng)景和采集目標(biāo)水果籃子、打印機(jī)。
圖6 Kinect拍攝場(chǎng)景和采集對(duì)象水果籃子、打印機(jī)
圖6 中,圓盒高3 厘米、直徑10 厘米。KinectV2放置在高6 厘米上的矩形石塊上,圓盒距離KinectV2 23 厘米。水果籃子高5 厘米、長(zhǎng)軸15 厘米、短軸11 厘米。打印機(jī)長(zhǎng)17 厘米、寬7 厘米、高5 厘米。
3.2.1 實(shí)驗(yàn)處理過(guò)程
分別用2.2 小節(jié)方法對(duì)6 個(gè)閉合多視角點(diǎn)云序列去背景、除離群點(diǎn);用2.3 小節(jié)方法對(duì)分別對(duì)0°-180°的三個(gè)點(diǎn)云配準(zhǔn)生成前部點(diǎn)云(圖7 左圖),用2.3 小節(jié)方法對(duì)分別對(duì)180°-360°的三個(gè)點(diǎn)云配準(zhǔn)生成后部點(diǎn)云(圖7 右圖);用2.4 小節(jié)方法對(duì)前部點(diǎn)云和后部點(diǎn)云進(jìn)行前后配準(zhǔn),得到配準(zhǔn)后的點(diǎn)云,如圖8 第三列。
圖7 配準(zhǔn)獲得點(diǎn)云
3.2.2 實(shí)驗(yàn)效果分析
我們將本文提出的方法與用順序配準(zhǔn)算法[6]、傳統(tǒng)ICP 算法進(jìn)行對(duì)比,實(shí)驗(yàn)效果如圖8 所示。
圖8 水果籃子配準(zhǔn)效果圖
圖8 第一列是文獻(xiàn)[6]順序配準(zhǔn)獲得的效果圖。用2.1 小節(jié)采集到的點(diǎn)云,以 1→0→2→4→3→5 按圓周順序兩兩用ICP 算法進(jìn)行配準(zhǔn)得到的效果圖。在順序配準(zhǔn)的正面視圖(圖8 第一列第一張圖)和反面視圖(圖8 第一列第三張圖)中可以看出,前部點(diǎn)云和后部點(diǎn)云出現(xiàn)嚴(yán)重的穿模,但是點(diǎn)云0、點(diǎn)云1、點(diǎn)云2 利用順序配準(zhǔn)得到配準(zhǔn)精度不錯(cuò)的前部點(diǎn)云,后部點(diǎn)云也是亦然。但是順序配準(zhǔn)的問(wèn)題在于點(diǎn)云2 和點(diǎn)云4 配準(zhǔn)的時(shí)候,由于這兩個(gè)點(diǎn)云缺少足夠的特征導(dǎo)致配準(zhǔn)的精度低下,從左視圖(圖8 第一列第二張圖)和右視圖(圖8 第一列第四張圖)更容易看出前部點(diǎn)云和后部點(diǎn)云嚴(yán)重穿模的程度。并且在隨后點(diǎn)云4 與點(diǎn)云3 配準(zhǔn)的時(shí)候,由于點(diǎn)云4 已經(jīng)在處于誤差非常大的位置上,導(dǎo)致點(diǎn)云3 在點(diǎn)云4 基礎(chǔ)上繼續(xù)配準(zhǔn)導(dǎo)致配準(zhǔn)的誤差被放大。
在前部點(diǎn)云和后部點(diǎn)云形成之后(2.3 小節(jié)),需要對(duì)前部點(diǎn)云和后部點(diǎn)云進(jìn)行配準(zhǔn),本文將使用ICP 算法與本文提出的方法(2.4 小節(jié))進(jìn)行對(duì)比,實(shí)驗(yàn)效果如圖8(第二列、第三列)所示。
圖8(第三列)中的第一張圖、第二張圖、第三張圖、第四張圖是使用本文方法進(jìn)行前部點(diǎn)云和后部點(diǎn)云配準(zhǔn)的效果圖(對(duì)應(yīng) 0°、90°、180°、270°視角),明顯可以看到前部點(diǎn)云和后部點(diǎn)云的交接區(qū)域能很好地拼接在一起,交接區(qū)域并無(wú)明顯的錯(cuò)位。圖8(第二列)中的第一張圖、第二張圖、第三張圖、第四張是直接使用ICP算法進(jìn)行拼接的效果圖(對(duì)應(yīng) 0°、90°、180°、270°視角)。由于ICP 算法一般應(yīng)用于同一面的點(diǎn)云配準(zhǔn),對(duì)本文前部點(diǎn)云和后部點(diǎn)云這樣具有局部重疊區(qū)域且重疊區(qū)域比較少的情況,導(dǎo)致配準(zhǔn)的精度不高。在圖8(第二列第一張圖)中后部點(diǎn)云已經(jīng)開(kāi)始發(fā)生偏移,圖8(第二列第二張圖)中前部點(diǎn)云和后部點(diǎn)云的交接區(qū)域有明顯的錯(cuò)位。圖8(第二列第三張圖)中后部點(diǎn)云已經(jīng)跟的前部點(diǎn)云有穿模現(xiàn)象,圖8(第二列第四張圖)中前部點(diǎn)云和后部點(diǎn)云交接區(qū)域穿模更加明顯。
圖9 打印機(jī)配準(zhǔn)效果圖
圖9 第一列為順序配準(zhǔn)對(duì)打印機(jī)進(jìn)行配準(zhǔn)的效果圖。用2.1 小節(jié)采集到的點(diǎn)云,以1→0→2→4→3→5按圓周順序兩兩使用ICP 算法進(jìn)行配準(zhǔn)得到的效果圖。在順序配準(zhǔn)的正面視圖(圖9 第一列第一張圖)可以看到前部點(diǎn)云配準(zhǔn)獲得不錯(cuò)的配準(zhǔn)效果。但是由于點(diǎn)云2 和點(diǎn)云4 缺少特征,點(diǎn)云2 和點(diǎn)云4 配準(zhǔn)誤差開(kāi)始增大,從而導(dǎo)致點(diǎn)云3 的配準(zhǔn)精度低下。在反面視圖(圖9 第一列第三張圖)后部點(diǎn)云的右邊部分已經(jīng)向前部點(diǎn)云傾斜的。
圖9 第二列為ICP 算法對(duì)打印機(jī)前部點(diǎn)云和后部點(diǎn)云配準(zhǔn)的效果圖。在左視圖和右視圖中(圖9 第二列第二張圖、第二列第四張圖)明顯看出前部點(diǎn)云和后部點(diǎn)云的圓盒的交接區(qū)域已經(jīng)出現(xiàn)上下錯(cuò)位,并且正面效果圖(圖9 第二列第一張圖),前部點(diǎn)云看出已經(jīng)向右邊偏斜。圖9 第三列是使用本文方法(2.4.1 小節(jié)到2.4.2 小節(jié))對(duì)打印機(jī)前部點(diǎn)云和后部點(diǎn)云配準(zhǔn)的效果圖,可以看到前部點(diǎn)云和后部點(diǎn)云配準(zhǔn)的交接區(qū)域能很好地拼接在一起,交接區(qū)域并無(wú)明顯的錯(cuò)位。
從以上實(shí)例可看出,本文方法利用圓盒點(diǎn)云作為特征點(diǎn)進(jìn)行配準(zhǔn),依賴于圓盒穩(wěn)定的幾何特征,配準(zhǔn)效果明顯比ICP 算法好。
本文提出了一個(gè)Kinect V2 閉合多視角三維點(diǎn)云的配準(zhǔn)方法。首先,將建模物體放在旋轉(zhuǎn)圓盒上,利用Kinect V2 對(duì)建模物體進(jìn)行每隔60°進(jìn)行一次點(diǎn)云數(shù)據(jù)采集,獲得一個(gè)含有6 個(gè)點(diǎn)云的有序而且閉環(huán)的點(diǎn)云序列。其次,對(duì)建模物體0°到180°視角范圍內(nèi)的3個(gè)點(diǎn)云(180°到360°角范圍內(nèi)的3 個(gè)點(diǎn)云)進(jìn)行配準(zhǔn)生成前部點(diǎn)云(后部點(diǎn)云)。再次,用基于圓盒特征和小型包圍盒約束的方法對(duì)前部點(diǎn)云和后部點(diǎn)云進(jìn)行粗匹配。最后,用基于圓盒特征和SVD 奇異值剛性變換矩陣評(píng)估法對(duì)前部點(diǎn)云和后部進(jìn)行細(xì)匹配。理論分析和實(shí)驗(yàn)結(jié)果表明,所提出的方法克服了多視角點(diǎn)云配準(zhǔn)的誤差累積問(wèn)題,該配準(zhǔn)方法提高了三維點(diǎn)云的配準(zhǔn)質(zhì)量,為在點(diǎn)云上進(jìn)一步進(jìn)行曲面重建創(chuàng)造了良好的條件。