陳國軍,孔李燕,張清偉,楊 靜
(中國石油大學(xué)(華東) 計(jì)算機(jī)與通信工程學(xué)院,山東 青島 266580)
近年來,點(diǎn)模型的發(fā)展優(yōu)勢越發(fā)明顯,以點(diǎn)云為研究對象的計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)視覺成為研究熱點(diǎn),利用掃描技術(shù)得到的點(diǎn)云數(shù)據(jù)具有快速簡單、信息量大、容易存儲等優(yōu)點(diǎn)。當(dāng)前對得到的點(diǎn)云進(jìn)行修改、分析、重用已成為重要的研究課題,點(diǎn)云分割也由此提出。點(diǎn)云分割是將復(fù)雜的三維點(diǎn)云模型分割成為數(shù)目有限的、各自連通的、相對簡單的、方便其他程序處理應(yīng)用的子部分。點(diǎn)云分割是一項(xiàng)具有挑戰(zhàn)性的研究課題。2011年引入Point Cloud Library(PCL),這個庫包含先進(jìn)的3D感知算法。硬件和PCL的發(fā)展使得點(diǎn)云處理受到了越來越多的關(guān)注。
文中利用Kinect相機(jī)得到點(diǎn)云數(shù)據(jù),經(jīng)過點(diǎn)云配準(zhǔn)得到點(diǎn)云模型,利用背景分割并結(jié)合圖像分割對點(diǎn)云模型進(jìn)行點(diǎn)云模型分割得到目標(biāo)點(diǎn)云。
點(diǎn)云分割是通過一定的方法將點(diǎn)云數(shù)據(jù)中屬性相同或相近且空間位置相鄰的點(diǎn)劃分為一類,點(diǎn)云分割可以對單幀點(diǎn)云進(jìn)行分割,也可以對點(diǎn)云模型進(jìn)行分割。隨著研究的深入,點(diǎn)云分割的算法得到不斷的補(bǔ)充和完善。常用的點(diǎn)云模型分割算法主要包括基于邊緣的分割算法、基于區(qū)域的分割算法、基于聚類的分割算法以及混合分割算法等。
點(diǎn)云分割是對大規(guī)模的點(diǎn)云數(shù)據(jù)進(jìn)行分割,簡化點(diǎn)云數(shù)據(jù)以便后期對點(diǎn)云數(shù)據(jù)的加工處理。文獻(xiàn)[1]介紹了點(diǎn)云分割的定義、分類和應(yīng)用情況,分析比較了幾類典型的點(diǎn)云分割算法,給出了各方法的理論、特點(diǎn)和應(yīng)用范圍。
基于邊緣的分割算法,認(rèn)為法向量或曲率的突變是一個區(qū)域的邊界,被封閉的邊界包圍的這個區(qū)域是最終的分割結(jié)果,基于邊緣的分割算法最重要的是找到區(qū)域邊界。文獻(xiàn)[2]構(gòu)建符號距離函數(shù)估算點(diǎn)云的平均曲率,利用3D活動輪廓模型實(shí)現(xiàn)點(diǎn)云模型分割。由于噪聲影響,點(diǎn)云模型的邊緣定位精度差,使得基于邊緣的分割算法存在不足。
基于區(qū)域的分割算法包含兩種思路,一種是區(qū)域增長算法[3-4],選定種子點(diǎn)按照增長策略向鄰域擴(kuò)散直至不存在連續(xù)點(diǎn)集。一種是層次分解算法,假設(shè)所有點(diǎn)集屬于同一目標(biāo),采用八叉樹[5]、KD樹[6]等進(jìn)行層次分解,得到不同細(xì)節(jié)的分割結(jié)果。
基于聚類的分割方法,將點(diǎn)云分割看成具有一定特征參數(shù)的數(shù)據(jù)點(diǎn)的分類過程。文獻(xiàn)[7-9]分別采用MeanShift聚類、譜聚類以及模糊聚類實(shí)現(xiàn)點(diǎn)云模型的分割。王天召等[10]將K-mean用于配準(zhǔn)算法。杜廷偉等[11]提出基于高斯混合模型聚類的深度數(shù)據(jù)分割方法,利用高斯混合模型對三維點(diǎn)云的法向量進(jìn)行聚類,然后利用隨機(jī)抽樣一致性算法對各個聚類進(jìn)行平面擬合,實(shí)現(xiàn)對場景數(shù)據(jù)的平面提取。基于聚類的分割方法,不同的聚類能得到不同的結(jié)果。
混合分割一般包括多個步驟,基于邊緣和基于區(qū)域等方法混合使用可以彌補(bǔ)對應(yīng)不足。其他方法如隨機(jī)抽樣一致性算法,是將點(diǎn)集分成局內(nèi)點(diǎn)和局外點(diǎn),通過參數(shù)形成模型。李娜等[12]將點(diǎn)云的r半徑密度引入RANSAC點(diǎn)云分割算法中,結(jié)合角度和距離對分割算法進(jìn)行改進(jìn)。胡偉等[13]將種子點(diǎn)的選取和點(diǎn)到距離的標(biāo)準(zhǔn)差引入RANSAC算法中,對隨機(jī)抽樣一致性算法進(jìn)行了改善。趙成偉等[14]針對點(diǎn)云粘連現(xiàn)象,結(jié)合三維點(diǎn)云的空間分布和顏色信息,引入過分割方法將點(diǎn)云集劃分為超體素,利用歸一化方法完成粘連區(qū)域的目標(biāo)分割,這一方法對樹木具有良好的分割效果。文獻(xiàn)[15]提出一種平面曲面生長算法非常適合用來分割平面。
三維模型分割的綜述文章可以參考文獻(xiàn)[16-18],這些工作大多基于三角網(wǎng)格模型,與網(wǎng)格模型相比,點(diǎn)云模型分割方法較少。
文中提出一種基于RGB-D的背景點(diǎn)云目標(biāo)分割方法。利用背景幀結(jié)合圖像分割進(jìn)行點(diǎn)云分割,從而得到獨(dú)立目標(biāo)物體。
Kinect相機(jī)既可以得到物體的顏色信息,也可以得到物體的深度信息,但由于二者的分辨率不同,不能直接將顏色信息和深度信息一一對應(yīng)。文中通過相機(jī)標(biāo)定的方法,求得圖像坐標(biāo)系和空間坐標(biāo)系的變換矩陣,從而得到顏色信息深度信息一一對應(yīng)的點(diǎn)云數(shù)據(jù)。
采用Kinect相機(jī),首先拍攝一幀背景點(diǎn)云A0,然后擺放前景物體拍攝得到A1,隨后對物體進(jìn)行旋轉(zhuǎn)拍攝得到物體的多角度三維點(diǎn)云數(shù)據(jù)A(2,3,…)。旋轉(zhuǎn)完成后,將相機(jī)固定到與第一組背景點(diǎn)云相對的位置,拍攝得到一幀數(shù)據(jù)B1,后將前景物體移開,再進(jìn)行拍攝得到背景點(diǎn)云B0,由此可得到兩組背景數(shù)據(jù)A0和B0。通過Kinect獲得的三維場景的點(diǎn)云信息,既包含深度信息,也包含顏色信息,且深度信息和顏色信息一一對應(yīng),如圖1所示。

圖1 采集得到的顏色圖像和深度圖像
由于環(huán)境、振動、測量、設(shè)備本身的測量誤差,得到的點(diǎn)云存在噪聲和空洞,所以需要對點(diǎn)云進(jìn)行去噪。采用直通濾波,對點(diǎn)云設(shè)置深度閾值范圍d0 利用統(tǒng)計(jì)濾波,設(shè)置好統(tǒng)計(jì)時查詢鄰近點(diǎn)的點(diǎn)數(shù)和是否為離群點(diǎn)的閾值后,去除離群點(diǎn)。 利用下采樣對獲得的噪點(diǎn)進(jìn)行去除。體素網(wǎng)格濾波器可以達(dá)到向下采樣同時不破壞點(diǎn)云本身幾何結(jié)構(gòu)的功能,減少點(diǎn)云數(shù)量。 根據(jù)上述步驟完成對點(diǎn)云的預(yù)處理。效果如圖2所示。 圖2 數(shù)據(jù)預(yù)處理 Kinect相機(jī)一次只能獲取一個角度的點(diǎn)云信息,要得到完整的三維物體信息,需要拍攝得到不同角度的點(diǎn)云數(shù)據(jù)。點(diǎn)云配準(zhǔn)就是求兩個點(diǎn)云數(shù)據(jù)的旋轉(zhuǎn)平移矩陣,將源點(diǎn)云變換到目標(biāo)點(diǎn)云的坐標(biāo)系下。可以表示為以下方程:pt=R·ps+T,其中pt、ps是源點(diǎn)云與目標(biāo)點(diǎn)云的一組對應(yīng)點(diǎn)。配準(zhǔn)分為粗配準(zhǔn)與精配準(zhǔn)兩部分。 粗配準(zhǔn)的目的是找到近似的配準(zhǔn)變換,使得配準(zhǔn)后的點(diǎn)云盡可能接近,縮小兩個點(diǎn)云之間的差異,為點(diǎn)云的精確配準(zhǔn)提供更好的初始位置。 文中利用快速點(diǎn)特征直方圖(FPFH)[19]對點(diǎn)云進(jìn)行粗配,得到點(diǎn)云的粗配變換矩陣。在計(jì)算FPFH特征時,首先對樣本點(diǎn)pq計(jì)算與它的k鄰域內(nèi)每個點(diǎn)之間的三個特征值,統(tǒng)計(jì)輸出成一個簡化的點(diǎn)特征直方圖。然后分別對其k鄰域中的每個點(diǎn),計(jì)算得到自己的FPFH,通過式1計(jì)算得到最終的FPFH。 (1) 其中,權(quán)重ωi表示一個給定的度量空間中樣本點(diǎn)pq與鄰近點(diǎn)pk之間的距離。 精配準(zhǔn)是在已知一個旋轉(zhuǎn)平移矩陣的前提下,進(jìn)一步計(jì)算得到更加精確的旋轉(zhuǎn)平移矩陣,從而達(dá)到改善配準(zhǔn)的效果。ICP[20]及其各種改進(jìn)算法是比較經(jīng)典的點(diǎn)云配準(zhǔn)算法。它搜尋兩組點(diǎn)云數(shù)據(jù)尋找對應(yīng)的最近點(diǎn)對,計(jì)算最優(yōu)剛體變換,不斷迭代直到滿足收斂條件,從而得到最佳旋轉(zhuǎn)平移矩陣。文中利用經(jīng)典ICP算法將各角度的點(diǎn)云數(shù)據(jù)配準(zhǔn)到背景點(diǎn)云幀A0(B0)得到完整的點(diǎn)云模型M,并保存各角度點(diǎn)云數(shù)據(jù)到背景幀的變換矩陣集合T。因?yàn)榫仃囎儞Q存在誤差,所以要盡可能少的迭代變換,提高配準(zhǔn)精度。 文中參考背景減法,利用背景點(diǎn)云幀對相同參考系下的配準(zhǔn)點(diǎn)云根據(jù)深度信息進(jìn)行背景分割得到前景。 遍歷配準(zhǔn)點(diǎn)云模型M和背景幀A0(B0),比較M中點(diǎn)pi(i=1,2,…,m)和A0(B0)中點(diǎn)qj(j=1,2,…,n)的XYZ值,其中m、n為點(diǎn)集M和點(diǎn)集A0(B0)中點(diǎn)的個數(shù)。將配準(zhǔn)模型M中與背景點(diǎn)集A0中的XY相近Z值大于背景點(diǎn)云的點(diǎn)集刪除,以達(dá)到分割背景和前景的目的。具體方程式如下: |p[i].x-q[j].x|<0.01 (2) |p[i].y-q[j].y|<0.01 (3) |p[i].z-q[j].z|<0.01 (4) 滿足上述三個方程的配準(zhǔn)點(diǎn)集M中的點(diǎn)pi(0 由于背景幀只是相機(jī)拍攝的一個角度,深度值大于背景的點(diǎn)集不能確定是前景還是背景。因而背景分割只能分割深度值小于背景的前景。需要注意的是背景幀和配準(zhǔn)點(diǎn)云必須在同一個參考系下。 圖3中,左為背景點(diǎn)云,即A0和B0,中間為對應(yīng)參考系下的配準(zhǔn)點(diǎn)云,右為背景分割后得到的前景部分。 圖3 背景分割實(shí)驗(yàn)效果 若場景中背景前只有一個物體,通過背景分割即可直接完成點(diǎn)云的目標(biāo)分割。 文中結(jié)合點(diǎn)云分割和圖像分割,利用Grab Cut得到圖像文件中目標(biāo)的顏色信息,采用比較RGB值和法向量的方法,得到目標(biāo)點(diǎn)云數(shù)據(jù)。 Crab Cut算法[21-23]是Graph Cut的改進(jìn)版,對Graph Cut不斷進(jìn)行迭代。該算法利用圖像中的紋理(顏色)信息和邊界(反差)信息,只要少量的用戶交互操作即可得到良好的分割效果。采用RGB三通道混合高斯模型來對目標(biāo)和背景進(jìn)行建模,不斷交互迭代分割估計(jì)和模型參數(shù)學(xué)習(xí)。 Graph Cut將分割問題描述為像素zi(1 α=argminE(α,θ) (5) 其中,α為像素的標(biāo)號;E為能量函數(shù);θ為前景/背景GMM概率密度模型。 具體步驟如下: (1)利用Graph Cut對背景幀圖像進(jìn)行圖像分割,得到目標(biāo)物體result.jpg的RGB值,保存為txt文件,如圖4所示。保存矩形對角兩點(diǎn)p1(x1,y1)和p2(x2,y2)。 圖4 Grab Cut分割效果 (2)讀取配準(zhǔn)后的點(diǎn)云文件,在x1 R=|p.r-q.r|/256 (6) G=|p.g-q.g|/256 (7) B=|p.b-q.b|/256 (8) diff=sqrt(R*R+G*G+B*B) (9) 其中,p為圖像分割得到的RGB的一點(diǎn);q為點(diǎn)云數(shù)據(jù)中的一點(diǎn);sqrt表示開平方;diff表示兩點(diǎn)的相似度。 (3)以步驟2得到的點(diǎn)集中任一點(diǎn)p開始,在x1 (10) (11) 其中,k為三角面的個數(shù);ni為第i個三角面的法向量。點(diǎn)p的法向量由鄰近點(diǎn)形成的三角面的法向量共同決定。 (12) 將法向量相同的點(diǎn)進(jìn)行標(biāo)記保存,最后得到的點(diǎn)集即為目標(biāo)物體的點(diǎn)云數(shù)據(jù)。 為了檢驗(yàn)文中算法的實(shí)驗(yàn)效果,使用Kinect 2.0深度相機(jī);使用的開發(fā)工具有VS2013,PCL開發(fā)庫,OpenCV開發(fā)庫;使用的數(shù)據(jù)為自己拍攝的點(diǎn)云數(shù)據(jù)。利用文中算法、RANSAC算法和區(qū)域生長算法對點(diǎn)云模型進(jìn)行了點(diǎn)云分割。 利用背景分割對配準(zhǔn)得到的點(diǎn)云模型進(jìn)行分割,可以有效分割出深度值小于背景的前景物體。對前景物體的目標(biāo)分割,在給定范圍內(nèi)按照點(diǎn)的鄰近信息和法向量、顏色屬性,也得到了單獨(dú)的目標(biāo)物體。效果如圖5所示。 對于RANSAC隨機(jī)采樣一致性方法[12-13],PCL幾乎支持所有的幾何形狀,作為點(diǎn)云分割的基礎(chǔ)算法,RANSAC強(qiáng)大且必收斂,但是只可以分割較規(guī)則的平面、圓柱體或是球體。利用該方法可以簡單地分割出規(guī)則問題,卻不能分割出目標(biāo)物體杯子。 圖5 文中算法分割效果 區(qū)域生成算法[24],由于原始數(shù)據(jù)所有物體通過立方體承接,即所有物體相連,如圖6左所示,使得區(qū)域生成算法分割無效。基于顏色的區(qū)域生成算法,由于光照、陰影等原因,不能精確分割出目標(biāo)物體,只能將顏色分割作為輔助方法,效果如圖6右所示。 圖6 區(qū)域生成算法分割效果 對于點(diǎn)云分割得到目標(biāo),有兩種思路,先配準(zhǔn)完成后對點(diǎn)云模型進(jìn)行分割得到目標(biāo),也可以對單幀點(diǎn)云先分割得到不同目標(biāo)的不同側(cè)面,然后進(jìn)行點(diǎn)云配準(zhǔn)。但是先分割后配準(zhǔn),由于點(diǎn)云數(shù)據(jù)量少,特征匹配少,會影響配準(zhǔn)精度,先分割后配準(zhǔn)適用于大規(guī)模的點(diǎn)云數(shù)據(jù)。文中對配準(zhǔn)完成后的點(diǎn)云數(shù)據(jù)進(jìn)行點(diǎn)云分割。 對三維場景進(jìn)行點(diǎn)云分割得到目標(biāo)點(diǎn)云。提出了背景減法和將圖像分割和點(diǎn)云分割相結(jié)合的方法,通過實(shí)驗(yàn)驗(yàn)證了算法的有效性。該算法結(jié)合圖像分割,有效避免了點(diǎn)云數(shù)據(jù)的過分割和欠分割現(xiàn)象。算法的不足在于點(diǎn)云配準(zhǔn)的精度會影響目標(biāo)點(diǎn)云精度,由于物體的相互遮擋,點(diǎn)云數(shù)據(jù)不完整,使得最后分割出來的目標(biāo)也不完整,后期可以根據(jù)目標(biāo)物體的屬性對目標(biāo)點(diǎn)云進(jìn)行修復(fù)。文中利用Grab Cut對圖像進(jìn)行分割,利用圖像RGB對點(diǎn)云進(jìn)行比較得到目標(biāo)點(diǎn)云,后期可以利用Grab Cut直接對點(diǎn)云數(shù)據(jù)進(jìn)行選擇分割,不需要借助圖像。
2.2 點(diǎn)云配準(zhǔn)
3 點(diǎn)云分割
3.1 背景分割

3.2 目標(biāo)分割


4 實(shí)驗(yàn)與結(jié)果分析


5 結(jié)束語