蔣素琴,張夢駿,李蔚清,蘇智勇
(1.南京理工大學自動化學院,江蘇 南京 210094;2.上海機電工程研究所,上海 201109;3.南京理工大學計算機科學與工程學院,江蘇 南京 210094)
增強現(xiàn)實(augmented reality,AR)技術[1]是一種將虛擬信息與真實世界巧妙融合的技術,能夠有效增強真實環(huán)境和虛擬環(huán)境之間的無縫融合,最終達到自然、逼真、和諧的人機交互。目前大多數(shù)的AR 系統(tǒng)只是簡單地將真實環(huán)境和虛擬對象進行疊加,沒有考慮兩者的空間位置關系和虛擬對象的信息延遲問題。錯誤的空間遮擋關系,會導致用戶在感官方向上的迷失和空間位置上的錯亂;而信息的延遲也不利于AR 的沉浸式體驗。所以只有高效、實時地解決兩者在空間中的一致性問題,才能得到具有強烈真實感的虛實融合效果。
目前對于虛實遮擋的研究主要分為基于模型、對象和深度的方法?;谀P蚚2-3]的方法需要事先對可能發(fā)生遮擋的真實物體進行建模并將其作為掩膜精準覆蓋,利用深度測試確定空間關系?;趯ο骩4-5]的方法,真實物體和虛擬對象的相互遮擋關系是固定不變的,從而將問題轉(zhuǎn)換為虛擬對象的跟蹤注冊。基于深度[6-7]的方法利用深度傳感器捕獲深度或利用深度估計算法得到場景中每個物體到視點的距離,通過比較真實場景與虛擬對象距離相機的遠近關系,進行相應地遮擋渲染。其中,基于深度的虛實遮擋方法由于不需要預先建立真實場景的三維模型,不受復雜環(huán)境制約,更加適用于動態(tài)場景,而成為當前研究的主流方法。
當前,基于深度的虛實遮擋處理技術主要存在2 個問題:①深度數(shù)據(jù)的精度問題,無論是利用深度傳感器獲取的深度圖,還是基于圖像/視頻通過稀疏重建得到的深度圖,均存在噪聲和孔洞問題;②虛實遮擋處理的實效性,由于虛實遮擋處理需要計算場景深度圖,逐一比較場景中每個像素的深度信息,因此較耗時,在整個處理過程中很難達到實時性的要求。
針對如何獲得場景中各像素深度信息的問題,KIM 等[8]提出一種基于立體匹配的算法獲得真實場景的深度信息,用于真實環(huán)境的重建和虛實遮擋處理。VALENTIN 等[9]利用關鍵幀圖像匹配技術獲取場景的深度信息,實現(xiàn)虛擬物體的跟蹤和實時的虛實遮擋處理。以上算法基于稠密匹配的思想,均存在計算量大,實時性差的問題。VALENTINI[10]利用深度傳感器獲取場景的三維幾何結(jié)構并對用戶進行有效地跟蹤,實現(xiàn)動態(tài)環(huán)境的遮擋。DU 等[11]提出基于邊緣捕捉的深度圖增強方法,解決深度圖的邊界噪聲和虛實遮擋的邊緣視覺偽影問題。呂浩和陳世峰[12]提出聯(lián)合雙邊濾波器的方法,填充像素缺失區(qū)域并保持銳利的深度圖像邊緣特征,提升了深度圖的質(zhì)量。以上處理均利用深度傳感器獲取深度圖,但是圖像質(zhì)量易受噪聲和設備的影響,適用于理想的室內(nèi)環(huán)境?;谙∈柚亟ǖ姆椒╗13-15]可以提高運行效率。STüHMER 等[16]利用單個手持攝像機采集多幅連續(xù)圖像,實時估計其深度圖,并進行密集的幾何圖像重建。HOLYNSKI 和KOPF[17]利用同步跟蹤與建模(simultaneous localization and mapping,SLAM)技術實現(xiàn)快速的深度感知,即利用圖像序列和稀疏重建的3D 點信息,快速恢復出場景中每個像素點的深度值,從而解決虛實遮擋問題。WEEASKERA 等[18]根據(jù)稀疏地圖和稠密深度預測的點間置信度,利用置信權值和概率數(shù)據(jù)來融合深度圖,以解決方案對稀疏錯誤深度存在的不敏感性。以上算法利用稀疏重建得到場景的稠密深度信息,對稀疏點的可靠性要求高,未考慮錯誤稀疏點對深度恢復的影響。精度問題關鍵是得到準確的稀疏數(shù)據(jù)或解決錯誤數(shù)據(jù)融合導致的孔洞問題,從而實現(xiàn)逼真的虛實遮擋效果。
針對提高虛實融合實時性問題,ROXAS 等[19]提出實時分割前景物體的方法,利用前景物體輪廓的深度信息與虛擬物體進行遮擋處理。上述遮擋實現(xiàn)雖然簡化了計算量,但在復雜背景和強烈遮擋的動態(tài)環(huán)境下,無法完美分割出前景物體的輪廓信息。HEBBORN 等[20]在融合過程中,根據(jù)傳感器捕獲的真實場景深度和渲染虛擬對象得到的區(qū)域,指定深度圖像的前景、背景、無效和未知區(qū)域,實時進行有效區(qū)域的動態(tài)遮擋處理。實時性問題重點關注虛實融合的有效區(qū)域,從而加快動態(tài)場景的遮擋處理。
針對上述問題,本文提出通過施加區(qū)域約束提高深度圖計算效率,通過融合局部錯誤深度值改善虛實遮擋效果。在提高深度圖效率方面,提出增加區(qū)域約束從而限制稀疏3D 點深度傳播的改進方法。因為虛實遮擋只出現(xiàn)在虛擬物體繪制的區(qū)域,所以只在虛擬區(qū)域傳播深度到周圍像素,從而快速恢復出深度圖。在噪聲數(shù)據(jù)和局部錯誤深度值導致的孔洞問題方面,提出基于patch 相似性和投票決策的方法??紤]單個像素比較結(jié)果的偶然性,基于patch 進行像素處理,對patch 內(nèi)部像素進行投票決策和區(qū)域融合渲染繪制。
算法實現(xiàn)流程如圖1 所示。真實場景視頻信息和虛擬對象作為輸入;局部區(qū)域深度估計模塊通過稀疏重建得到稀疏3D 點的深度信息,再疊加不同的約束共同限制深度的傳播,從而快速恢復出虛擬對象區(qū)域的深度圖;局部噪聲點融合模塊通過深度比較確定虛實物體的前后位置關系,基于patch 進行投票決策和區(qū)域融合;最終輸出具有真實遮擋關系的融合結(jié)果。
圖1 算法實現(xiàn)流程圖 Fig.1 Algorithm implementation flow chart
本文基于HOLYNSKI 和KOPF[17]的快速深度致密化算法實現(xiàn)局部區(qū)域的深度數(shù)據(jù)恢復。原始算法要恢復出完整的深度圖信息,計算量大、效率低,無法做到實時融合。因此,本文提出基于局部區(qū)域的深度估計模塊來提高實時性。圖2 為模塊的總體設計思路,其可分為3 個步驟:
圖2 局部區(qū)域深度估計模塊設計圖 Fig.2 Design drawing of local area depth estimation module
(1) 輸入準備。將視頻信號和虛擬對象作為輸入。
(2) 局部區(qū)域深度估計。通過給稀疏3D 點施加3 種不同種類的約束,限制深度數(shù)據(jù)的傳播范圍,快速恢復出局部區(qū)域的深度圖。其中數(shù)據(jù)約束是利用直接稀疏里程計 (direct sparse odometry,DSO)技術跟蹤并稀疏重建的3D 點信息;平滑約束是通過圖像對齊并定位的深度邊緣信息;區(qū)域約束是通過渲染虛擬目標生成特定區(qū)域的二值圖像信息。
(3) 輸出結(jié)果。輸出場景幾何中特定目標區(qū)域的深度圖。
局部區(qū)域深度估計模塊通過建立損失函數(shù)來描述步驟(2)中施加的不同約束,計算最小損失函數(shù)得到深度傳播的最優(yōu)解,從而將局部區(qū)域深度估計任務簡單描述成一個二次優(yōu)化的問題進行求解。各項施加的約束和激勵的任務如圖3 所示。其中數(shù)據(jù)項式(1)~(2)和平滑項式(3)皆是文獻[17]方法中的公式。
圖3 最小損失函數(shù)任務示意圖 Fig.3 Minimal loss function task diagram
圖3 中數(shù)據(jù)項①為促進深度數(shù)據(jù)的一致,即
其中,Edata為數(shù)據(jù)項①的損失函數(shù);Dsparse為跟蹤的稀疏點深度。在傳播過程中,如果待傳播的像素D(p)與稀疏點重合則wsparse設置為1,否則為0。
圖3 中數(shù)據(jù)項②為促進時間的一致,即
其中,Etemp為數(shù)據(jù)項②的損失函數(shù);Dtemp為重投影上一幀的密集像素而獲得的深度圖。對于重疊重投影點的所有像素D(p),wtemp為1,其他地方為0。
平滑項促使深度圖在邊緣地區(qū)有尖銳且明顯的不連續(xù)性,而其他地方整體平滑且連續(xù),即
其中,Esmooth為平滑項的損失函數(shù);wpq為平滑項權重。如果D(p)是邊緣像素,將權重wpq設置為0,允許邊緣像素通過均值漂移不受懲罰從而形成清晰的不連續(xù)性。而其他區(qū)域像素D(p),wpq強制執(zhí)行高平滑度,保證深度的平滑與連續(xù)。
區(qū)域項限制深度值只在有效區(qū)域內(nèi)傳播,即
其中,Earea為區(qū)域項的損失函數(shù);Darea為虛擬物體渲染的目標區(qū)域二值圖。對于重疊有效區(qū)域的所有像素點D(p),warea是1,其他為0。
得到二次優(yōu)化函數(shù)為
其中,N為水平和垂直相鄰像素的集合,數(shù)據(jù)項、平滑項和區(qū)域項對應的平衡系數(shù)分別取1,0.01,1和1。式(5)是一個標準的泊松問題,可以通過快速優(yōu)化解算器進行求解。
圖4 為區(qū)域深度估計流程示意圖,其中圖4(c)是將虛擬小車與圖4(a)中真實存錢罐進行虛實融合處理;圖4(d)是將圖4(c)中黑色區(qū)域部分作為致密化處理的區(qū)域約束,從而恢復出的局部區(qū)域深度圖。
圖4 目標區(qū)域深度恢復示意圖((a)原圖;(b)稀疏3D 點;(c)區(qū)域二值圖像;(d)目標區(qū)域深度圖) Fig.4 Schematic diagram of target area depth recovery ((a) Original image;(b) Sparse 3D points;(c) Regional binary image;(d) Target area depth map)
基于投票決策的虛實遮擋融合處理模塊的總體設計思路如圖5 所示。輸入有局部錯誤的深度數(shù)據(jù);基于噪聲點的投票決策融合模塊通過深度比較確定區(qū)域內(nèi)每個像素點虛擬物體和真實物體前后位置關系,再利用投票決策的方法,進行區(qū)域的融合處理;輸出有真實遮擋關系的融合圖像。
圖5 基于投票決策融合的方案示意圖 Fig.5 Scheme diagram based on voting decision fusion
1.3.1 融合問題
基于Holynski 的快速深度致密化算法在處理無紋理區(qū)域、非郎伯表面、反射和半透明表面[17]時,會生成錯誤的稀疏點,從而導致虛實融合中的孔洞和噪聲現(xiàn)象,如圖6 所示。
因圖6(a)中插座區(qū)域存在倒影和反射,導致圖6(b)恢復出的深度圖存在不平滑、不連續(xù)和殘缺的問題。錯誤的深度值會對虛實物體之間的相互遮擋 產(chǎn)生不利的影響。圖6(c)中小車被存錢罐擋住車頭部分。但是在出現(xiàn)局部錯誤深度值的地方,融合過程中虛擬小車的車蓋部分出現(xiàn)孔洞問題。
圖6 局部錯誤點的融合示意圖((a)原始深度圖;(b)局部錯誤點;(c)孔洞現(xiàn)象) Fig.6 Schematic diagram of the fusion of local error points ((a) Original depth map;(b) Local error; (c) Hole phenomenon)
針對上述問題,本文提出一種基于patch 的投票決策和融合的思想。由于深度圖整體上是平滑連續(xù)的,錯誤的像素點較少且分布較稀疏。因此,本文首先對整幅圖像進行分塊處理,形成一系列n×n大小的patch;然后對每個patch 區(qū)域內(nèi)部像素的深度值進行統(tǒng)計分析;最后,采取少數(shù)服從多數(shù)的投票策略,解決局部錯誤點導致的融合孔洞問題,提升融合效率。
1.3.2 投票決策融合
投票決策融合模塊主要分為3 步,具體實現(xiàn)如圖5 所示。
(1) 比較每個像素點對應的真實場景和虛擬場景的深度值;
(2) 對區(qū)域內(nèi)的所有像素進行投票決策,少數(shù)像素服從多數(shù)像素;
(3) 區(qū)域融合繪制。
比較像素點的真實深度和虛擬深度大小來描述兩者的前后關系。若像素點的真實深度大于虛擬對象深度,則該像素點用1 標志,表示繪制虛擬物體像素,否則用0 標志,表示繪制真實場景像素。針對目標區(qū)域出現(xiàn)局部的錯誤深度信息導致的孔洞問題,融入投票決策的思想。將注意力從單個像素點轉(zhuǎn)換到整個patch,而將問題從逐點像素的比較與繪制轉(zhuǎn)變?yōu)閰^(qū)域內(nèi)所有像素的投票決策和區(qū)域繪制。
基于局部區(qū)域的深度估計恢復出的深度圖是不規(guī)則的,如圖7(a)所示,需要執(zhí)行中心規(guī)則正方形區(qū)域和邊緣零散像素2 種不同處理。對于規(guī)則patch 區(qū)域,以右邊patch 區(qū)域為例,根據(jù)深度比較關系確定每個像素的標志如圖7(b)所示,利用投票決策的思想判斷該區(qū)域是否繪制,因為大多數(shù)像素滿足標志1,所以該區(qū)域內(nèi)的像素均為1,執(zhí)行繪制虛擬對象像素的條件,區(qū)域融合結(jié)果如圖7(c)所示。針對圖7(a)邊緣零散像素,以左邊patch 區(qū)域為例,由于邊緣像素分散且稀疏,投票決策的意義不大,所以強制執(zhí)行邊緣像素滿足最近的patch內(nèi)像素的繪制條件,從而邊緣能得到比較平滑的融合效果。綜上,基于投票決策的噪聲點融合模塊能夠針對具有局部錯誤深度數(shù)據(jù)的深度圖做到良好的虛實融合效果,解決像素融合過程中的孔洞問題。
圖7 錯誤點投票決策融合((a)不規(guī)則區(qū)域2 種情況;(b)區(qū)域像素繪制;(c)區(qū)域融合) Fig.7 Voting decision fusion at wrong points ((a) Two cases of irregular areas;(b) Area pixel drawing; (c) Regional integration)
依據(jù)Holynski 的算法思想,本文在Ubuntu16.04系統(tǒng)平臺上,結(jié)合OpenCV 4.0 函數(shù)庫開發(fā)實現(xiàn)區(qū)域深度數(shù)據(jù)的恢復,利用Unity3d 2019.2.16f1 游戲引擎實現(xiàn)虛實融合效果。本文在光照充足的條件下采集實驗數(shù)據(jù)。數(shù)據(jù)來源于非理想化的日常場景,包括透明物體、稀疏紋理區(qū)域等。
實驗采用普通手機攝像頭(分辨率1920×1080),拍攝連續(xù)視頻作為實驗數(shù)據(jù)。系統(tǒng)視頻運行速度一般保持在30 fps,視頻比較流暢。利用SLAM 跟蹤場景3D 關鍵點,針對快速深度致密化算法和本文算法估計出深度信息的時間進行實驗對比。本文利用Unity3d 針對真實物體和虛擬物體不同空間位置關系進行噪聲點數(shù)據(jù)融合實驗。
2.3.1 時間結(jié)果比較
表1 為完整場景和局部目標區(qū)域深度估計運行時間比較結(jié)果。分別測試3 組數(shù)據(jù),不同視頻的時長、對應的圖像序列數(shù)和目標區(qū)域大小各不相同。一般場景越復雜,特定模板區(qū)域范圍越大,所需要的恢復時間越長。
表1 深度估計每幀時間對比(ms) Table 1 Depth estimation time comparison per frame (ms)
從每組的完整場景和局部目標區(qū)域處理的時間(表1)可知,在特定目標區(qū)域進行深度恢復,更有利于虛實遮擋的處理。
從每組的原始深度測試和本文投票決策虛實遮擋處理的單幀時間對比(表2)可知,本文算法時間會增加,但差距很少,可以忽略不計。
表2 投票決策遮擋時間對比(ms) Table 2 Voting decision occlusion time comparison (ms)
2.3.2 融合效果比較
實驗對比了不同大小的patch 對虛實遮擋融合結(jié)果的影響。實驗數(shù)據(jù)以單幀為例,為了準確地觀察實驗結(jié)果和比對,圖8 (虛擬物體遮擋真實場景)和圖9 (虛擬物體被遮擋)展示了完整的實驗效果和對應虛擬區(qū)域的放大視圖。
在虛擬對象遮擋真實場景的實驗中,虛擬物體是三階魔方模型,快速深度致密化算法得到的融合效果如圖8(a)所示。由于真實書籍的邊角處的深度值不精確,虛實融合中魔方中心區(qū)域出現(xiàn)孔洞問題。在虛擬物體被真實物體遮擋的實驗中,虛擬物體是卡通汽車,快速深度致密化算法得到的虛實融合效果如圖9(a)所示。由于真實場景桌子的反光現(xiàn)象,該部分深度數(shù)據(jù)不準確,從而出現(xiàn)車蓋部分虛擬像素缺失的問題。圖8 和圖9(b)~(f)分別是本文算法采用不同patch 融合得到的虛實遮擋結(jié)果。
圖8 虛擬物體遮擋真實場景融合圖((a)原始快速深度致密化算法[17]的實驗結(jié)果;(b)~(f)不同patch 融合的實驗結(jié)果,其對應patch 大小分別為(b) 2×2,(c) 3×3,(d) 4×4,(e) 5×5,(f) 6×6) Fig.8 Virtual object occludes real scene fusion map ((a) The experimental result of the original fast deep densification algorithm[17];(b)-(f) Tthe experimental results of the fusion of different patches,and the corresponding patch sizes are (b) 2×2,(c) 3×3,(d) 4×4,(e) 5×5,(f) 6×6)
圖9 虛擬物體被遮擋融合圖((a)原始快速深度致密化算法[17]的實驗結(jié)果;(b)~(f)不同patch 融合的實驗結(jié)果,其對應patch 大小分別為(b) 2×2,(c) 3×3,(d) 4×4,(e) 5×5,(f) 6×6) Fig.9 Fusion image of virtual objects being occluded ((a) The experimental result of the original fast deep densification algorithm [17];(b)-(f) The experimental results of the fusion of different patches,and the corresponding patch sizes are (b) 2×2,(c) 3×3,(d) 4×4,(e) 5×5,(f) 6×6)
從虛擬物體和真實場景不同的空間關系(遮擋前后)的虛實融合對比結(jié)果可知,隨著選取的patch的增大,原始算法融合過程的孔洞越來越小。邊緣的細微殘缺像素也能實現(xiàn)平滑的繪制,與真實場景的物體更加融洽。實驗表明基于patch 的像素點投票決策融合的方法,能夠較好地解決孔洞和噪聲點的問題。在patch 大小為6×6 時,融合效果最佳,對于真實環(huán)境和虛擬對象不同的空間關系都適用。但是patch 過小時會導致孔洞現(xiàn)象加劇,一般patch的選取不要小于3×3。
本文提出的基于patch 投票決策的實時遮擋處理技術,解決遮擋處理的實時性和深度數(shù)據(jù)精確性2 個問題。該算法能夠做到實時的遮擋融合處理,同時解決不精確的深度數(shù)據(jù)導致的噪聲點和孔洞問題。
本文算法是建立在深度估計算法所得深度圖中錯誤像素點較少且分布較稀疏的基礎上。如果出現(xiàn)大范圍的錯誤深度數(shù)據(jù),就無法正確處理融合中的孔洞問題。此外,針對錯誤的稀疏深度值,研究如何從根源出發(fā)糾正稀疏重建的錯誤深度信息,是需要繼續(xù)研究的問題。