趙書芳
(西安工程大學電子信息學院,西安710600)
點云配準是指經由一定的算法或者統計學規律,通過計算機求解兩塊點云之間的錯位,并由此計算出最佳轉換矩陣,實現將兩片點集云自動配準的過程。其技術是通過在源點云模型和目標點云模型之間構造一個三維空間變換,使源點云模型在此變換作用下能夠最大限度地和目標點云模型重合。點云配準問題實質上是求解坐標變換矩陣和平移向量參數,使得兩片三維點云的數據經坐標變換后的距離最小,直至實現兩點云的配準。
目前最為經典和被普遍使用的點云配準算法是由Besl 和McKay 等人提出的迭代最近點(Iterative Closest Point, ICP)算法[1]。該算法雖然配準精度高,但存在計算效率低和初始位置要求高等缺點,對于數據量大的點云配準速度較慢,容易陷入局部極值的問題。因此許多學者對ICP 的改進算法進行了研究。趙夫群等人提出了基于文物點云模型的優化配準算法[2],針對帶有噪聲的文物點云模型,采用一種由粗到細的方法來實現其斷裂面的精確配準。楊軍提出了一種基于自適應最優閾值的ICP 算法[3],實現了整體與部分的3D 模型間的配準。鐘瑩以經典ICP算法為基礎,根據主成分分析(Principal Component Analysis, PCA)算法[4]進行粗略配準,首先實現了兩片大致重合的點云數據的快速獲得,并在隨后通過閾值改進的ICP 算法進行點云數據的精確配準。詹曙提出使用稀疏迭代最近點(SICP)來進行深度圖的配準[5],通過使用稀疏誘導準則去重新書寫配準優化公式,從而提高配準的精度。張開興提出了一種以三維模型為基礎的數據點配準方法[6],利用掃描數據生成三角網格模型, 并應用單純形優化算法生成三維模型的最小包圍盒, 然后通過坐標變換實現CAD 模型與三角網格模型上數據點的粗配準, 最后通過ICP 算法實現精配準。張志林使用Kinect v2獲取包含物體所在場景的點云, 利用SAC-IA 算法對相鄰兩片點云進行粗配準,并將兩兩配準的ICP算法擴展到多片點云,算法策略配準精度高且適用性好[7]。
以上諸算法在點云配準的速度和精度等方面都有不同程度的提高,但應用在三維人體模型和服裝模型的配準效果不佳,配準精度不高。為解決這一問題,在此提出一種基于ICP 算法的改進點云配準算法。此算法在初始配準時使用SAC-IA 算法,對兩片點云集進行初始配準,將初始配準后得到的位姿作為ICP 配準算法的初始位姿,來避免ICP 算法在點云配準時因為初始位姿偏差過大時導致配準結果容易陷入局部極值的情況。
一般情況下點云配準算法的實現可分為初始配準和精確配準。點云配準就是一片點云數據與另一片點云數據根據坐標變換矩陣進行整體分析并配準的過程[8],其實質是求解坐標旋轉矩陣和平移向量,使得在不同坐標系下測得的兩片點云的三維數據經過坐標變換后的距離最小。
該算法首先對點云數據進行VoxelGrid 濾波處理,然后進行快速點特征直方圖(Fast Point Feature Histogram, FPFH)特征提取,之后,再利用采樣一致性初始配準算法(SAC-IA, Sample Consensus Initial Aligment)得到兩片點云之間的對應關系,從而完成初始配準,使兩片點云集獲得一個相對較好的初始位姿[9]。最后,運用ICP 算法將點云的初始配準結果進行第二次精確配準,從而完成兩片點云的精確配準,達到優化配準結果的目的。點云配準流程圖如圖1 所示。

圖1 點云配準流程圖
在點云處理時一般將濾波處理作為預處理的第一步,濾波處理的效果決定著后續的點云處理步驟的好壞,影響很大。為了更好完成配準、特征提取、曲面重建、可視化等后續步驟,必須在濾波處理時將離群點、空洞、噪聲點等按照后續點云處理的需求進行定制的濾波預處理。
VoxelGrid(體素網格)濾波法具有很好的濾波效果。體素網格的概念類似于像素,使用AABB 包圍盒將點云數據體素化。一般體素越密集的地方信息越多。體素網格可以去除噪音點和離群點。另一方面如果使用高分辨率相機等設備采集點云數據,那么得到點云數據通常會較為密集。過多的點云數量會對后續點云配準等工作帶來困難。使用體素濾波器不僅可以達到向下采樣的目的,同時也保持了點云數據本身的幾何結構。
在此使用VoxelGrid 濾波[10]方法實現下采樣,在減少了點云數據的同時也保持了點云的原始形狀特征,適用于點云配準、曲面重建等三維點云算法中,以提高點云算法的運算速度。PCL 中的濾波函數VoxelGrid 類經由輸入的點云數據創建了一種三維體素柵格(一般將體素柵格當做空間的微小三維立方體的集合),然后在每一個體素格內,體素中的其他點用其重心點來表示,因此經過體素格濾波后的點云數據,其所有點都可以用一個重心點來代替表示。通過上述下采樣的方法達到點云濾波的效果,也可同時減少點云數據的處理量。將其作為點云配準和曲面重建等實驗的預處理,能夠在很大程度上提高點云處理的速度。
采樣一致性初始配準(SAC-IA,Sample Consensus Initial Alignment)算法依賴特征直方圖[11],因此一般要先將點云的快速特征點直方圖描述子(FPFH, Fast Point Feature Histogram)計算出來。FPFH 是根據已估計出的點云法線的特征值,計算出該點和它k 個鄰域點之間的空間差異,其本質上是點特征直方圖(PFH)的快速簡化模型[12]。FPFH 很大程度上減少了計算復雜度,提高了計算效率,并且保留了PFH 的大部分特征和功能。
新算法利用了提高計算效率的FPFH 快速算法,同時保留了PFH 的主要特性。FPFH 特征描述子的求解方法如下:
1) 針對某個查詢點Pr,求取它和鄰域點之間的矩陣關系,將此計算關系稱為簡化的點特征直方圖(SPFH,Simple Point Feature Histograms),記作S(Pr);
2) 再次設定每個點k 鄰域,然后通過鄰域點計算出的SPFH 的值來求解點Pr的FPFH 特征值,記作H(Pr)為:

上式wl為第l 個鄰域點SPFH 特征的權重,表示查詢點Pr和它的鄰近點Pm之間的距離,用于評定一組點對(Pr,Pm)的關系。FPFH 計算原理如圖2 所示。

圖2 FPFH 計算原理圖
為了避免使點云配準陷入局部最優解從而導致配準失敗,在精配準之前進行了點云的初始配準。在初始配準時采用的是SAC-IA 算法,其算法步驟如下所述:
1) 從待配準點云M 中選取k 個采樣點,為了使每個采樣點的FPFH 特征都不一樣,每兩個采樣點之間的距離應該大于設置的最小距離閾值dmin。
2) 尋找目標點云N 中和待配準點云M 中的采樣點具有相似FPFH 特征的所有的點,在這些相似點中任意選取一些點作為點云M 在目標點云N 中的相互對應點。
3) 求解對應點之間的剛體變換矩陣,然后再利用計算對應點云的度量誤差來評價變換矩陣的質量。此處的距離誤差多使用Huber 函數表示:

式中ur為預設值,ri為第i 組對應點變換之后的距離差。重復以上三個步驟直至取得最佳度量誤差結果,即得到誤差函數的最小值,此時剛體變換矩陣就是最優的,也是最終的點云配準變換矩陣[11],通過此矩陣即可計算出點云配準結果。
通過SAC-IA 算法得到的剛體變換矩陣使得兩個點云數據大體上重合,得到一個較好的精確配準的初始位姿,還需在此基礎上再做一次精確配準。ICP 算法作為經典的精確配準算法,實際上是基于最小二乘法的最優配準方法。該算法是通過重復選擇滿足對應關系的點對,計算出最優剛體變換,直到達到配準的收斂精度要求。ICP 算法的主要思想就是找到旋轉矩陣和平移參數,將兩個不同坐標系下的點云,以其中一個點云坐標系為全局坐標系,另一個點云經過旋轉和平移后兩組點云對應部分完全重疊。在每次進行ICP 算法時,一般先通過給定的規則找出對應點集C 與D,此處有:C∈?A, D∈?B,對應點對的個數設置為n。最后根據最小二乘法迭代計算出坐標變換矩陣,包括旋轉矩陣Z 和平移向量T,使誤差函數式達到最小,其式如下:

此式取得最小值時即達到滿意的誤差要求。
ICP 算法分為4 個主要步驟:
①針對目標點云中的每個點,求解源點云中與其匹配的最近點;
②計算出使上述對應點對令函數式(3)值最小的剛體變換,然后求取旋轉矩陣和平移向量;
③使用獲得的旋轉矩陣和平移向量來配準原始點云和目標點云;
④重復上述三個步驟,直到滿足終止迭代的條件(迭代次數或誤差小于閾值)。此處的誤差最小,可以是相鄰兩次均方根差的絕對值小于某一限差。
實驗中的人體模型和服裝模型來自Poser 6.0。Poser 是MetaCreation 公司開發的一款優秀的人體造型和動畫制作軟件,為用戶提供了男性模型、女性模型等,且存儲了很多的身體姿勢、動作以及逼真的面部表情的三維人體模型和服裝模型[13]。此外Poser還有較強的交互能力,具備了3ds、obj 等文件格式的接口,能和輸出為上述文件格式的軟件程序進行模型信息交互。在實驗中,把Poser 6.0 中的三維模型數據導出為obj 格式的數據文件,然后利用程序將obj 格式的人體模型轉化為pcd 的點云格式,最后再進行三維人體模型與服裝的點云配準。
實驗使用C++編程和PCL 開源數據庫,一共進行了兩組三維人體模型和服裝模型數據的配準。在配準之前,在Maya 里對人體模型和服裝模型的尺寸進行了調整,將服裝變形到適合人體模型的尺寸大小。實驗結果如圖3 和圖4 所示。實驗使用的改進配準算法與傳統ICP 算法配準所消耗的時間對比如表1 所示。

圖3 男裝點云配準結果比較

圖4 女裝點云配準結果比較

表1 改進算法與傳統ICP 算法處理速度對比
圖3(b)和圖4(b)為ICP 算法配準后的數據。由圖中可以看出此時兩片點云數據沒有完全重合。圖3(c)和圖4(c)為實驗算法配準后的效果圖,兩片點云數據中的各個部位都得到了較好的融合,實現了人體模型和服裝模型的配準。
針對ICP 算法收斂速度慢,容易陷入局部極值等問題,基于SAC-IA 對ICP 點云配準算法進行了改進。經過實驗驗證,新改進的算法適用于人體模型和服裝模型等剛體的配準,當兩點云重疊區域較少時依然有較高的配準精度。與傳統ICP 算法相比,改進算法點云配準的精度和收斂速度都有了明顯的改善,具有很好的實用價值。