一種基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于點云數(shù)據(jù)特征提取技術(shù)領(lǐng)域,特別涉及一種基于三維點云數(shù)據(jù)的旋轉(zhuǎn) 體擬合方法及裝置。
【背景技術(shù)】
[0002] 三維激光掃描技術(shù)又被稱為實景復(fù)制技術(shù),其通過高速激光掃描測量的方法獲取 物體表面的三維點云數(shù)據(jù),具有實時、動態(tài)、主動性、高密度、高精度等特點。如何快速而自 動地對點云數(shù)據(jù)進行處理,是國內(nèi)外學(xué)者研究的重點。其中,從三維點云數(shù)據(jù)中提取物體的 特征數(shù)據(jù)點是極為關(guān)鍵性的一部分,其結(jié)果直接影響到點云的識別、分割、重采樣、配準、曲 面重建等過程。提取物體的點云數(shù)據(jù)特征點,最初采用的是區(qū)域增長法、邊界檢測法以及兩 者相結(jié)合的方法。目前,提取物體的點云數(shù)據(jù)特征點主要采用以下幾種典型的方法:RANSAC 算法、最小二乘法、基于線性幾何的方法以及逆向工程中普遍采用的表面擬合方法。
[0003] 國外很多學(xué)者已經(jīng)對物體的點云數(shù)據(jù)特征點提取進行了大量的研究。例如, Helmut Pottmann等人采用線性幾何的方法來獲取旋轉(zhuǎn)體、螺旋面等物體的特征,但是該方 法計算過程過于復(fù)雜;In-Kwon Lee采用移動最小二乘的方法來獲取點云數(shù)據(jù)中物體的輪 廓線數(shù)據(jù),并采用加權(quán)最小二乘的優(yōu)化算法,但是提取出的輪廓會出現(xiàn)不光滑甚至失真的 情況;Schnabel R等人采用RANSAC算法來提取點云數(shù)據(jù)中物體的特征,但是該方法只能提 取一些簡單、規(guī)則的實體(直線、平面、圓、球、圓錐、圓環(huán)、圓柱等),并且魯棒性不好、效率不 尚。
[0004] 國內(nèi)一些學(xué)者對物體的點云數(shù)據(jù)特征點提取也進行了很多研究,但是主要涉及到 一些簡單的形體(直線、平面、圓、球、圓錐、圓環(huán)、圓柱),很少涉及到復(fù)雜的形體,比如旋轉(zhuǎn) 體。例如,潘國榮等人采用特征分解與選權(quán)迭代的方法來擬合空間直線,該方法可以獲取穩(wěn) 健的直線參數(shù),但是僅僅涉及到簡單的空間直線的擬合;柯映林等采用高斯映射的方法,基 于點云法線信息,來獲取旋轉(zhuǎn)體的軸向,但是該方法對于圓柱、圓錐來說,效果較好,當(dāng)處理 旋轉(zhuǎn)體時,效果不好,因此魯棒性不好,并沒有把旋轉(zhuǎn)體統(tǒng)一起來;閆雒恒等人采用RANSAC 算法,并且結(jié)合最小二乘來獲取旋轉(zhuǎn)面的軸向,但是沒有把圓柱、圓錐、圓臺統(tǒng)一起來。
[0005] 因此,現(xiàn)有技術(shù)中至少存在如下問題:對于提取旋轉(zhuǎn)體的點云數(shù)據(jù)特征點,沒有一 種魯棒性且高效性的方法可采用。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明提供了一種基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合方法及裝置,解決了現(xiàn)有技術(shù) 中對于提取旋轉(zhuǎn)體的點云數(shù)據(jù)特征點,沒有一種魯棒性且高效性的方法可采用的問題。
[0007] 本發(fā)明提供的技術(shù)方案為:
[0008] 第一方面,一種基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合方法,所述方法包括:
[0009] 獲取一旋轉(zhuǎn)體的三維點云數(shù)據(jù);
[0010]通過0ΒΒ包圍盒方法確定所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸;
[0011] 判斷所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸是否平行于三維坐標(biāo)系中的任一坐標(biāo)軸;
[0012] 當(dāng)所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸不平行于三維坐標(biāo)系中的任一坐標(biāo)軸,旋轉(zhuǎn)所述旋轉(zhuǎn)體的 三維點云數(shù)據(jù),以使所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸平行于三維坐標(biāo)系中的其中一坐標(biāo)軸,將旋轉(zhuǎn)后 的所述旋轉(zhuǎn)體三維點云數(shù)據(jù)向垂直于其余坐標(biāo)軸中任一坐標(biāo)軸的一平面上進行投影,獲取 所述旋轉(zhuǎn)體的投影輪廓;
[0013] 當(dāng)所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸平行于三維坐標(biāo)系中的其中一坐標(biāo)軸,則將所述旋轉(zhuǎn)體的 三維點云數(shù)據(jù)向垂直于其余坐標(biāo)軸中任一坐標(biāo)軸的一平面上進行投影,獲取所述旋轉(zhuǎn)體的 投影輪廓;
[0014] 提取所述投影輪廓的點云數(shù)據(jù)點,并對提取的投影輪廓點云數(shù)據(jù)點進行擬合處理 獲取所述旋轉(zhuǎn)體的母線;
[0015] 根據(jù)獲取的所述旋轉(zhuǎn)體旋轉(zhuǎn)軸以及所述旋轉(zhuǎn)體母線構(gòu)造所述旋轉(zhuǎn)體的實體模型。
[0016] 優(yōu)選的是,所述的基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合方法,所述獲取一旋轉(zhuǎn)體的三 維點云數(shù)據(jù)之后,確定所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸之前,所述方法還包括:對獲取的旋轉(zhuǎn)體三維點 云數(shù)據(jù)進行精簡處理。
[0017] 優(yōu)選的是,所述的基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合方法,所述旋轉(zhuǎn)所述旋轉(zhuǎn)體的 三維點云數(shù)據(jù),以使所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸平行于三維坐標(biāo)系中的其中一坐標(biāo)軸中,利用四 元數(shù)旋轉(zhuǎn)方法旋轉(zhuǎn)所述旋轉(zhuǎn)體的三維點云數(shù)據(jù),以使所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸平行于三維坐標(biāo) 系中的其中一坐標(biāo)軸。
[0018] 優(yōu)選的是,所述的基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合方法,當(dāng)所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸 平行于三維坐標(biāo)系中的其中一坐標(biāo)軸,則將所述旋轉(zhuǎn)體的三維點云數(shù)據(jù)向垂直于其余坐標(biāo) 軸中任一坐標(biāo)軸的一平面上進行投影,獲取所述旋轉(zhuǎn)體的投影輪廓,具體包括:
[0019] 確定投影平面AX+By+CZ+D = 0,所述投影平面為通過所述旋轉(zhuǎn)體旋轉(zhuǎn)軸的一平面, 其中,(A,B,C)為投影平面的法向,D為三維坐標(biāo)原點到投影平面的距離;
[0020] 確定所述旋轉(zhuǎn)體的頂面圓心坐標(biāo)P和所述旋轉(zhuǎn)體的底面圓心坐標(biāo)P1,另取所述投 影平面上的一點 P2,得出,(A,B,C) = (P2-P1)X(P-P1),D = -(A,B,C),P;
[0021 ]計算所述旋轉(zhuǎn)體三維點云數(shù)據(jù)中的每一點到所述投影平面的距離distance = (A, B,C,D) · (x,y,z,l),其中,(x,y,z)為所述旋轉(zhuǎn)體三維點云數(shù)據(jù)中的點坐標(biāo);
[0022]將所述旋轉(zhuǎn)體的三維點云數(shù)據(jù)向所述投影平面上進行投影,對應(yīng)的投影點為 project = (x,y,z,1)_(A,B,C,0)氺distance。
[0023]優(yōu)選的是,所述的基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合方法,所述提取所述投影輪廓 的點云數(shù)據(jù)點中,采用掃面線方式提取所述投影輪廓的點云數(shù)據(jù)點即母線初始值。
[0024]優(yōu)選的是,所述的基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合方法,所述對提取的投影輪廓 點云數(shù)據(jù)點進行擬合處理獲取所述旋轉(zhuǎn)體的母線中,采用的是二次曲線擬合所述提取的投 影輪廓點云數(shù)據(jù)點,其具體包括:
[0025] 獲取二次曲線的隱式方程Q(x,y) yhD'x+E'+F'=0,其中,Α' ,Β', C',D' ,Ε'Κ為二次曲線的系數(shù),提取的投影輪廓點云數(shù)據(jù)點為(Xl,yi)(i = l,2,3...n)^ I = (ajO最?。?/-1
[0026] 判斷所述旋轉(zhuǎn)體母線的類型,
[0027]若〇1<〇2,則將所述旋轉(zhuǎn)體的母線視為一條直線,其中,〇1為使用所述母線初始值 擬合直線時得到的中誤差,σ2為使用所述母線初始值擬合二次曲線時得到的中誤差;
[0028]若〇1>〇2,則將所述旋轉(zhuǎn)體的母線視為曲線;
[0029] 若將所述旋轉(zhuǎn)體的母線視為一條直線,則使用加權(quán)全最小二乘擬合結(jié)合特征分解 算法擬合該直線。
[0030] 另一方面,本發(fā)明提供了一種基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合裝置,所述裝置包 括:
[0031 ]獲取模塊,其用于獲取一旋轉(zhuǎn)體的三維點云數(shù)據(jù);
[0032] 確定模塊,其用于通過0ΒΒ包圍盒方法確定所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸;
[0033] 判斷模塊,其用于判斷所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸是否平行于三維坐標(biāo)系中的任一坐標(biāo) 軸;
[0034] 旋轉(zhuǎn)模塊,當(dāng)所述判斷模塊判斷所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸不平行于三維坐標(biāo)系中的任 一坐標(biāo)軸,所述旋轉(zhuǎn)模塊旋轉(zhuǎn)所述旋轉(zhuǎn)體的三維點云數(shù)據(jù),以使所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸平行 于三維坐標(biāo)系中的其中一坐標(biāo)軸;
[0035] 投影模塊,當(dāng)所述判斷模塊判斷所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸平行于三維坐標(biāo)系中的其中 一坐標(biāo)軸,則所述投影模塊將所述旋轉(zhuǎn)體的三維點云數(shù)據(jù)向垂直于其余坐標(biāo)軸中任一坐標(biāo) 軸的一平面上進行投影,獲取所述旋轉(zhuǎn)體的投影輪廓;
[0036] 提取模塊,其用于提取所述投影輪廓的點云數(shù)據(jù)點;
[0037]擬合模塊,其用于對提取的投影輪廓點云數(shù)據(jù)點進行擬合處理獲取所述旋轉(zhuǎn)體的 母線;
[0038]構(gòu)造模塊,其用于根據(jù)獲取的所述旋轉(zhuǎn)體旋轉(zhuǎn)軸以及所述旋轉(zhuǎn)體母線構(gòu)造所述旋 轉(zhuǎn)體的實體模型。
[0039]優(yōu)選的是,所述的基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合裝置,所述裝置還包括:精簡模 塊,其用于對獲取的旋轉(zhuǎn)體三維點云數(shù)據(jù)進行精簡處理。
[0040] 優(yōu)選的是,所述的基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合裝置,所述旋轉(zhuǎn)模塊旋轉(zhuǎn)所述 旋轉(zhuǎn)體的三維點云數(shù)據(jù),以使所述旋轉(zhuǎn)體的旋轉(zhuǎn)軸平行于三維坐標(biāo)系中的其中一坐標(biāo)軸 中,所述旋轉(zhuǎn)模塊采用四元數(shù)旋轉(zhuǎn)方法旋轉(zhuǎn)所述旋轉(zhuǎn)體的三維點云數(shù)據(jù),以使所述旋轉(zhuǎn)體 的旋轉(zhuǎn)軸平行于三維坐標(biāo)系中的其中一坐標(biāo)軸。
[0041] 優(yōu)選的是,所述的基于三維點云數(shù)據(jù)的旋轉(zhuǎn)體擬合裝置,當(dāng)所述判斷模塊判斷所 述旋轉(zhuǎn)體的旋轉(zhuǎn)軸平行于三維坐標(biāo)系中的其中一坐標(biāo)軸,則所述投影模塊將所述旋轉(zhuǎn)體的 三維點云數(shù)據(jù)向垂直于其余坐標(biāo)軸中任一坐標(biāo)軸的一平面上進行投影,獲取所述旋轉(zhuǎn)體的 投影輪廓,具體包括:
[0042] 所述投影模塊確定投影平面AX+By+Cz+D = 0,所述