程鋒,魏東華,陳詩源
(廣州新華學院,廣東廣州 510310)
如今,移動端已然成為日常網絡獲取信息的重要渠道。然而市面上缺少中藥材科普類App,而且中藥材的展現形式以圖片形式居多,中藥材知識推廣傳播的方式較為單一。
本項目針對上述問題,將AR 技術應用于中藥材識別與實時建模系統的研發。中藥材識別與實時建模系統構建與真實藥材標本相似的三維數字模型,能直觀、立體地展現出中藥材的形狀、顏色、紋理等特征,實現中藥材的數字化表達。中藥材識別與實時建模系統具有完備的中藥材體系和多功能的科普教學功能體系,擴大了中藥材的展示空間。該系統提高了中藥材學習的真實性和趣味性,真正將中藥材知識科普,中藥材圖像識別,模型AR展示等功能集于一體[1]。本文以Android 為平臺,使用Unity3D 引擎,結合Easy AR SDK 設計了一款中藥材識別與實時建模系統,學員可通過Android手機掃描中藥材圖片即可實時呈現中藥材模型。
Unity 引擎使用C#作為主要編程語言,通過提供大量的API和工具,使得開發人員可以輕松地創建和管理對象、設計和布置場景、添加光照效果、處理動畫等。Unity 的多平臺支持和廣泛的插件生態系統為開發者提供了極大的靈活性和可定制性。
Easy AR 是一種基于計算機視覺的增強現實技術,它采用SLAM 算法進行圖像識別和跟蹤,實現了AR 場景的定位、構建和跟蹤,為AR 應用的開發提供了高效且穩定的解決方案。Easy AR還提供了豐富的開發工具和API,包括Easy AR SDK、Easy AR Engine和Easy AR Studio等,支持多種開發語言和平臺。
本項目的框架設計有圖像識別模塊、虛實構建模塊、人機交互模塊、數據庫應用和項目優化等,如圖1系統設計所示。

圖1 系統設計
基于Easy AR 開發圖像識別模塊。Easy AR Sense Unity Plugin 提供Easy AR Sense 功能在Unity 中的封裝。本項目運用Easy AR 運動跟蹤技術(Motion Tracking)和Easy AR 平面圖像跟蹤技術(Planar Image Tracking)進行AR圖像識別和AR平面跟蹤[2]。
虛擬信息在真實場景中的位置以及虛擬對象和真實場景的配準,需要通過確定攝像機的內外參數完成對攝像機的標定,其中包括中藥材模型的構建,Shader 著色器的應用以及模型材質貼圖和燈光渲染等。
用戶可通過在移動端屏幕上單指點擊、移動或者雙指縮放的形式,實現中藥材模型的放大、縮小及旋轉等操作,可以細致地觀察中藥材模型紋理。UI界面設計采用典雅黑與金色主題,映襯中藥材的文化歷史悠久,傳承歷久彌新。
2.4.1 腳本優化
本項目中參考了設計模式中的工廠模式,將功能模塊與交互模塊的腳本分離開來,初步實現了設計模式的高內聚、低耦合思想,方便將來代碼的維護與重構。
2.4.2 內存優化
本項目中還對一些基于粒子系統的特效采用了對象池管理的技術,當不需要時就隱藏而不是銷毀,再次需要時就顯示,這樣可以有效減少系統因實例化而耗費的內存資源。
系統用例如圖2 所示,中藥材識別與實時建模系統主要功能為藥材庫及AR識別,用戶通過點擊按鈕,實現對應的系統功能,進入沉浸式學習模式。

圖2 系統用例圖
首先,需要從官網中注冊開發者賬號,然后在開發板塊中創建應用,填寫應用名與包名,就會創建出對應的License Key 了。下載Easy AR SDK for Unity,導入Unity。在Unity 工程文件夾中,會有一個Easy AR 的文件夾與一個plugins 的文件夾,plugins 里都是一些Easy AR 封裝好的代碼,在U3D 中主要使用Easy AR 文件夾下面的Prefabs 腳本。在場景中拖入Easy AR_Startup 預制體,這個物體上面有需要填寫的License Key。因為該預制體下有攝像頭,所以把場景原來的MainCamere刪掉[3]。
創建工程之后,下一步就需要將每個中藥材的識別圖像和中藥材模型與預先創建的ImageTarget 組件進行關聯。具體流程包括以下步驟:1)將中藥材識別圖像復制到StreamingAsset 和Texture 目錄下;2)為每個ImageTarget 組件創建對應的渲染材質球Materials;3) 在Hierarchy 面板中單擊各個ImageTarget 組件,打開屬性設置面板,并在Transform 屬性欄下設置位置、旋轉和縮放比例等屬性值,以確保中藥材模型與識別圖像在空間中不會重疊;在Materials 屬性欄中選取Materials 目錄下已經建好的對應材質球,并將其設置為Element的值。

圖3 Image Target組件屬性設置面板
4)在腳本屬性區分別設置Path 的值為對應中藥材識別圖Storage 的值需要設為: Assets,需要建立StreamingAsset 的對應關系目錄,對應的Path 路徑是StreamingAssets文件夾下的路徑。把識別圖拖到該文件夾下,假設圖片名字為“靈芝.jpg”,則Path為“靈芝.jpg”。
Easy AR 圖像識別模塊的整體流程如圖4 所示,Easy AR 提供一個靈活的target 管理接口,可以在運行時生成Easy AR 的target,Easy AR 通過兩個步驟來管理target。ImageTarget 表示平面圖像的target,它可以被ImageTracker 跟蹤。ImageTarget 內的數值在可以被讀取之前,需要首先通過create/setupAll 等方法填入。然后再通過ImageTracker.loadTarget 成功載入ImageTracker 之后,可被ImageTracker 檢測和跟蹤。ObjectTarget 表示3D object target,它可以被Object-Tracker 跟蹤。ObjectTarget內的數值在可以被讀取之前,需要首先通過setupAll 方法載入,然后再Object-Tracker.loadTarget 成功載入ObjectTracker 之后,可以被ObjectTracker檢測和跟蹤[4]。

圖4 Easy AR應用
當完成App 的UI 界面交互功能及中藥材識別與實時建模系統,需要將該項目打包apk 并導出到移動端使用。使用Unity2019 及以上版本,可以在Unity Hub 下載發布Android 平臺的SDK 和JDK 工具包,構建好編譯環境之后開始編譯。
圖5~圖9 為App 部分功能模塊界面截圖,該系統已實現其主要功能。

圖5 首頁

圖6 藥材庫

圖7 AR識別

圖8 科普界面

圖9 答題界面
本實驗使用Unity3D 發布Android 平臺生成APK安裝包,使用Android 系統的手機進行運行測試,如表1所示,兩種具體的運行環境軟硬件配置。

表1 環境配置
測試系統主要的功能,測試流程詳見表2。

表2 測試用例
以Android 手機為硬件平臺,結合Easy AR 的圖像識別功能,在Unity3D 平臺設計了一款中藥材識別與實時建模系統,該系統不受時間、地點、空間的限制,學員通過Android 手機掃描中藥材圖片,就可實時調整畫面三維視角,便可實時呈現該藥材的模型,并獲取該藥材的科普內容,進入浸入式學習,使中藥材文化的傳播與推廣形式更加多樣化,然而該系統仍存在一些問題:伴隨著中藥材識別圖數量的增加,對運行App 的手機的內存有一定的要求。針對此問題可以考慮使用Easy AR云識別功能加以改進。