林雅南,陳婉清,鄭世玨,楊 青
1.廈門大學(xué) 信息學(xué)院,福建 廈門361005
2.華中師范大學(xué) 計算機學(xué)院,武漢430079
增強現(xiàn)實技術(shù)(Augmented Reality,AR)是一種將計算機渲染生成的虛擬場景與真實世界中的景象無縫合成的技術(shù)。它融合了圖像處理、注冊追蹤、人機交互等多項技術(shù),能夠擴增用戶的感知范圍,讓人機交互更加自然流暢[1-2]。作為新興的智能傳播媒介,增強現(xiàn)實技術(shù)在歷史文化領(lǐng)域的應(yīng)用得到了國內(nèi)外學(xué)者的廣泛關(guān)注。Brett等人將增強現(xiàn)實技術(shù)應(yīng)用于文物陳展,開發(fā)了支持手電光線交互的文物展示系統(tǒng)[3]。Albert等人利用增強現(xiàn)實技術(shù),實現(xiàn)了圣克萊蒙特教堂壁畫的修復(fù)性展示[4]。王涌天等人將戶外AR 系統(tǒng)與圓明園遺址結(jié)合,實現(xiàn)了觀水法、東西水塔、大水法等古建筑的數(shù)字化復(fù)原[5]??讋P以大明宮數(shù)字化展示為例,探討了增強現(xiàn)實技術(shù)在陜西歷史遺跡虛擬展示中的創(chuàng)新應(yīng)用[6]。
目前,增強現(xiàn)實技術(shù)在歷史文化領(lǐng)域的應(yīng)用主要集中于古跡復(fù)原及數(shù)字化遺產(chǎn)保護[7],在中國歷史典故展示方面則應(yīng)用較少。作為中華民族語言藝術(shù)的瑰寶,中國歷史典故語言精煉、寓意深刻,凝聚著古人豐富的知識和智慧。中國歷史典故的傳統(tǒng)展示方式主要包括文字記載、電視節(jié)目、地方戲劇等等[8-10]。這些展示方式雖具有一定的情景感與趣味性,但仍然存在著互動性差、代入感低等不足之處[11]。通過增強現(xiàn)實技術(shù)與中國歷史典故的結(jié)合,能夠加深人們對歷史背景的理解,促進歷史文化的普及和傳播。基于以上背景,本文設(shè)計并實現(xiàn)了基于AR技術(shù)的中國歷史典故展示系統(tǒng)。通過創(chuàng)設(shè)歷史場景與現(xiàn)實環(huán)境并存的復(fù)合情境,可實現(xiàn)中國歷史典故的形象化、立體化呈現(xiàn),有助于歷史教育、博物館展覽、對外漢語教學(xué)等領(lǐng)域的展示形式拓展。
系統(tǒng)基于C#語言開發(fā),采用3ds Max創(chuàng)建三維模型,采用OpenCVForUnity實現(xiàn)SIFT-BRISK三維注冊模塊,使用Unity3D引擎完成虛擬場景搭建及人機交互設(shè)計。
(1)3ds Max
3ds Max 是Autodesk 公司開發(fā)的三維動畫渲染和制作軟件,在廣告、影視、建筑設(shè)計、工業(yè)設(shè)計等領(lǐng)域應(yīng)用廣泛。對于歷史典故涉及的人物、器物、建筑等展示元素,系統(tǒng)采用3ds Max 對其進行三維建模仿真,并以.fbx的文件格式導(dǎo)出。
(2)OpenCVForUnity
OpenCVForUnity 是OpenCV 在Unity3D 中的擴展包,封裝了OpenCV主模塊及OpenCV_contrib模塊的功能。本文使用OpenCVForUnity 實現(xiàn)了SIFT-BRISK 特征檢測與匹配算法,并將其應(yīng)用于系統(tǒng)的圖像識別模塊。
(3)Unity3D
Unity3D 引擎是一款跨平臺的專業(yè)開發(fā)引擎,能夠?qū)崿F(xiàn)三維視頻游戲、建筑可視化、實時三維動畫等內(nèi)容的創(chuàng)建。系統(tǒng)通過Unity3D導(dǎo)入虛擬模型,進行歷史典故虛擬場景的構(gòu)建。在場景交互部分,采用C#腳本進行互動的設(shè)計與控制。
系統(tǒng)主要包括五個模塊:圖像采集模塊、圖像識別模塊、虛實注冊模塊、合成顯示模塊、人機交互模塊。系統(tǒng)框架如圖1所示。
圖1 系統(tǒng)框架圖
(1)圖像采集模塊
利用外設(shè)攝像頭獲取真實場景的信息,將真實場景的視頻數(shù)據(jù)流保存為圖像。對目標圖像進行預(yù)處理,從而避免外部環(huán)境對圖像特征提取的影響。
(2)圖像識別模塊
對圖像采集模塊獲得的圖像及設(shè)備數(shù)據(jù)庫中的模板圖像同時進行特征檢測及匹配,包括特征提取、特征描述、特征匹配、篩除誤匹配。
(3)虛實注冊模塊
通過確定攝像機的內(nèi)外參數(shù)完成對攝像機的標定,確定虛擬信息在真實場景中的位置,實現(xiàn)虛擬對象和真實場景的配準。本文系統(tǒng)疊加的虛擬信息包括三維模型、視頻資料、文字介紹、圖片素材。
(4)合成顯示模塊
根據(jù)虛實注冊結(jié)果,將虛擬信息與真實場景進行融合顯示,并通過顯示屏呈現(xiàn)給用戶。本文系統(tǒng)采用的顯示設(shè)備包括Android 系統(tǒng)的智能手機、PC 機、XLOONG Techlens T2 AR眼鏡,如圖2所示。
圖2 顯示設(shè)備示意圖
(5)人機交互模塊
通過單指點擊、單指移動、雙指縮放的形式,實現(xiàn)用戶與虛擬對象的互動。
系統(tǒng)通過攝像頭獲取真實場景的視頻流數(shù)據(jù),實時采集視頻幀圖像并對其進行預(yù)處理。圖像預(yù)處理包括灰度化及濾波?;叶然瘓D像,能夠降低圖像處理的計算量。采用中值濾波方法去除噪聲,可以減弱外界環(huán)境的干擾,提高圖像質(zhì)量。對于采集圖像及設(shè)備數(shù)據(jù)庫中的模板圖像,分別采用SIFT-BRISK 算法進行特征檢測及描述,將兩幅圖像的特征信息進行漢明距離匹配,使用RANSAC 算法篩除誤匹配。若匹配失敗,則繼續(xù)與其余模板圖像進行匹配;若匹配成功,則根據(jù)攝像機的位姿數(shù)據(jù)完成三維注冊。根據(jù)注冊信息,利用Unity3D疊加模型、視頻、圖片等虛擬素材,并將虛實渲染結(jié)果通過顯示屏呈現(xiàn)給用戶。當(dāng)屏幕上出現(xiàn)虛擬素材時,用戶可以與虛擬對象進行AR交互。系統(tǒng)的工作流程如圖3所示。
在特征檢測階段,采用SIFT 算法[12-13]提取特征點,利用BRISK[14]二進制描述算子進行特征描述。根據(jù)描述信息,通過漢明距離進行特征匹配并利用RANSAC算法[15]完成誤匹配的篩除。圖像識別模塊的流程參見圖3中“圖像識別模塊”。
圖3 系統(tǒng)工作流程圖
2.1.1 SIFT-BRISK特征檢測
SIFT算法對于仿射變換及噪聲具有良好的魯棒性,提取的特征點數(shù)量多、精度高,但耗時較長[16]。在所有的二進制特征描述子中,BRISK算子具有最高的特征匹配精度,在尺度、視角、旋轉(zhuǎn)變換條件下的綜合性能最佳[17-18]。
采用SIFT 算法檢測特征點,能夠彌補原始BRISK算法提取特征點較少的缺陷。將提取的SIFT特征點用BRISK算子進行描述,能夠在保證檢測精度的同時有效降低匹配耗時,提升整體計算效率。綜合以上,系統(tǒng)采用了SIFT 及BRISK 結(jié)合的特征檢測算法。利用SIFT算法提取具有尺度、旋轉(zhuǎn)、光照不變性的特征點,采用BRISK 算子生成512 bit 的二進制特征描述符。圖4 是SIFT-BRISK 算法對灰度圖的特征檢測結(jié)果,左為模板圖像,右為待識別圖像。
圖4 基于SIFT-BRISK算法的特征檢測結(jié)果
2.1.2 漢明距離匹配
特征匹配階段,對于SIFT-BRISK 算法檢測的特征點,使用漢明距離衡量圖像之間的相似程度。假設(shè)模板圖像的BRISK 二進制描述子為P1,待識別圖像的BRISK 二進制描述子為P2,則P1=x0x1…x511,P2=y0y1…y511,漢明距離計算圖像相似程度如公式(1)所示,D(P1,P2)越小,說明圖像越相似。
目前,許多研究提出了特征匹配的優(yōu)化算法,例如,快速四點一致性點云粗配準算法[19]、基于一致性決策邊界的特征匹配[20]、基于網(wǎng)格多密度聚類的特征匹配等[21]。這些方法雖然在計算效率、匹配性能等方面具有一定優(yōu)勢,但算法編碼過程較為復(fù)雜,更適用于匹配精度要求較高的場景。本文旨在提出一種中國歷史典故展示的AR 解決方案,重點考慮算法實現(xiàn)的簡易性和普適性。由于漢明距離匹配具有簡單快速、易于實現(xiàn)的優(yōu)點,且能夠滿足本文系統(tǒng)的圖像匹配需要,故采用漢明距離完成圖像匹配,如圖5所示。
圖5 漢明距離匹配結(jié)果
2.1.3 RANSAC篩除
由圖5可知,基于漢明距離的初始匹配存在大量的誤匹配。為了校正匹配結(jié)果,采用RANSAC 算法對誤匹配進行篩除。RANSAC 算法通過迭代來尋找能夠支持更多內(nèi)點的、更優(yōu)的模型,算法的基本思想如下:
(1)考慮一個模型M,一個樣本集P。n為初始化模型參數(shù)所需的最小樣本數(shù),集合P的樣本數(shù)滿足Num(P)>n。在P中隨機抽取n個樣本作為內(nèi)點集S,并用S對模型M進行初始化。
(2)構(gòu)造模型M的內(nèi)點集S*,包括子集S、余集CPS=PS中與模型M的誤差小于閾值t的樣本集,它們構(gòu)成S的一致集。
(3)設(shè)內(nèi)點數(shù)的閾值為d,若Num(S*)≥d,認為模型參數(shù)正確,利用內(nèi)點集S*重新計算新的模型M*。重新隨機抽取新的S,重復(fù)以上過程。
(4)完成一定的抽樣次數(shù)后,若未找到一致集則算法失敗,否則選取抽樣后得到的最大一致集判斷內(nèi)外點,算法結(jié)束。
圖6為RANSAC篩除后的匹配結(jié)果。與圖5相比,經(jīng)過RANSAC 算法篩選后得到的匹配點更加穩(wěn)定,有效提升了匹配的準確度。
圖6 RANSAC篩除后的匹配結(jié)果
2.1.4 實驗結(jié)果分析
為了對比不同算法的性能,采用SIFT算法、BRISK算法、本文提出的SIFT-BRISK 算法分別進行特征匹配實驗。實驗環(huán)境配置為64 位Windows 10 系統(tǒng)、8 GB內(nèi)存、Intel?CoreTMi7-8550U CPU。實驗工具為OpenCV 3.4.2和Python 3.7.0。測試圖已完成預(yù)處理操作,如圖7所示。左右兩幅圖分辨率均為1 920×1 080。
圖7 測試圖
測試指標中,特征點數(shù)為兩幅圖像特征點數(shù)的最小值,匹配數(shù)為RANSAC算法篩選后得到的匹配結(jié)果,匹配準確率為RANSAC篩選后的匹配數(shù)與篩選前匹配數(shù)的比值。三種算法的匹配結(jié)果如圖8所示。
圖8 三種算法匹配結(jié)果
最終,實驗結(jié)果如表1 所示。算法耗時方面,SIFTBRISK算法的匹配耗時約是SIFT算法的1/4,顯著降低了SIFT 的總耗時,算法效率較高。特征點檢測與匹配方面,SIFT-BRISK 提取的特征點數(shù)及最終匹配數(shù)介于SIFT 及BRISK 之間,匹配準確率在三種算法中最高??傮w而言,SIFT-BRISK 算法綜合了SIFT 提取特征點數(shù)量豐富、BRISK耗時少的優(yōu)勢,在算法效率、特征點提取數(shù)目、匹配準確度方面表現(xiàn)出色。
表1 算法性能對比
目標匹配成功后,通過計算攝像機相對于真實場景的位置和姿態(tài),實現(xiàn)虛擬信息在真實環(huán)境中的三維注冊。公式(2)描述了目標二維坐標與其對應(yīng)的三維坐標之間的轉(zhuǎn)換關(guān)系。
式(2)中,(u,v)是圖像坐標系中的二維點,K是攝像機的內(nèi)參矩陣,可通過棋盤標定法獲得。[R3×3T3×1] 是變換矩陣,其中,R3×3是旋轉(zhuǎn)變換矩陣,T3×1是位移變換矩陣。
由相機內(nèi)參矩陣K、二維坐標點集、三維坐標點集,可以得到旋轉(zhuǎn)和平移矩陣[R3×3T3×1] 。求得變換矩陣后,結(jié)合Unity3D 引擎進行虛擬對象的實時渲染,疊加的虛擬信息包括三維模型、視頻、圖片、文字等。為了解決虛實物體間的光照一致性問題,在虛擬場景中添加Directional Light 組件,并將光照模式設(shè)置為實時。該組件能夠根據(jù)真實環(huán)境的光照情況,實時更新虛擬場景的照明分布,從而實現(xiàn)更加自然的虛實融合效果。圖9、10分別展示了歷史典故“桃園結(jié)義”及“以人為鑒”的AR疊加效果。
圖9 “桃園結(jié)義”模型疊加效果
圖10 “以人為鑒”視頻疊加效果
人機交互模塊實現(xiàn)了用戶對UI界面及虛擬對象的控制,主要形式包括單指點擊、單指移動、雙指縮放。圖11為單指移動及雙指縮放的交互效果。
圖11 單指移動、雙指縮放效果
(1)單指點擊
用戶通過手指點擊與虛擬模型進行交互。在模型上添加碰撞器,利用射線系統(tǒng)判斷具體點擊到的模型。當(dāng)手指點擊處發(fā)出的射線指向模型的碰撞體組件時,相應(yīng)的事件就會被觸發(fā)。
(2)單指移動
用戶通過單指控制模型在屏幕上的移動。采用TouchPhase.Moved判斷手指是否發(fā)生位移,若手指位置發(fā)生了變化,則根據(jù)手指移動的距離和方向,將模型拖拽到屏幕上特定位置。
(3)雙指縮放
用戶使用雙指控制模型的縮放。利用Input.touch-Count獲取屏幕上的觸摸點數(shù)量,當(dāng)觸摸點數(shù)目為2時,分析兩個手指之間的距離變化。若距離增加,則判定用戶的請求為放大模型;若距離減少,則判定為縮小模型。
為了保障系統(tǒng)能夠滿足歷史典故展示的需求,對系統(tǒng)的流暢性及魯棒性進行測試。測試在智能手機上進行,配置為Android 7.0 操作系統(tǒng)、4.0 GB 內(nèi)存、八核2 GHz CPU、1 920×1 080分辨率。
(1)流暢性
FPS 是圖像領(lǐng)域中的定義,即畫面每秒傳輸幀數(shù)。FPS值越高,所顯示的動作就會越流暢。為測試系統(tǒng)流暢性,在系統(tǒng)運行時對FPS 進行實時輸出,如圖12 所示。測試結(jié)果表明,系統(tǒng)運行時的FPS 均在60 frame/s以上,能夠達到系統(tǒng)流暢性的要求。
圖12 流暢性測試結(jié)果
(2)魯棒性
通過改變識別圖的尺度、旋轉(zhuǎn)角度、光照、遮擋范圍,對平板設(shè)備中的識別圖進行系統(tǒng)魯棒性測試?;緟⒄杖鐖D12 所示:平板設(shè)備距離手機攝像頭30 cm,設(shè)備中軸與水平線夾角0°,設(shè)備亮度為最高可置亮度的30%,無任何遮擋。
由表2測試結(jié)果可知,當(dāng)識別圖發(fā)生尺度、旋轉(zhuǎn)、光照變換時,系統(tǒng)始終能準確地進行跟蹤注冊。由遮擋測試可知,當(dāng)遮擋范圍為60%以下時,系統(tǒng)運行效果正常。當(dāng)遮擋范圍在60%時,由于無法獲取足量的特征點,系統(tǒng)疊加的三維模型開始出現(xiàn)抖動和漂移的現(xiàn)象??傮w而言,系統(tǒng)具有良好的魯棒性,能夠滿足復(fù)雜環(huán)境下的增強現(xiàn)實展示要求。
表2 系統(tǒng)魯棒性測試
本文提出了基于AR技術(shù)的中國歷史典故展示系統(tǒng)。系統(tǒng)采用OpenCVForUnity 實現(xiàn)了基于SIFT-BRISK 算法的三維注冊,該算法改善了SIFT 算法計算效率低、BRISK 準確率不高的缺陷,相比于SIFT 及BRISK 具有更佳的匹配精度;利用3ds Max、Unity3D完成虛擬場景搭建及人機交互設(shè)計,實現(xiàn)了歷史典故的可視化互動呈現(xiàn)。實驗結(jié)果表明,系統(tǒng)對于尺度、旋轉(zhuǎn)、光照、遮擋變換具有良好的魯棒性,能夠滿足復(fù)雜環(huán)境下的歷史典故展示需求。
通過虛實融合、體驗交互的方式,可解決歷史典故傳統(tǒng)展示模式趣味性不足、內(nèi)容枯燥等問題,為歷史典故的多樣化呈現(xiàn)拓展了思路。該技術(shù)可應(yīng)用于教育、文化等行業(yè),在課堂教學(xué)、圖書出版、影視制作、會展博覽等領(lǐng)域都具有適用性。