本發(fā)明涉及測(cè)量方法,尤其涉及一種基于kinect深度相機(jī)測(cè)量方法。
背景技術(shù):
目前,工程測(cè)量具備時(shí)間性較強(qiáng),作業(yè)環(huán)境復(fù)雜,涉及的其它專業(yè)知識(shí)較多,對(duì)測(cè)量人員的專業(yè)知識(shí)和技術(shù)能力要求較高的特點(diǎn),比如基坑測(cè)力量通常是配合降水和開挖過程,具有鮮明的時(shí)間性,測(cè)量結(jié)果往往是動(dòng)態(tài)變化的,幾小時(shí)前的測(cè)量結(jié)果都有可能失去意義。因此,如何在規(guī)定時(shí)間最大化還原物體模型、測(cè)量物體尺度信息已成為該技術(shù)的研究熱點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中的問題,本發(fā)明提供了一種基于kinect深度相機(jī)測(cè)量方法。
本發(fā)明提供了一種基于kinect深度相機(jī)測(cè)量方法,包括以下步驟:
s1、深度影像數(shù)據(jù)的轉(zhuǎn)換;
s2、計(jì)算全局的攝像頭的姿勢(shì)信息;
s3、將從已知姿勢(shì)信息的攝像頭產(chǎn)生的深度影像數(shù)據(jù)融合為代表攝像頭視野范圍內(nèi)的景物的立方體;
s4、從傳感器視點(diǎn)位置對(duì)重建立方體進(jìn)行光線投射,重建的點(diǎn)陣云產(chǎn)生渲染了的三維重建立方體;
s5、計(jì)算測(cè)量點(diǎn)之間的距離。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟s1中深度影像數(shù)據(jù)的轉(zhuǎn)換包括以下子步驟:
s11、獲取原始深度及彩色數(shù)據(jù),將kinect中獲取的原始深度幀數(shù)據(jù)轉(zhuǎn)換為以米為單位的浮點(diǎn)數(shù)據(jù);
s12、對(duì)浮點(diǎn)數(shù)據(jù)進(jìn)行優(yōu)化,通過獲取攝像頭的坐標(biāo)信息,將浮點(diǎn)數(shù)據(jù)轉(zhuǎn)換為和kinect攝像頭朝向一致的點(diǎn)云數(shù)據(jù);
s13、對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行閾值化及降噪處理,表面情況通過使用alignpointclouds函數(shù)獲取。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟s2包括以下子步驟:
s21、采用nuifusionalignpointclouds方法將從重建對(duì)象計(jì)算得來的點(diǎn)云數(shù)據(jù)與從kinect深度影像數(shù)據(jù)中獲取的點(diǎn)云數(shù)據(jù)進(jìn)行配準(zhǔn);
s22、采用aligndepthtoreconstruction方法對(duì)重建立方體進(jìn)行處理,獲得追蹤結(jié)果,如果場(chǎng)景中的追蹤被中斷,那么將攝像頭的位置和上一次的攝像頭位置對(duì)齊,繼續(xù)進(jìn)行追蹤。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟s3包括以下子步驟:
s31、三維點(diǎn)云配準(zhǔn),找出兩組點(diǎn)云數(shù)據(jù)集的空間變換關(guān)系,即旋轉(zhuǎn)和平移向量,然后將這兩組點(diǎn)云數(shù)據(jù)變換到同一的坐標(biāo)系下,使得兩者之間的交集區(qū)域重疊;
s32、逐幀對(duì)深度數(shù)據(jù)融合,同時(shí)并行運(yùn)行平滑算法進(jìn)行去噪。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟s31包括以下子步驟:
s311、計(jì)算最近點(diǎn),即對(duì)于集合u中的每一個(gè)點(diǎn),在集合p中都找出距該點(diǎn)最近的對(duì)應(yīng)點(diǎn),設(shè)集合p中由這些對(duì)應(yīng)點(diǎn)組成的新點(diǎn)集為q={qi,i=0,1,2,…,n};
s312、計(jì)算兩個(gè)點(diǎn)集q和u的重心位置坐標(biāo),并進(jìn)行點(diǎn)集中心化生成新的點(diǎn)集;由新的點(diǎn)集計(jì)算正定矩陣n,并計(jì)算正定矩陣n的最大特征值及其最大特征向量;
s313、由于最大特征向量等價(jià)于殘差平方和最小時(shí)的旋轉(zhuǎn)四元數(shù),將四元數(shù)轉(zhuǎn)換為旋轉(zhuǎn)矩陣r;在旋轉(zhuǎn)矩陣r被確定后,由于平移向量t是兩個(gè)點(diǎn)集的重心差異,通過兩個(gè)坐標(biāo)系中的重心點(diǎn)和旋轉(zhuǎn)矩陣確定;其中r是3×3的旋轉(zhuǎn)矩陣,t是3×1的平移矩陣;
s314、計(jì)算坐標(biāo)變換,即對(duì)于集合u,用配準(zhǔn)變換矩陣r,t進(jìn)行坐標(biāo)變換,得到新的點(diǎn)集u1,即u1=ru+t;
s315、計(jì)算u1與q之間的均方根誤差,如小于預(yù)設(shè)的極限值ε,則結(jié)束,否則,以點(diǎn)集u1替換u,重復(fù)上述步驟。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟s4包括以下子步驟:
s41、從直接光照的微多邊形生成點(diǎn)云;
s42、計(jì)算點(diǎn)云的n-1次反彈光照;
s43、根據(jù)點(diǎn)云計(jì)算并渲染間接光照。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟s5包括以下子步驟;
s51、從生成的點(diǎn)云中讀取測(cè)量點(diǎn)的點(diǎn)云信息;
s52、根據(jù)測(cè)量要求,根據(jù)點(diǎn)云所包含信息進(jìn)行長(zhǎng)度和曲率計(jì)算。
本發(fā)明的有益效果是:具備良好的動(dòng)態(tài)性能,不需要高性能配置的計(jì)算機(jī)設(shè)備,可以實(shí)現(xiàn)對(duì)物體的在線實(shí)時(shí)重建,操作簡(jiǎn)易,成本低廉,測(cè)量精度高,時(shí)效性高,靈活性強(qiáng),可以滿足普通用戶日常生活中的目標(biāo)場(chǎng)景的數(shù)字化再現(xiàn)。
附圖說明
圖1是本發(fā)明一種基于kinect深度相機(jī)測(cè)量方法的測(cè)量框圖。
圖2是本發(fā)明一種基于kinect深度相機(jī)測(cè)量方法的非線性攝像機(jī)透視投影模型圖。
圖3是本發(fā)明一種基于kinect深度相機(jī)測(cè)量方法的kinectv2從sdk獲取彩色數(shù)據(jù)流程圖。
圖4是本發(fā)明一種基于kinect深度相機(jī)測(cè)量方法的kinectv2從sdk獲取深度數(shù)據(jù)流程圖。
圖5是本發(fā)明一種基于kinect深度相機(jī)測(cè)量方法的icp算法基本流程圖。
具體實(shí)施方式
下面結(jié)合附圖說明及具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步說明。
如圖1至圖5所示,一種基于kinect深度相機(jī)測(cè)量方法,包括以下步驟:
(1)、原始數(shù)據(jù)獲取及尺度轉(zhuǎn)換:利用kinectv2設(shè)備獲取原始深度及彩色數(shù)據(jù),sdk將kinect中獲取的原始深度幀數(shù)據(jù)轉(zhuǎn)換為以米為單位的浮點(diǎn)數(shù)據(jù);
(2)、空間視角轉(zhuǎn)換:對(duì)深度數(shù)據(jù)進(jìn)行優(yōu)化,通過獲取攝像頭的坐標(biāo)信息,將這些浮點(diǎn)數(shù)據(jù)轉(zhuǎn)換為和kinect攝像頭朝向一致的點(diǎn)云數(shù)據(jù);
(3)、點(diǎn)云預(yù)處理:點(diǎn)云數(shù)據(jù)閾值化及降噪處理,表面情況通過使用alignpointclouds函數(shù)獲??;
(4)、點(diǎn)云配準(zhǔn):采用nuifusionalignpointclouds方法將從重建對(duì)象計(jì)算得來的點(diǎn)云與從kinect深度影像數(shù)據(jù)中獲取的點(diǎn)云進(jìn)行配準(zhǔn);
(5)、點(diǎn)云追蹤:采用aligndepthtoreconstruction方法對(duì)重建立方體進(jìn)行處理時(shí)能夠獲得更高精度的追蹤結(jié)果,如果場(chǎng)景中的追蹤被中斷,那么需要將攝像頭的位置和上一次的攝像頭位置對(duì)齊才能繼續(xù)進(jìn)行追蹤;
(6)、點(diǎn)云融合:將這兩組點(diǎn)云數(shù)據(jù)變換到同一的坐標(biāo)系下,使得兩者之間的交集區(qū)域重疊,逐幀對(duì)深度數(shù)據(jù)融合,同時(shí)并行運(yùn)行平滑算法進(jìn)行了去噪,具體為:三維點(diǎn)云配準(zhǔn),找出兩組點(diǎn)云數(shù)據(jù)集的空間變換關(guān)系,即旋轉(zhuǎn)和平移向量,然后將這兩組點(diǎn)云數(shù)據(jù)變換到同一的坐標(biāo)系下,使得兩者之間的交集區(qū)域重疊;逐幀對(duì)深度數(shù)據(jù)融合,同時(shí)并行運(yùn)行平滑算法進(jìn)行了去噪,其中,三維點(diǎn)云配準(zhǔn)過程如下:
a1)、計(jì)算最近點(diǎn),即對(duì)于集合u中的每一個(gè)點(diǎn),在集合p中都找出距該點(diǎn)最近的對(duì)應(yīng)點(diǎn),設(shè)集合p中由這些對(duì)應(yīng)點(diǎn)組成的新點(diǎn)集為q={qi,i=0,1,2,…,n};
a2)、計(jì)算兩個(gè)點(diǎn)集q和u的重心位置坐標(biāo),并進(jìn)行點(diǎn)集中心化生成新的點(diǎn)集;由新的點(diǎn)集計(jì)算正定矩陣n,并計(jì)算n的最大特征值及其最大特征向量;
a3)、由于最大特征向量等價(jià)于殘差平方和最小時(shí)的旋轉(zhuǎn)四元數(shù),將四元數(shù)轉(zhuǎn)換為旋轉(zhuǎn)矩陣r;在旋轉(zhuǎn)矩陣r被確定后,由平移向量t僅僅是兩個(gè)點(diǎn)集的重心差異,可以通過兩個(gè)坐標(biāo)系中的重心點(diǎn)和旋轉(zhuǎn)矩陣確定;其中r是3×3的旋轉(zhuǎn)矩陣,t是3×1的平移矩陣;
a4)、計(jì)算坐標(biāo)變換,即對(duì)于集合u,用配準(zhǔn)變換矩陣r,t進(jìn)行坐標(biāo)變換,得到新的點(diǎn)集u1,即u1=ru+t;
a5)、計(jì)算u1與q之間的均方根誤差,如小于預(yù)設(shè)的極限值ε,則結(jié)束,否則,以點(diǎn)集u1替換u,重復(fù)上述步驟;
(7)、點(diǎn)云渲染:從直接光照的微多邊形生成點(diǎn)云,計(jì)算點(diǎn)云的n-1次反彈光照;(如果只需一次反彈,則該步可以省略),根據(jù)點(diǎn)云計(jì)算并渲染間接光照;
(8)、點(diǎn)云測(cè)量:根據(jù)測(cè)量位置讀取點(diǎn)云信息,測(cè)量長(zhǎng)度、曲率、角度信息。
本發(fā)明提供的一種基于kinect深度相機(jī)測(cè)量方法,主要是基于icp的
改進(jìn)包括以下步驟:
(1)、點(diǎn)選擇:根據(jù)深度傳感器產(chǎn)生的點(diǎn)云數(shù)據(jù),需要選擇部分點(diǎn)云數(shù)據(jù)作為樣本用于計(jì)算兩組點(diǎn)云數(shù)據(jù)之間的最優(yōu)轉(zhuǎn)換,然后在整個(gè)數(shù)據(jù)集中測(cè)試這個(gè)轉(zhuǎn)換。根據(jù)源點(diǎn)云數(shù)據(jù)集,已被證明其中一部分點(diǎn)更適合于作樣本點(diǎn),因?yàn)檫@些店更容易識(shí)別進(jìn)行匹配。針對(duì)rgb-d數(shù)據(jù),提出了利用sift(尺度不變特征變換)特征進(jìn)行樣本點(diǎn)選擇并被證明很有效。對(duì)于具有凹槽的平面目標(biāo)物體,進(jìn)行樣本點(diǎn)采樣應(yīng)確保采樣點(diǎn)法向量的角度是廣泛分布的。對(duì)于應(yīng)使用哪種采樣方法應(yīng)根據(jù)每個(gè)具體的問題進(jìn)行選擇;
(2)、點(diǎn)匹配:icp算法中最關(guān)鍵的一步即是對(duì)應(yīng)點(diǎn)的匹配問題。主要的方法就是要在另一個(gè)點(diǎn)云集中找出最鄰近的點(diǎn)或找出源數(shù)據(jù)點(diǎn)與目標(biāo)表面(網(wǎng)格點(diǎn)云匹配)的交集。對(duì)于基于sift特征點(diǎn)的采樣,同樣可以通過sift特征進(jìn)行排序,利用蠻力搜索或k-d樹的方式加速查找最接近的匹配點(diǎn),并且要求兩者之間的法向量?jī)?nèi)積大于一個(gè)設(shè)定的閾值;
(3)、點(diǎn)對(duì)加權(quán):由于一些點(diǎn)對(duì)匹配程度優(yōu)于其他點(diǎn),用一些更明智的方式給匹配程度好的點(diǎn)對(duì)賦予權(quán)值,從而改善轉(zhuǎn)換矩陣的結(jié)果質(zhì)量。一種方法是對(duì)應(yīng)點(diǎn)之間距離越小分配的權(quán)值越大。另外一種方法是針對(duì)rgb-d的數(shù)據(jù)考慮該點(diǎn)的彩色值,或考慮其sift特征點(diǎn)的距離,低距離比高距離具有的權(quán)值更大。其他加權(quán)方法還包括:常數(shù)權(quán)值、法向量越一致權(quán)值越大、根據(jù)深度傳感器的可靠性分配權(quán)值等方法。最后預(yù)計(jì)可用于噪聲的權(quán)重配對(duì);
(4)、點(diǎn)對(duì)去除:主要是排除影響誤差最小化的離群點(diǎn),這些離群點(diǎn)包括來自于傳感器噪聲或來自于兩個(gè)連續(xù)幀的深度圖像不重疊的區(qū)域。這個(gè)步驟對(duì)于配準(zhǔn)的精度影響很大,但不能改善配準(zhǔn)的收斂速度。處理這種問題的主要方法就是去除去除點(diǎn)云邊緣上的數(shù)據(jù)點(diǎn),因?yàn)檫@些點(diǎn)最可能處于非重疊的區(qū)域。還有其他方法如去除點(diǎn)對(duì)距離超過設(shè)定閾值的點(diǎn)對(duì);
(5)、誤差度量和最小化。當(dāng)數(shù)據(jù)點(diǎn)已被選擇并匹配,點(diǎn)對(duì)加權(quán)和誤點(diǎn)對(duì)去除后,兩個(gè)點(diǎn)云集合需要用合適的誤差度量來表達(dá),需要被最小化。最直接的方式就是考慮每個(gè)點(diǎn)對(duì)平方距離和。假定兩個(gè)輸入點(diǎn)云集:
上式中
案例分析
基于mfc應(yīng)用軟件平臺(tái),使用本發(fā)明測(cè)量一個(gè)工業(yè)機(jī)器人完成如下實(shí)驗(yàn)。
通過導(dǎo)出stl圖形,通過solidworks測(cè)量工具測(cè)量物體尺寸如下:長(zhǎng)方形物體為0.31864m*0.50751m*0.15262m,實(shí)際物體長(zhǎng)度為0.321m*0.501m*0.163m,誤差在0.02m之內(nèi)。
從實(shí)驗(yàn)結(jié)果看,本發(fā)明具備測(cè)量精度高,時(shí)效性高,靈活性強(qiáng),成本低廉特性。
本發(fā)明提供的一種基于kinect深度相機(jī)測(cè)量方法,主要分為兩個(gè)階段,前期進(jìn)行粗略配準(zhǔn)估計(jì),后期再進(jìn)行精細(xì)配準(zhǔn)估計(jì)。首先是通過提取特征點(diǎn)和計(jì)算點(diǎn)特征直方圖,借助k-d樹進(jìn)行對(duì)應(yīng)點(diǎn)估計(jì),利用隨機(jī)抽樣一致方法去除無匹配點(diǎn),得到一個(gè)粗配準(zhǔn)對(duì)齊,然后是利用迭代最鄰近點(diǎn)算法進(jìn)行精細(xì)配準(zhǔn),利用非線性算子求解空間轉(zhuǎn)換矩陣。在融合階段,借助面元表達(dá)方法將配準(zhǔn)后的點(diǎn)云進(jìn)行融合并去除雜點(diǎn)和外點(diǎn),采取多邊形網(wǎng)格表示和紋理映射技術(shù),獲得可視化的真實(shí)物體三維模型結(jié)果,最后,根據(jù)測(cè)量位置讀取點(diǎn)云信息,測(cè)量長(zhǎng)度、曲率、角度信息。因此,本發(fā)明對(duì)kinect重建模型進(jìn)行改進(jìn),改進(jìn)后的方法可以實(shí)現(xiàn)對(duì)物體的在線實(shí)時(shí)重建,操作簡(jiǎn)易,成本低廉,測(cè)量精度高,時(shí)效性高,靈活性強(qiáng)。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。