王梓凌 張震 王一璋 周哲海
1.北京信息科技大學,光電測試技術及儀器教育部重點實驗室;2.北京盛想科技有限公司
線結(jié)構光3D智能相機因其成像速度快、精度高等優(yōu)勢在人工智能、工業(yè)檢測、人臉支付、VR/AR等領域獲得了廣泛的應用。搭建了一種線結(jié)構光3D智能相機成像系統(tǒng),開展了數(shù)據(jù)獲取及處理的理論和實驗研究,使用Python作為編程語言,使用Numpy、OpenCV、Open3D、Math等庫,結(jié)合相機標定方法、光平面標定方法和線結(jié)構光三維重構理論,編寫了三維重構算法,實現(xiàn)了三維重構。相對于已有的數(shù)據(jù)處理算法,該算法具有速度更快、精度更高的優(yōu)勢,體現(xiàn)了較大的應用價值。
隨著信息技術的不斷發(fā)展,特別是人工智能技術的迅猛發(fā)展,3D信息獲取已經(jīng)成為當前信息獲取和處理的關鍵,3D智能相機或深度相機逐漸成為獲得物體3D信息的主要技術手段。3D智能相機根據(jù)其深度數(shù)據(jù)計算方式進行分類,主要分為結(jié)構光相機、雙目立體視覺相機與TOF相機,結(jié)構光相機又包括雙目結(jié)構光和散斑結(jié)構光等類型[1-3]。其中,目前發(fā)展比較成熟且應用最廣泛的技術為基于結(jié)構光的三維成像技術[4]。結(jié)構光三維成像的硬件主要由相機和投射器組成,結(jié)構光就是通過投射器投射到被測物體表面的主動結(jié)構信息,如激光條紋、格雷碼、正弦條紋等;然后,通過單個或多個相機拍攝被測表面即得結(jié)構光圖像;最后,基于三角測量原理經(jīng)過圖像三維解析計算從而實現(xiàn)三維重建。基于結(jié)構光的三維成像,實際上是三維參數(shù)的測量與重現(xiàn),主要是區(qū)別于純粹的像雙目立體視覺之類的被動三維測量技術,因而被稱為主動三維測量。總體而言,結(jié)構光主要可以分為兩類:線掃描結(jié)構光、面陣結(jié)構光。線掃描結(jié)構光較之面陣結(jié)構光較為簡單,精度也比較高,在工業(yè)中廣泛用于物體體積測量、三維成像等領域。
線結(jié)構光三維成像技術的研究已有20多年的歷史[5-6],其真正快速發(fā)展主要源于體感游戲。2010年,微軟公司推出了體感游戲硬件產(chǎn)品“Kinect”,它之所以可以讓游戲用戶完全脫離游戲控制器,僅僅是簡單地通過虛擬語音和各種移動式的手勢就能操縱Xbox360游戲機,是因為該游戲機器里面裝配有紅外攝像頭、紅外結(jié)構光激光投影器等多種圖像傳感器。紅外結(jié)構光激光投影器將30萬個不同紅外線發(fā)射光點同時投射出來到一個待觀測場景上,紅外攝像頭可以快速拍攝到并得到這些紅外反射圖像信息,由此可以對被拍攝物體進行三維重構。2017年9月,蘋果公司發(fā)布的iPhone X使得該技術又受到了極大關注。iPhone X獨特的“劉海”上已經(jīng)集成了大量的電子元器件,他們共同組成了Face-ID部件,F(xiàn)ace-ID的組件中包含了紅外線攝像頭、泛光燈、距離強度傳感器、環(huán)境光強度傳感器、聽筒、麥克風、前置攝像頭和紅外線點陣投影器,其運作的一個主要原理也與Kinect類似,是通過直接使用紅外線點陣投影器將數(shù)萬個肉眼幾乎看不到的紅外線光點直接投射到用戶的臉上,從而獲取三維數(shù)據(jù)、分析數(shù)據(jù)并繪制出用戶的三維面譜。iPhone X的巨大成功標志著三維光學圖像傳感器已經(jīng)全面的走入了普通民眾的視野里,手機、移動穿戴設備的研發(fā)制造商們也立馬主動跟進,許多國內(nèi)手機廠家及時地趕上了這一大波進入新興設備市場的研發(fā)熱潮。小米8作為目前公認的國內(nèi)首款可以通過人臉識別技術解鎖的國產(chǎn)高端移動智能手機,其人臉識別模塊使用的三維結(jié)構光技術是以色列Mantis Vision公司提供的;而后正式發(fā)布的OPPO Find X則是直接采用國內(nèi)奧比中光公司的三維結(jié)構光傳感器硬件和國內(nèi)曠視科技公司提供的算法;而在華為的手機Mate20 Pro上的三維人臉結(jié)構光傳感技術則是基于華為自主研究的算法。迄今為止,三維智能人臉識別解鎖技術已經(jīng)成為所有中低高檔智能手機的統(tǒng)一標配。
本項目搭建了一種基于DOE的線結(jié)構光3D智能相機成像系統(tǒng),開展了數(shù)據(jù)獲取及數(shù)據(jù)處理算法研究,相對于已有的數(shù)據(jù)處理算法,該算法具有速度更快、精度更高的優(yōu)勢,體現(xiàn)了較大的應用價值。
線激光掃描三維重構理論是基于光學三角測量原理。線激光器向被測物體發(fā)射一條光束,光束所受到的調(diào)制作用主要來自于被測物體表面深度的變化影響和物理間隙的影響,對于攝像機采集到的圖像而言,對應的情況就是畸變和不連續(xù)性,當物體表面的深度出現(xiàn)增大的時候,畸變的程度也會出現(xiàn)增大,物體表面的物理間隙對應的就是圖像的不連續(xù)性,固定線激光器和攝像機兩者之間的距離或相對位置,為了對物體表面的形狀和輪廓進行重構,需要采用的方式是光條的二維畸變圖像坐標。因為光束與被測物體表面的交點是光束上的眾多光點,因此可以形成超級多的三角幾何約束關系,這使得測量的信息量大量增加,可顯著提高三維重構的精確度。
圖1是搭建的線結(jié)構光3D智能相機的成像系統(tǒng)結(jié)構示意圖。該3D成像系統(tǒng)的部件包括:一個羅技的c270攝像頭,物理分辨率為720p;一個波長為650nm,功耗為10mW的一字激光器;一個木頭小椅子作為被測物體;兩張矩形內(nèi)框圖;一臺裝有Ubuntu系統(tǒng)和Pycharm的筆記本用來控制攝像頭的拍攝和數(shù)據(jù)處理。

圖1 線結(jié)構光3D智能成像系統(tǒng)結(jié)構示意圖Fig.1 Schematic diagram of 3D smart imaging system based on line structured light
三維重構算法主體主要分為三個步驟:確定空間平面,得到平面間的單應性轉(zhuǎn)換矩陣;找到激光光點,標出激光光點密集區(qū)域,使用DBSCAN算法把密度聚類中的留下,其余去掉;最后使用上兩步的結(jié)果進行三維重構。
論文所用的三維重構算法主要使用了Math、OpenCV、Open3D、Numpy等庫,如圖2所示。其中,sklearn.cluster庫中的DBSCAN算法具有非常重要的作用,這種方法本質(zhì)上是一種空間聚類算法,是建立在密度的基礎上。如果某些區(qū)域的密度滿足要求,采用這種算法可以將這個區(qū)域表示為簇,可以采用任意形狀的簇表示噪聲的空間數(shù)據(jù)庫,采用密度相連點的最大集合可以表示簇。換句話說,以一個選中的樣本點為中心,以給定的半徑畫圓,這個圓圈內(nèi)樣本點個數(shù)達到最少是對應的就是滿足要求的樣本點,相應的就是密度相連點的最大集合。如果在這個圓圈內(nèi)存在很多樣本點,在這種情況下,內(nèi)部樣本點將作為這個圓圈的圓心,進一步會重復上面的步驟,重新畫圓以重新圈出樣本點,這就類似傳銷一樣,一直去發(fā)展下線,以預先規(guī)定的值為標準,當傳遞的圓圈對應的樣本點數(shù)量低于這個標準的時候,將會停止這個過程,則核心點對應的就是起始的點,則邊界點對應的就是停下位置處的點,停止后還在圓外的點為離群點。

圖2 算法使用的庫Fig.2 Database for DBSCAN algorithm
規(guī)定每個圓的半徑設為1,圓內(nèi)最少包含的點數(shù)設為6個點,如圖2所示。運行結(jié)束后,效果如圖3所示,可以看出圖中共有6個簇,分別對應6種顏色,而沒有顏色的點,就是離群點。

圖3 設置參數(shù)(a)及運行結(jié)果(b)Fig.3 Set parameter(a)and operation results(b)
本論文采用的系統(tǒng)中的相機位置是固定不變的,故采用經(jīng)典的標定方法——張正友標定法對重構中使用的相機進行標定。制作如圖4(a)所示的標定板,標定板由6行8列48個正方形組成。調(diào)整棋盤格標定紙和攝像頭的相對位置,并將棋盤格標定紙擺放成不同的姿勢,用攝像頭采集不同擺放姿勢,不同角度的棋盤格照片,這樣可以得到更準確的鏡頭畸變參數(shù)。為了使結(jié)果更加準確,總共拍攝了81張不同姿勢的標定板的照片,如圖4(b)所示。

圖4 棋盤格標定板(a)及不同姿勢的標定板(b)Fig.4 Checkerboard calibration board (a) and arrangements with different orientation (b)
本文使用了圖像處理OpenCV開源庫中的函數(shù)編程對棋盤格提取角點和亞像素角點,如圖5所示。對所有圖片都標出角點后,就可以得到相機的內(nèi)參數(shù)和鏡頭的畸變參數(shù),結(jié)果數(shù)據(jù)存儲在Calibration文件夾中的intrinsics.xml里。

圖5 標定板的角點提取Fig.5 Corner extraction of calibration board
經(jīng)過上述過程,獲得了相機的標定結(jié)果。其中相機的內(nèi)參數(shù)如表1所示,鏡頭畸變參數(shù)如表2所示。
雖然理論上使用3幅不同角度,不同姿態(tài)的棋盤格圖像就可以完成標定,但是實際上棋盤格間角度差異過小就會影響其標定精準度,因此使用多少幅圖像來標定也需要研究一下。通過表1和表2的數(shù)據(jù)可知,使用3、4、6、12幅圖像時,因為選取圖像數(shù)量少,選取的圖像間差距也可能比較小的緣故,導致相機參數(shù)和鏡頭畸變參數(shù)都與30、50、81張時差距比較大,因而不能采用;30、50、81幅時,相機參數(shù)差距不大,但是鏡頭畸變參數(shù)30、50幅的與81幅的差距巨大,考慮到使用的不同姿態(tài),不同角度的棋盤格圖像越多,鏡頭畸變參數(shù)越準確,所以最終選擇81幅圖像時的相機參數(shù)和鏡頭畸變參數(shù)作為相機標定的結(jié)果。圖6是最終的三維重建結(jié)果,證明了算法的有效性。

圖6 三維重構及結(jié)果Fig.6 3D reconstruction and results

表1 不同圖像幅數(shù)相機參數(shù)Tab.1 Camera parameters with different frames

表2 不同圖像幅數(shù)鏡頭畸變參數(shù)Tab.2 Lens distortion parameters for different image frames
論文簡要介紹了線結(jié)構光掃描三維重構原理,闡述了DBSCAN算法,并使用點云數(shù)據(jù)進行三維重構。然后使用搭建的系統(tǒng)拍攝被測物圖像,對相機進行標定,對比了不同圖像幅數(shù)下相機內(nèi)參和鏡頭畸變參數(shù)的數(shù)據(jù),分析了數(shù)據(jù)差異的原因并最終選定81幅圖像的數(shù)據(jù)。然后對激光光束進行提取,并識別出桌面和墻面的矩形框,得到被測物體的三維圖像。結(jié)果表明,本文提出的三維重構算法具有可執(zhí)行性,可達到比較快的三維重構,具有一定的實際應用價值。
論文研究工作得到了國家自然科學基金(61875237)北京長城學者支持計劃項目(CIT&TCD20190323)、北京青年拔尖人才支持計劃項目(Z2019042)和北京市實培計劃項目的支持。