本發(fā)明屬于計(jì)算機(jī)視覺領(lǐng)域,尤其針對(duì)場(chǎng)景三維重建,具體涉及一種基于智能手機(jī)的場(chǎng)景重建方法。
背景技術(shù):
場(chǎng)景重建作為虛擬現(xiàn)實(shí)研究的一個(gè)重要領(lǐng)域,室內(nèi)環(huán)境的虛擬實(shí)現(xiàn)近年來(lái)引起了研究者的濃厚興趣。室內(nèi)環(huán)境的虛擬漫游有著很強(qiáng)的應(yīng)用背景,比如,虛擬的辦公室、博物館、洞窟等已應(yīng)用于遠(yuǎn)程辦公、教育、娛樂和旅游等行業(yè)?;趫D像的場(chǎng)景重建技術(shù)采用彩色相機(jī)和深度相機(jī)同時(shí)獲取場(chǎng)景中的顏色信息和深度信息,同傳統(tǒng)三維掃描設(shè)備相比,基于圖像的場(chǎng)景重建技術(shù)所誕生的系統(tǒng)具有價(jià)格低廉、結(jié)構(gòu)小巧、使用方便,且能實(shí)時(shí)捕獲物體表面的深度與彩色信息等優(yōu)點(diǎn)。
一些傳統(tǒng)的三維重構(gòu)方法是存在局限性的,比如算法的精度會(huì)受到光照、物體遮擋等因素的影響。而在采用深度相機(jī)之后,人們就可以在室內(nèi)條件下獲得比過(guò)去更為準(zhǔn)確可靠的深度信息。這樣,研究人員就不必花費(fèi)大量精力在深度計(jì)算方面,而能夠著重于利用rgb-d(彩色及深度)圖像解決物體的識(shí)別、場(chǎng)景的分類等更高層的問題,從而在某種程度上加快研究的進(jìn)程。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明主要考慮現(xiàn)有的基于rgb-d的場(chǎng)景重建系統(tǒng)有體積相對(duì)較大難以隨身攜帶,成本高難以普及等缺點(diǎn),如目前市面上的昂貴的kinect等大體積的設(shè)備能滿足重建,但卻不能滿足便攜的要求。同時(shí)要滿足目前市面上虛擬現(xiàn)實(shí)頭戴顯示器的要求,設(shè)備就必須達(dá)到體積小,便于攜帶等功能。
本發(fā)明考慮到虛擬現(xiàn)實(shí)頭戴顯示器需要裝配智能手機(jī),同時(shí)智能手機(jī)上有彩色相機(jī),因此,采用了智能手機(jī)上彩色相機(jī)結(jié)合體積小的基于結(jié)構(gòu)光的深度相機(jī)structuresensor的方式,并針對(duì)該方式設(shè)計(jì)出了一種基于ios(蘋果公司開發(fā)的移動(dòng)操作系統(tǒng))的場(chǎng)景重建系統(tǒng)。
場(chǎng)景三維重建系統(tǒng)主要分為兩大階段:
相機(jī)標(biāo)定與校準(zhǔn)階段和相機(jī)定位及三維重建階段。相機(jī)標(biāo)定與配準(zhǔn)階段:本發(fā)明需要設(shè)計(jì)app調(diào)用智能手機(jī)的相機(jī),并將深度相機(jī)連接到智能手機(jī)上獲取深度信息,對(duì)兩個(gè)相機(jī)進(jìn)行標(biāo)定,得到他們的內(nèi)參與外參,計(jì)算出兩個(gè)相機(jī)的空間相對(duì)位置關(guān)系,之后通過(guò)算法將兩個(gè)圖像序列合并成一個(gè)包含rgb-d四通道的圖像序列。相機(jī)定位及三維重建階段:該階段本發(fā)明需要對(duì)rgb-d圖像序列進(jìn)行進(jìn)一步的優(yōu)化處理,本發(fā)明設(shè)計(jì)采用圖像修補(bǔ)算法對(duì)每幀圖像進(jìn)行補(bǔ)洞填充,并設(shè)計(jì)針對(duì)本發(fā)明的去噪算法來(lái)濾除因光強(qiáng)不均,特殊材料光反射等造成的噪聲。再將優(yōu)化后的圖像序列進(jìn)行特征點(diǎn)的提取,并通過(guò)orb算法進(jìn)行特征描述,然后通過(guò)所得到的相鄰幀的特征信息進(jìn)行配準(zhǔn),得到相機(jī)的姿態(tài)變換矩陣,建立三維空間點(diǎn)云(x,y,z,r,g,b)并顯示場(chǎng)景的三維圖像。
本發(fā)明將所有的算法與步驟如調(diào)用攝像頭,調(diào)用深度相機(jī),校準(zhǔn)相機(jī)內(nèi)參與外參,彩色相機(jī)與深度相機(jī)配準(zhǔn)算法,三維點(diǎn)云建立等,都集成在一個(gè)app中,同時(shí)簡(jiǎn)化了其操作達(dá)到了快速有效,簡(jiǎn)單易行,并將結(jié)果直接顯示在手機(jī)顯示屏中。
本發(fā)明具體按照以下步驟實(shí)施:
步驟1、在智能手機(jī)中安裝相機(jī)調(diào)用模塊,通過(guò)相機(jī)調(diào)用模塊調(diào)用智能手機(jī)上的彩色相機(jī),用彩色相機(jī)從各個(gè)設(shè)定角度拍攝棋盤格,利用棋盤格上設(shè)定的多個(gè)坐標(biāo)的特征點(diǎn),計(jì)算智能手機(jī)上彩色相機(jī)的內(nèi)部相機(jī)參數(shù)矩陣:
其中,fx=f/dx,fy=f/dy分別是彩色相機(jī)坐標(biāo)x軸和y軸上的歸一化焦距;f是彩色相機(jī)的焦距,dx和dy分別表示彩色相機(jī)平面x軸和y軸上單位像素的尺寸大小。cx和cy則表示光學(xué)中心,即彩色相機(jī)光軸與圖像平面的交點(diǎn),通常位于圖像中心處,故其值被取為相機(jī)分辨率的一半。
步驟2、將深度相機(jī)structuresensor連接到智能手機(jī)上并固定,通過(guò)相機(jī)調(diào)用模塊調(diào)用該深度相機(jī),通過(guò)深度相機(jī)從各個(gè)角度對(duì)棋盤格進(jìn)行拍攝,計(jì)算得到深度相機(jī)對(duì)應(yīng)的內(nèi)部相機(jī)參數(shù)矩陣t’,矩陣形式同公式(1),此外,深度相機(jī)還需要另外計(jì)算一個(gè)縮放因子s,該縮放因子s為深度相機(jī)所得到的相平面上各像素點(diǎn)的數(shù)值與實(shí)際空間中實(shí)際距離的比例值。
下式為深度相機(jī)所對(duì)應(yīng)的相機(jī)坐標(biāo)系到空間坐標(biāo)系的轉(zhuǎn)換公式:
其中,(u,v)分別為二維平面即二維圖片上各個(gè)像素點(diǎn)位置的橫縱坐標(biāo),在拍攝得到二維圖片后,設(shè)圖片左上角為原點(diǎn)即可確定圖片各像素點(diǎn)的坐標(biāo),(x,y,z)為圖片中各像素點(diǎn)所對(duì)應(yīng)的三維空間坐標(biāo)。
步驟3、通過(guò)彩色相機(jī)和深度相機(jī)同時(shí)拍攝棋盤格,得到兩個(gè)相機(jī)拍攝空間中同一點(diǎn)所得的平面坐標(biāo),利用公式(2)將其轉(zhuǎn)換為空間坐標(biāo),并利用公式(4)進(jìn)行配準(zhǔn),得到兩個(gè)相機(jī)相對(duì)應(yīng)的外部參數(shù)矩陣,即公式(3)。由于空間中某一點(diǎn)對(duì)應(yīng)到兩個(gè)相機(jī)平面中時(shí),其在兩個(gè)相機(jī)坐標(biāo)系中的坐標(biāo)位置是不同的,因此需通過(guò)該外部參數(shù)矩陣,即利用公式(4)將其配準(zhǔn)到相同的坐標(biāo)上,使得在相同的坐標(biāo)中,本發(fā)明能得到場(chǎng)景中該點(diǎn)的顏色信息和距離信息。
外部參數(shù)矩陣形式如下:
其中,r是大小為3×3的旋轉(zhuǎn)矩陣,t是大小為3×1的平移向量。本發(fā)明可通過(guò)將深度相機(jī)得到的空間點(diǎn)坐標(biāo)乘以旋轉(zhuǎn)矩陣r進(jìn)行旋轉(zhuǎn),再加上平移向量t,變換到對(duì)應(yīng)的彩色相機(jī)所得到的空間點(diǎn)坐標(biāo)位置。
彩色相機(jī)與深度相機(jī)所對(duì)應(yīng)的空間點(diǎn)坐標(biāo)轉(zhuǎn)換公式如下:
其中,(xc,yc,zc)為通過(guò)彩色相機(jī)轉(zhuǎn)換得到的空間點(diǎn)坐標(biāo),(xd,yd,zd)為通過(guò)深度相機(jī)轉(zhuǎn)換得到的空間點(diǎn)坐標(biāo)。
步驟4、用智能手機(jī)上的彩色相機(jī)和深度相機(jī)拍攝場(chǎng)景的全景視頻,再將視頻轉(zhuǎn)換為圖像序列即深度圖像序列和彩色圖像序列,并通過(guò)所得到的外部參數(shù)矩陣和內(nèi)部參數(shù)矩陣將兩種圖像序列合并,即將rgb三通道的彩色圖像序列與單通道的深度圖像序列合并為rgb-d四通道序列,得到合并后的圖像序列{f1,f2,f3,f4,…}。
步驟5、由于合并后的圖像序列中的圖片并不是每一個(gè)像素都能有rgb-d信息,于是需要通過(guò)圖像修復(fù)算法(alexandrutelea.animageinpaintingtechniquebasedonthefastmarchingmethod[j].journalofgraphicstools,2004,9(1):23-34.)對(duì)圖像序列進(jìn)行修補(bǔ),同時(shí)利用去噪算法來(lái)濾除因光強(qiáng)不均,特殊材料光反射等造成的噪聲,提高場(chǎng)景重建的精度。
步驟6、利用特征點(diǎn)匹配的圖像處理方法匹配圖像序列{f1,f2,f3,f4,…}中的相鄰兩幀,得到對(duì)應(yīng)的變換矩陣mi
其中,ei是大小為3×3的旋轉(zhuǎn)矩陣,gi是大小為3×1的平移向量。圖像序列{f1,f2,f3,f4,…}中相鄰兩幀圖像中,前一幀圖像的像素點(diǎn)坐標(biāo)乘以旋轉(zhuǎn)矩陣ei后再加上平移向量gi就能變換到對(duì)應(yīng)的后一幀圖像的像素點(diǎn)坐標(biāo)位置。
步驟7、由于步驟6中計(jì)算所得的mi存在累積誤差,因此需要對(duì)所有變換矩陣mi進(jìn)行全局優(yōu)化,得到最優(yōu)的ei與gi的集合,使通過(guò)變化矩陣mi計(jì)算得到的圖像與真實(shí)圖像的誤差總和最小,設(shè)置圖像序列{f1,f2,f3,f4,…}的變換矩陣優(yōu)化模型為:
其中,pi和qi是相鄰兩幀的圖像數(shù)據(jù),都包含rgb-d信息,都是以三維矩陣形式進(jìn)行存儲(chǔ),具體的大小視相機(jī)分辨率而定,同時(shí)pi為后一幀圖片數(shù)據(jù),qi為前一幀圖片數(shù)據(jù);n為視頻的總幀數(shù)。
步驟8、通過(guò)得到的圖像序列與變換矩陣建立場(chǎng)景三維空間點(diǎn)云集,設(shè)置場(chǎng)景三維點(diǎn)云數(shù)學(xué)模型為:
通過(guò)智能手機(jī)上安裝的顯示模塊,顯示公式7所計(jì)算出的場(chǎng)景三維空間點(diǎn)云集,該點(diǎn)云集中的每個(gè)點(diǎn)都包含(x,y,z,r,g,b)等6種信息,再通過(guò)仿射變換將該點(diǎn)云集顯示于智能手機(jī)的顯示屏上。
本發(fā)明方法具有的優(yōu)點(diǎn)及有益結(jié)果為:
1.本發(fā)明利用手機(jī)自帶的彩色相機(jī),結(jié)合深度相機(jī)的方式所搭建的場(chǎng)景重建系統(tǒng)能直接放入目前市面上的虛擬現(xiàn)實(shí)頭戴顯示器中,通過(guò)系統(tǒng)將現(xiàn)實(shí)場(chǎng)景顯示在虛擬世界中,解決目前vr領(lǐng)域無(wú)法進(jìn)行虛擬與現(xiàn)實(shí)場(chǎng)景有效交互的弊端。
2.本發(fā)明以手機(jī)為平臺(tái)搭建場(chǎng)景重建系統(tǒng),使得整個(gè)系統(tǒng)簡(jiǎn)單輕便,十分便于攜帶;除此之外,實(shí)現(xiàn)場(chǎng)景重建技術(shù)的成本也降低了很多只需要另行購(gòu)買一個(gè)深度相機(jī)即可。
3.本發(fā)明的其中一個(gè)難點(diǎn)是手機(jī)彩色相機(jī)與深度相機(jī)的標(biāo)定與配準(zhǔn),本發(fā)明設(shè)計(jì)了自動(dòng)的標(biāo)定與配準(zhǔn)算法并將該算法編寫入app中,能十分簡(jiǎn)單便捷得進(jìn)行兩個(gè)相機(jī)之間的配準(zhǔn)過(guò)程,同時(shí)該app集成了本發(fā)明的所有步驟,且操作簡(jiǎn)單,極大地降低了用戶的上手難度,使得本發(fā)明更容易被大眾接受和普及。
4.隨著計(jì)算機(jī)技術(shù)廣泛應(yīng)用于生產(chǎn)生活的方方面面,高效建立物體三維幾何模型的需求更加旺盛,三維重建技術(shù)成為學(xué)術(shù)界研究熱點(diǎn)。本項(xiàng)目由于使用便于攜帶的智能手機(jī)作為核心處理單元,可以通過(guò)在現(xiàn)已有的智能手機(jī)設(shè)備上實(shí)現(xiàn)場(chǎng)景的三維重建,在多個(gè)行業(yè)具有廣泛的應(yīng)用前景,且能快速便捷地實(shí)現(xiàn)場(chǎng)景的三維重建,較之已有的三維重建系統(tǒng),本發(fā)明具有更好的便攜性和可塑性。
附圖說(shuō)明
圖1是本發(fā)明所開發(fā)的基于ios的系統(tǒng)狀態(tài)流程圖;
圖2是本發(fā)明的相機(jī)標(biāo)定與校準(zhǔn)階段算法流程圖;
圖3是本發(fā)明的相機(jī)定位及三維重建階段流程圖。
具體實(shí)施方式
下面結(jié)合具體實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)的說(shuō)明。
本發(fā)明提出的基于智能手機(jī)的場(chǎng)景重建方法,按照以下步驟實(shí)施。
步驟1、設(shè)計(jì)智能手機(jī)app調(diào)用智能手機(jī)上的彩色相機(jī),將深度相機(jī)structuresensor連接到智能手機(jī)上并固定,并設(shè)計(jì)函數(shù)去啟動(dòng)該深度相機(jī),以及傳輸深度相機(jī)上得到的深度信息到手機(jī)端。編寫特定函數(shù)來(lái)捕獲特定時(shí)間點(diǎn)上的彩色相機(jī)上的rgb信息,以及深度相機(jī)上的深度信息。在圖1中,從0狀態(tài)到狀態(tài)1測(cè)試智能手機(jī)攝像頭,即彩色相機(jī)的性能得到其分辨率。連接上深度相機(jī)后,從狀態(tài)1到達(dá)狀態(tài)2,并測(cè)試深度相機(jī)的性能得到其分辨率。
步驟2、在圖1中,從狀態(tài)2到狀態(tài)3,將深度相機(jī)的模式切換為紅外模式,并同步刷新rgb圖像和紅外圖像,使兩者能在同一時(shí)間輸出數(shù)據(jù)到手機(jī)終端使所獲數(shù)據(jù)的時(shí)間統(tǒng)一。從狀態(tài)3到狀態(tài)4,通過(guò)棋盤格對(duì)齊rgb與紅外圖像,即對(duì)齊彩色相機(jī)和深度相機(jī)所獲取的圖像,對(duì)齊采用了非錯(cuò)切仿射變換。對(duì)齊圖像的目的是使分辨率不同的兩個(gè)相機(jī)輸出統(tǒng)一分辨率的圖像。對(duì)齊完成后回到狀態(tài)3。
步驟3、從狀態(tài)3到狀態(tài)5,在同步刷新rgb和紅外圖像之后,用彩色相機(jī)從各個(gè)角度自動(dòng)拍攝特定的棋盤格,并利用棋盤格上的特定坐標(biāo)的特征點(diǎn)自動(dòng)計(jì)算智能手機(jī)上彩色相機(jī)的內(nèi)部相機(jī)參數(shù)矩陣:
其中fx=f/dx,fy=f/dy分別是相機(jī)坐標(biāo)x軸和y軸上的歸一化焦距;f是相機(jī)的焦距,dx和dy分別表示相機(jī)平面x軸和y軸上單位像素的尺寸大小。cx和cy則表示光學(xué)中心,即相機(jī)光軸與圖像平面的交點(diǎn),通常位于圖像中心處,故cx和cy值被取為相機(jī)分辨率的一半。
步驟4、同樣在狀態(tài)5時(shí),當(dāng)計(jì)算完成彩色相機(jī)內(nèi)部參數(shù)矩陣后,app將自動(dòng)切換為深度相機(jī)的內(nèi)參矩陣計(jì)算模式,通過(guò)深度相機(jī)對(duì)應(yīng)的棋盤格自動(dòng)拍攝并計(jì)算得到深度相機(jī)對(duì)應(yīng)的內(nèi)部相機(jī)參數(shù)矩陣,矩陣形式同公式(1),此外,深度相機(jī)另有一個(gè)縮放因子s,該參數(shù)為深度相機(jī)所得到的相平面上各像素點(diǎn)的數(shù)值與實(shí)際空間中實(shí)際距離的比例值。
下式為深度相機(jī)所對(duì)應(yīng)的相機(jī)坐標(biāo)系到空間坐標(biāo)系的轉(zhuǎn)換公式:
步驟5、標(biāo)定完成后,從狀態(tài)5回到狀態(tài)3,深度相機(jī)從紅外模式切換成深度模式,并從狀態(tài)3回到狀態(tài)2。開始對(duì)彩色相機(jī)和深度相機(jī)進(jìn)行配準(zhǔn),計(jì)算兩個(gè)相機(jī)相對(duì)應(yīng)的外部參數(shù)矩陣。把空間中某一點(diǎn)對(duì)應(yīng)到兩個(gè)相機(jī)平面中時(shí),其在兩個(gè)相機(jī)坐標(biāo)系中的坐標(biāo)位置是不同的,通過(guò)該外部參數(shù)矩陣,本發(fā)明可以將其配準(zhǔn)到相同的坐標(biāo)上,使得在相同的坐標(biāo)中,本發(fā)明能得到現(xiàn)實(shí)場(chǎng)景中某一點(diǎn)的顏色信息和距離信息。
外部參數(shù)矩陣形式如下:
其中r是大小為3×3的旋轉(zhuǎn)矩陣,t是大小為3×1的平移向量。
彩色相機(jī)與深度相機(jī)所對(duì)應(yīng)的的空間點(diǎn)坐標(biāo)轉(zhuǎn)換公式如下:
其中(xc,yc,zc)為通過(guò)彩色相機(jī)轉(zhuǎn)換得到的空間點(diǎn)坐標(biāo),(xd,yd,zd)為通過(guò)深度相機(jī)轉(zhuǎn)換得到的空間點(diǎn)坐標(biāo)。
步驟6、在完成外參的計(jì)算后,狀態(tài)2啟動(dòng)場(chǎng)景重建模式,用智能手機(jī)上的彩色相機(jī)和深度相機(jī)拍攝場(chǎng)景的全景視頻,再將視頻轉(zhuǎn)換為圖像序列即深度圖像序列和彩色圖像序列,并通過(guò)所得到的外部參數(shù)矩陣和內(nèi)部參數(shù)矩陣將兩種圖像序列合并,得到合并后的圖像序列{f1,f2,f3,f4,…}。
步驟7、由于合并后的圖像序列中的圖片并不是每一個(gè)像素都能有rgb-d信息,于是需要通過(guò)fmm圖像修復(fù)算法對(duì)圖像序列進(jìn)行修補(bǔ),同時(shí)利用高斯低通濾波去噪算法來(lái)濾除噪聲,提高場(chǎng)景重建的精度。
步驟8、利用特征點(diǎn)匹配的圖像處理方法計(jì)算所得圖像序列相鄰幀之間的變換矩陣
特征點(diǎn)匹配過(guò)程利用了orb算法進(jìn)行每一幀圖像的特征點(diǎn)檢測(cè)與描述,并利用flann與ransac算法進(jìn)行特征點(diǎn)匹配的優(yōu)化。之后對(duì)所有變換矩陣mi進(jìn)行全局優(yōu)化,設(shè)置rgb-d圖像序列的變換矩陣優(yōu)化模型為:
其中pi和qi是相鄰兩幀的圖像數(shù)據(jù),都包含rgb-d信息,都是以三維矩陣形式進(jìn)行存儲(chǔ),具體的大小視相機(jī)分辨率而定,同時(shí)pi為后一幀圖片數(shù)據(jù),qi為前一幀圖片數(shù)據(jù),;n為視頻的總體幀數(shù)。ei是大小為3×3的矩陣,gi是大小為3×1的向量。
步驟9、通過(guò)得到的rgb-d圖像序列以及圖像序列每一幀所對(duì)應(yīng)的變換矩陣建立場(chǎng)景三維空間點(diǎn)云集,設(shè)置場(chǎng)景三維點(diǎn)云數(shù)學(xué)模型為:
app定義上式所計(jì)算出的場(chǎng)景三維空間點(diǎn)云集,該點(diǎn)云中的每個(gè)點(diǎn)都包含(x,y,z,r,g,b)等6維信息,即空間中某點(diǎn)的三維坐標(biāo)與顏色信息。最后app將該點(diǎn)云顯示于智能手機(jī)的顯示屏上,展現(xiàn)場(chǎng)景的三維模型,用戶可以通過(guò)滑動(dòng)觸摸屏轉(zhuǎn)動(dòng)視角觀看場(chǎng)景的每一個(gè)角落。