孫峻嶺,假露青,劉其軍,汪操根
(廣州瀚陽工程咨詢有限公司,廣州 510220)
隨著網絡和信息技術的迅速發展,Internet 上的信息總量呈爆炸式增長,在很短時間內匯集了海量的文本、圖片、影像等信息,成為了世界上覆蓋信息面積最大的信息資源庫.目前,在互聯網平臺的支持下,人們處于信息量巨大、信息交換和更新極快的環境中.在遇到和專業相關的問題時,他們經常希望能夠以可視化的高清視頻會議進行多人交流互動、促進資源共享.如何在互聯網基礎上實現海量影像共享超高分辨顯示,使其為城市管理、遠程會議乃至生活服務,是信息顯示系統升級和發展的方向[1-3].
基于Web 集群的顯示技術的進步極大地影響了協同工作和資源共享,網絡越來越多地用于教學、企業會議和智慧城市管理中心等各種工作場景.基于Web的顯示技術,如谷歌的Hangouts、WebEx 和Skype,它們都是為支持遠程協作而設計的成功商業產品的例子,允許單個用戶通過遠程視頻會議和桌面鏡像與當個異地用戶點對點工作[4-6].但它們都是針對單個用戶的有效工具,沒有一個能夠成功地滿足多個用戶的海量信息共享顯示的要求,也難以滿足在智慧城市管理核心、指揮調度中心、多用戶遠程會議等領域日益增長的海量影像超高分辨顯示的需要.因此,研究多用戶的海量影像超高分辨顯示技術迫在眉睫.
海量影像顯示系統主要由集群網絡服務端、用戶客戶端、網絡交換機、高清顯示屏和Web 應用軟件組成.系統通過Web 應用軟件實現多個異地用戶客戶端與集群顯示設備進行實時的通信和交互,依靠集群的強大的并行計算能力,實現多個異地用戶海量影像在集群設備的拼接屏上超高分辨顯示.
Web 集群是基于Web 瀏覽器技術下的一種計算機集群系統的簡稱,它是由高速計算機網絡互連形成的分布式并行計算機系統,用來提供更加穩定、綜合的計算資源.集群按功能主要分為四類:高性能計算集群、負載均衡集群、網格計算和高可用性集群.因高性能計算集群更適合進行大量的分布式并行計算,所以成為構建大型拼接顯示系統的首選架構[7-9].集群網絡服務端由一臺主節點服務器和多臺子節點機組成,客戶端使用可入網的個人電腦即可.各個計算機之間通過千兆網交換機互連組成一個Web 集群架構,系統在集群網絡的基礎上進行影像信息的處理和顯示.客戶端與主節點服務器通過TCP/IP 協議進行數據傳輸,系統中的主節點機和子節點集群使用UDP 協議進行通信.
集群顯示架構圖如圖1所示.計算機集群顯示技術主要有兩種配置方式:多點配置模式和熱備份配置模式,本系統主要采用多點配置模式,這種模式的計算機集群由N 個計算機節點組成,沒臺子節點機連接2 至4 臺高清顯示屏,所有計算工作平均分布在各個節點.利用集群把大量的計算任務分割成獨立的小塊,各個小塊計算任務由集群的計算機節點并行計算處理,實現海量影像的超高分辨渲染顯示.

圖1 集群顯示結構圖
隨著計算機技術的逐漸發展以及共享網絡基礎設施越來越支持更高的傳輸寬帶,集群顯示技術已逐漸成熟.因其具有結構簡單易于搭建、自由伸縮、運算能力強、性價比高等諸多優點,Web 集群顯示技術為海量互聯網影像的獲取和計算渲染提供了穩定可靠的技術支持.
海量影像顯示系統是一個以集群顯示技術為核心的顯示平臺,通過獲取來自不同客戶端的大型影像數據,并將其共享、同步、渲染和平鋪顯示到拼接屏上.圖2是以集群架構為基礎的海量影像拼接顯示系統示意圖.

圖2 Web 集群顯示系統結構
圖2中,主節點機和子節點機都包括Web 應用程序、同步控制模塊和渲染模塊,所有客戶端也都安裝Web 應用程序.用戶在客戶端將各自的影像資源通過Web 應用程序共享到集群主節點服務器,通過同步控制模塊和渲染模塊處理后顯示到拼接屏上.
主節點機作為客戶端的服務器,用于接收多個客戶端的影像信息,控制整個系統數據流的同步,處理所有顯示數據流的輸入和輸出,顯示場景預設,以及接收和響應的用戶指令.另外,主節點會根據應用程序通信指令和交互事件,協調控制各個子節點,對顯示窗口進行顯示調度和窗口初始化控制,并通過窗口管理模塊可以協助主節點管理員對所有用戶的顯示窗口進行統一管理.其中子節點計算機在同步控制模塊下完成各個節點機的顯示同步.
海量影像渲染過程中需要進行大量的計算工作,渲染模塊需要借助CPU+GPU 強大的混合處理能力,完成對所有客戶端的影像數據分布式并行計算處理,以及海量影像的渲染顯示輸出[10].因為采用集群系統架構對影像數據進行分布式并行計算處理,改變了傳統顯示技術中將所有顯示數據和程序都在一臺核心機上進行集中處理模式,突出了集群并行拼接顯示系統支持多用戶交互、擴展靈活、資源獲取方便、顯示分辨率高等優點.其詳細的系統方案實現將會在第3 節進行論述.
多用戶的海量影像顯示系統方案實現過程主要分為客戶端影像信息共享、同步顯示控制、窗口調度管理和海量影像渲染顯示四個部分.其系統顯示方案實現流程如圖3所示

圖3 系統顯示實現方案流程
集群服務器與用戶客戶端基于http 協議及Java script 編寫Web 應用程序,實現客戶端與集群顯示系統實現數據傳輸和共享顯示.所述Web 應用程序集成的Web 瀏覽器,是用來實現客戶端和顯示系統之間通信的軟件模塊.Web 應用程序是跨平臺的,支持在Windows,Mac,Linux 系統中運行,其中Web 瀏覽器包括多個JSP 頁面(Java Server Pages)、JavaServlet、HTML文件以及海量影像資源等組件[11,12].所有這些Web 組件協同工作為應用程序提供瀏覽、上傳和共享顯示的功能.這些web 基本組件在系統中封裝了自定義元素、影子DOM、HTML 導入和HTML 模板,它允許在Web 文檔和Web 應用程序中創建可重用的小部件或組件,使得應用程序可以直接進入萬維網.
Web 應用程序因其具有易于訪問,耗費硬盤空間少、跨平臺性、易與現有的網絡產品結合等優點,不需要其他任何復雜的開發過程,只需要提供一個合適的瀏覽器.目前WebSocket 通信已經標準化,可以在服務器和客戶端之間實現持久的雙向通信,此外,瀏覽器可以從輸入設備(如鼠標、鍵盤和觸摸屏)捕獲事件[13].因此本系統采用了包含瀏覽器技術的應用程序來進行多用戶的交互.
為了各個節點機同步獲取客戶端的信息資源,顯示系統的主、子節點計算機都集成Web 應用程序,同時,所有交互客戶端的電腦上也需要安裝一個客戶端的Web 應用程序.所有的Web 應用程序都集成的瀏覽器,主節點計算機端的應用程序通過URL 向各個用戶客戶端發送數據請求,主節點計算機端的應用程序向各個用戶請求的數據不是整個網頁,而是由URL 指定的坐標和大小的網頁資源,這些資源包括數字影院動畫、高分辨率圖像、高清視頻電話會議、演示幻燈片、文檔、電子表格或筆記本電腦屏幕.客戶端應用程序Web 服務請求過程如圖4所示.

圖4 應用程序Web 服務請求過程
應用程序Web 服務請求過程中URL 標準格式為[14]:
http://hostname[:port]/path/[;parameters][?query]
標準格式中http 代表協議頭,[]中代表可選部分,例如:
http://192.169.0.60.9090?version=1.1.2&Request=C etImage&SRS=4326&BBOX=-99.135.35.913.56.794,36.241&Width=128&Fleight=127&Layers=Test&Format=image/png.
以上URL 鏈接實例中,主要包括以下五個部分.
(1)192.169.0.60.9090 表示用戶計算機的地址和端口;
(2)Request 為當前請求的指令類型;
(3)BBOX 獲取的是影像的坐標,其中Width 和Height表示得到影像的大小;
(4)Layers 為獲取影像中顯示的圖層;
(5)Format 為獲取影像的具體格式.
海量影像顯示系統中,所有節點機都采用多核多線程的CPU,最大限度的滿足主節點機的應用程序同時與多個用戶端應用程序進行通信,實現顯示對象在拼接屏中的布局、移動、旋轉、縮放和更新等功能.由于所有的異地客戶端是在個人設備上運行的,因此,如何使多個用戶交互事件與海量影像顯示系統上所需的操作關聯起來,并使得多個客戶端所有影像數據在拼接顯示屏同步,這是實現多用戶共享顯示的一個至關重要的問題.
為了解決這個問題,使得每個子節點計算機的同步,主節點服務器的應用程序從客戶端應用程序捕獲事件和指令后,由Web 集群網絡組播發送給顯示系統中的所有子節點計算機,然后通過主節點計算機向每個顯示子節點計算機廣播這些事件、指令來重新繪制動畫.每個子節點應用程序響應主節點廣播的指令之后,子節點計算機會返回處理的狀態.一旦主節點機接收到來自所有子節點計算機的正確響應,主節點計算機就會廣播下一個重繪命令,完成海量影像渲染顯示.以這種集群同步控制方式處理海量信息,實現節點機顯示單元的信息同步,以滿足超高分辨海量信息對展示同步的苛刻要求,使得系統保持拼接顯示屏的視覺同步,確保信息展示的實時性、準確性和高效性.
在應用程序發送Web 服務請求指令并進行影像同步過程中,GetImage 和GetConfigure 是必須響應的兩種事件指令,這兩種請求的基本信息正常返回即可完成用戶的影像信息顯示.通過發送GetImage 和GetConfigure 等程序指令到各客戶機的應用程序,客戶端應用程序對和事件指令進行響應并根據其中設定的詳細參數,獲取影像資源.
(1)GetImage 返回一幀視頻影像或者一張圖片,格式類型、坐標、顯示寬度和高度等初始化參數;
(2)GetConfigure 返回應用程序的服務參數,包括當前版本號、客戶端id,及一些配置信息,在請求的過程中,我們將客戶端的id 附加到URL 上,以便用唯一的id 標識每個顯示用戶客戶機,將其映射到拼接屏上的特定行和列;
為了實現多個客戶端和集群網絡窗口管理和應用程序事件處理的自由切換,系統擁有窗口管理模式和應用程序交互模式.在窗口操作模式下,應用程序的任何位置都會在窗口上執行事件(單擊、拖動或者滾動);在應用程序交互模式下,所有事件都被轉發到交互應用程序來處理.從多個客戶端獲取得到的影像信息時,需要在顯示系統上對其進行顯示位置和顯示窗口大小的調整.調整窗口大小可以通過點擊和拖動一個角落來實現,移動窗口可通過點擊和拖動一個標題欄來完成.系統中,窗口移動和縮放操作響應時間可低于0.2 s,因此這些客戶端影像顯示過程是連續的,可以無縫地在顯示中移動和縮放.
集群顯示系統會根據每個客戶端ID 初始化顯示窗口,包括窗口的高度、寬帶和位置坐標等信息,然后主節點管理員對各個客戶端的影像在拼接屏上進行拖曳、層疊、移動和縮放操作,實現多個用戶的所有影像任意窗口布局、大小和排列方式.
系統將Web 應用程序事件和窗口管理封裝在一個類中.因此,應用程序可以根據需要多次動態實例化.另外,將所有用戶輸入事件轉發給這些應用程序,以便它們能夠響應多用戶輸入,比如獨立的鍵盤、指向設備和鼠標事件.
其中,窗口管理模式主要事件處理如下:
(1)MousePointer:function()點擊應用程序窗口,轉換到窗口管理模式;
(2)MouseLeft:function()點擊底部中右角落的一個應用程序來調整窗口;
(3)MouseRight:function()右鍵單擊應用程序窗口欄,進行屬性設置;
(4)ResizeWindows:function()通過點擊和拖動右下角改變用戶窗口的大小.
應用程序交互模式事件處理如下:
(1)AppEvent:function()將所有事件轉發到應用程序;
(2)SystemPointer:function()按Shift + Tab 的切換系統指針模式;
(3)Quit:function()按Esc 的釋放對顯示系統的控制;
(4)ErrorEvent:function()事件出錯處理;
(5)GetUrl:function()通過用戶地址獲取影像數據.
多個用戶的海量影像超高分辨同時顯示,需要進行大量的計算來完成數據解析和影像的渲染.傳統的影像顯示是在一臺核心處理機上進行,這必然會受到
計算機性能的限制,海量影像的加載和渲染不能同時進行,需要將影像信息全部加載完畢才能進行渲染繪制,當處理海量影像數據或者進行窗口更新時,這必然會導致顯示速度慢,影像整體的顯示流暢性.
針對傳統影像渲染顯示的流暢性欠缺的問題,在海量顯示時,為了保證流暢的渲染速度和用戶操作體驗.系統基于并行CPU+GPU 混合的處理方式,在渲染模塊中集成了開發了OpenGL Show 子程序實現海量影像的渲染處理,憑借CPU+GPU 的并行計算速度、圖形處理能力和良好的可編程性,實現對多個用戶影像資源的渲染[15,16].
OpenGL Show 子程序影像數據渲染效果的類圖如圖5所示

圖5 影像數據渲染類圖
其中,OGLShowProgram 封裝了OpenGL 的Show 著色、顯示相關的功能,以面向對象的方式綁定程序配置文件,設置和讀取Show 程序的相關參數;imGLShow Base 是從OGLShowProgram 派生的類,主要用于各種渲染顯示程序的重寫和復用、其中imGLShowManager是所有Show 渲染程序的容器,用于統一綁定和編譯渲染程序;imGLShowColor 實現了海量影像的基本渲染效果能力,包括透明度、亮點、對比度、拉伸效果渲染和RGB 真彩色渲染效果;imGLShowNormal 集成應用程序的派生擴展功能、imGLShowObject 提供了邊界渲染、填充渲染和分類渲染等效果、imGLShow Factory 提供應用渲染程序類的建立、編譯和綁定能力.
海量影像顯示系統的各個子節點機上CPU+GPU混合計算處理方式,既可以發揮多核CPU 在管理調度、事務邏輯等方而強大的綜合計算處理能力,又充分利用了GPU 高速并行計算完成信息渲染顯示任務的能力,使集群并行顯示系統可完成高負載、高吞吐的海量信息高速顯示任務.
基于Web 集群構建的并行顯示系統,可以為海量影像的顯示提供有效的計算平臺,系統提供了一個集群分布式計算處理的顯示環境,允許用戶訪問、顯示和分享各種各樣的數據密集型的信息.用戶的影像可以有多個來源、不同的格式和大小,并能以任意大小平鋪在拼接顯示屏上.
為了驗證在Web 集群的海量影像顯示技術的處理能力,搭建了由一臺主節點計算機和三臺子節點計算機組成的集群顯示系統進行試驗驗證,同時使用了三臺安裝了Web 應用程序且連接高速網絡的PC 電腦作為客戶機.
系統中三臺子節點計算機都分別與四塊高清顯示屏連接,十二塊顯示屏組合成三行四列超高分辨的拼接顯示屏.其中每塊顯示屏的分辨率為1920×1080,整個顯示分辨率可達7680×3240.其顯示效果如圖6所示.

圖6 海量影像顯示
拼接屏上顯示了兩個客戶端的桌面鏡像和一個客戶端的8G tiff(Tag Image File Format)格式的超高分辨圖.系統在窗口管理模式下,通過在主節點計算機的窗口進行移動、縮放等操作,將獲取得到的用戶界面進行移動和縮放,得到的圖形顯示結果如圖7所示.
通過實驗的顯示結果可以發現,基于Web 集群的海量影像顯示系統能夠對多個用戶的海量信息資源進行顯示,擁有超高的顯示分辨率.同時,集群也可采用一臺主節點機和4-6 臺的子節點機進行系統搭建,集群規模越大,處理與顯示的能力越高,隨著子節點計算機和拼接顯示屏的擴展,Web 集群海量影像顯示系統的交互用戶和顯示分辨率的輸出能力將會進一步增加.

圖7 顯示窗口管理
本文根據多用戶海量數據顯示的特點以及顯示的難點,使用基于Web 集群和瀏覽器技術來實現多用戶海量影像超高分辨的共享顯示.本文簡要的說明了研究背景和意義,對顯示系統結構、系統設計以及關鍵技術進行了分析與研究,并詳細論述了集成瀏覽器技術的應用程序、海量影像獲取方法、同步顯示控制技術、多用戶窗口管理和渲染顯示等技術.搭建了可實現顯示能力的任意擴容分布式集群海量影像顯示系統,解決了傳統顯示技術無法解決的異地多用戶海量影像顯示問題.實驗證明,基于Web 集群的顯示技術能夠將多異地用戶共享的信息資源和海量影像進行超高分辨率顯示,為海量信息在大型共享拼接屏上超高分辨顯示提供了可行的解決方案.