趙夫群
(咸陽師范學院教育科學學院,陜西 咸陽 712000)
隨著三維掃描技術(shù)的快速發(fā)展,點云配準成為一個研究熱點,目前已在圖像融合、醫(yī)學研究、文物修復、顱面復原等領(lǐng)域[1-6]得到了廣泛應用。顱骨配準是顱面復原的一個重要步驟,其配準精度將直接影響到顱面復原的正確性。顱骨配準的基本思路為:對于一個未知顱骨U,將其與顱骨數(shù)據(jù)庫中已有的多個顱骨進行配準,以找出一個或多個與U最為相似的參考顱骨S,那么參考顱骨S的面貌即可作為未知顱骨U的參考面貌。
通常,掃描儀獲取的三維顱骨點云數(shù)據(jù)量較大,而且不同掃描儀的分辨率差異較大,因此對顱骨配準的精度要求較高。目前,特征點標定法[7-8]是使用較多的顱骨配準方法,但是配準結(jié)果并不十分理想。為了提高不同分辨率的顱骨配準精度,提出一種由粗到細的層次化顱骨配準方法。顱骨粗配準就是將兩個顱骨通過旋轉(zhuǎn)和平移,變換到同一坐標系下的過程,實現(xiàn)顱骨的初始粗對齊。目前的顱骨粗配準算法大多采用基于特征的配準算法,如顱骨的區(qū)域特征、法向和曲率特征以及二維圖像特征等[9-11]。這些基于特征的配準算法可以將兩個顱骨基本對齊,為接下來的細配準提供良好的初始位置。顱骨細配準就是將兩個經(jīng)過粗配準后的顱骨進行進一步精確對齊的過程。目前,采用最為廣泛的顱骨細配準算法是迭代最近點(iterative closest point,ICP)算法[12]或其改進算法[13-16]。
以上這些算法可以在一定程度上提高顱骨配準的精度和速度,但對分辨率差異較大情況下的顱骨點云模型配準效果不佳。為了提高分辨率差異較大顱骨的配準精度和速度,提出一種先粗配準再細配準的層次化顱骨配準方法。首先采用基于NN的配準算法實現(xiàn)顱骨粗配準,然后采用添加模擬退火系數(shù)的改進ICP算法實現(xiàn)顱骨細配準,以提高顱骨配準的精度和速度,從而實現(xiàn)顱骨的最終精確配準。
對于待配準的顱骨U和S,假設(shè)其對應的點云模型的點集分別為X={x1,x2,…,xM}和Y={y1,y2,…,yN},xi,yj∈Rn,M和N分別為點集X和Y中的點數(shù),n為點云的維度。對于顱骨U和S,其粗配準采用基于NN的點云配準方法來實現(xiàn)。
基于NN點云配準算法的步驟如下:
(1) 建立一個兩層的NN,其激勵函數(shù)為線性函數(shù)y=x,訓練函數(shù)為trainlm函數(shù),trainlm采用Levenberg-Marquardt優(yōu)化技術(shù)來更新權(quán)值和偏差。
(2) 訓練該NN以獲取其連接權(quán)矩陣W和偏差矢量b。
(3) 基于步驟(2)獲取的權(quán)矩陣W和偏差矢量b,計算旋轉(zhuǎn)矩陣R和平移矢量t。
(4) 應用剛體變換參數(shù)R和t將點集X和Y進行配準。
基于NN的點云配準算法要求|X|=|Y|,即M=N,因此在對顱骨U和S粗配準前,先要對其采樣,以使點云X和Y具有相同的點數(shù)。該算法的核心問題即根據(jù)輸入點云X和期待的輸出點云Y計算其最佳剛體變換,即旋轉(zhuǎn)矩陣R和平移矢量t。
該算法的特點是:神經(jīng)網(wǎng)絡(luò)可以隨機初始化權(quán)值和偏差,它僅依賴預定義的訓練數(shù)據(jù)來建立剛體變換,因此輸入的矢量點和輸出的矢量點是一一對應的,并且這種一一對應關(guān)系保持不變。因此,基于NN的點云配準算法的相應訓練數(shù)據(jù)的精度越高,配準性能也就越好。
對于兩個待配準的顱骨U和S,假設(shè)其點云模型對應的點集分別為X和Y。采用ICP算法將X和Y進行配準的步驟如下:
(1) 對于任意一點yj,yj∈Y,j=1,2,…,N,在X中尋找其歐幾里德最近點xi,得到相關(guān)點集NY(X)={xi|d(yj,xi)=argminx∈Xd(yj,x)}。
(2) 對于點集NY(X)和Y,采用主成分分析法(PCA)計算其旋轉(zhuǎn)矩陣Rk和平移矢量tk,并應用變換(Rk,tk)來更新點集Y,從而得到剛體變換參數(shù)R和t,其計算式為
Y=Rk·Y+tk,R=Rk·R,t=Rk·t+tk
(1)
重復步驟(1)和(2),直到滿足算法的終止迭代條件為止。
ICP算法是一種精度較高的點云配準算法,但它要求兩個點集之間存在包含關(guān)系,并且對大數(shù)據(jù)量點云的配準速度較慢,而且沒有考慮不同尺度點云的配準問題。鑒于此,在顱骨U和S的細配準過程中,采用一種添加尺度因子和模擬退火系數(shù)的改進ICP算法來實現(xiàn)顱骨的細配準。
2.2.1 求解剛體變換
(2)
式中,s為尺度因子。
假設(shè)X={x1,x2,…,xM}和Y={y1,y2,…,yN}含相同數(shù)目的點,于是式(2)可簡化為
(3)
對式(3)求解關(guān)于t的偏導數(shù),并使其為0,則可以計算出平移矢量t的值為
(4)
于是,式(3)可進一步表示為
(5)
采用矩陣的跡,目標函數(shù)可進一步寫為
(6)
(7)
R=U·C·VT
(8)
式中,C=d(1,1,…,1,det(U·VT))。
下面對式(7)求解關(guān)于s的偏導數(shù),并令其為0,則尺度因子s的值為
(9)
由此得到剛體變換的旋轉(zhuǎn)矩陣R、平移矢量t和尺度因子s。
2.2.2 改進ICP算法的步驟
改進ICP算法將模擬退火的思想加入ICP算法中,可以大大提高顱骨點云模型的配準精度和速度。首先定義一個溫度參數(shù)α,它表示子集的數(shù)目。在ICP算法的每次迭代過程中,α都要進行加1操作。
對于顱骨U和S對應的點集X和Y,改進ICP算法對其配準的步驟描述如下:
(1) 設(shè)置參數(shù)的初值,即尺度因子s0=1,旋轉(zhuǎn)矩陣R0=I,平移矢量t0=0,模擬退火因子α=1。
(2) 基于ICP算法的點的相關(guān)性求解方法,建立子集Xα和Yα的相關(guān)性。
(3) 采用式(4)、式(8)和式(9)求解剛體變換參數(shù)R、t和s。
(4) 應用剛體變換參數(shù)R、t和s到點集Y上。
重復步驟(1)—(4),直到達到算法終止條件為止。
試驗采用西北大學可視化技術(shù)研究所提供的顱骨點云數(shù)據(jù)模型進行顱骨配準測試。對于圖1(a)所示的未知顱骨U,將其與顱骨庫中300個完整的顱骨進行配準。未知顱骨U與某一參考顱骨S的配準過程為:首先對顱骨U和S進行去噪、簡化和歸一化等預處理[17],并使它們有相同數(shù)量的采樣點;然后采用基于NN的點云配準算法實現(xiàn)兩個顱骨的粗配準;最后采用改進的ICP算法實現(xiàn)顱骨U和S的細配準。
通過將未知顱骨U與300個顱骨進行配準,找到了U的一個最為相似的參考顱骨S1,如圖1(b)所示,部分不能正確配準的顱骨如圖1(c)—(e)所示。從圖1可見,顯然顱骨S1比S2、S3、S4具有更高的分辨率,而且顱骨S4的尺度更小。未知顱骨U與顱骨S1—S4的配準結(jié)果如圖2所示。
圖1 未知顱骨U及部分參考顱骨S1—S4
圖2 U和S1—S4的配準結(jié)果
從圖2的配準結(jié)果來看,未知顱骨U和顱骨S1可以正確配準,和顱骨S2、S3、S4不能正確配準。因此,顱骨S1就可以作為未知顱骨U的參考顱骨,即參考顱骨S1的面貌即可作為未知顱骨U的復原參考面貌。為了進一步驗證該改進ICP算法在配準精度和速度方面的性能,基于前面粗配準的結(jié)果,再分別采用ICP算法、ICP-DAF算法[18]和WICP算法[14]進行顱骨細配準。4種細配準算法的配準結(jié)果見表1。
表1 細配準算法的配準結(jié)果
顱骨配準是顱面復原的一個重要步驟,其配準精度將直接影響到顱面復原的正確性。為了提高顱骨配準的精度和速度,本文提出一種先粗配準再細配準的層次化顱骨點云配準方法。首先采用基于NN的點云配準算法實現(xiàn)顱骨粗配準,然后采用添加了模擬退火系數(shù)的改進ICP算法實現(xiàn)顱骨的細配準。與ICP算法相比,該改進ICP算法具有更高的配準精度和速度,可以實現(xiàn)顱骨的最終精確配準。因此可以認為該由粗到細點云配準方法是一種有效的顱骨配準方法。但是由于該方法沒有考慮噪聲和外點對配準的影響,因此對噪聲含量較大的顱骨配準效果不佳。在今后的研究中,需要進一步考慮噪聲、外點、存在顱骨缺損等多種因素對顱骨配準結(jié)果的影響,提出更加快速、高精度、穩(wěn)健性強的顱骨配準方法,并將其應用于顱骨面貌復原研究中。