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