近年來隨著大屏幕顯示技術在各領域應用的逐步深入,市場已經(jīng)不滿足單一的影片展示,更多的轉向了對互動性更強的計算機桌面環(huán)境的融合顯示上來。而目前市場上主流的桌面融合系統(tǒng),多采用分屏器等硬件輔助設備,成本高,性能差。
統(tǒng)一計算架構(Compute Unified Device Architect-ure,CUDA)是英偉達(NVIDIA)公司近年來推出的通用并行計算架構,它以高性能顯卡GPU為硬件依托,采用CPU+GPU的混合計算極大的提高了大規(guī)模的圖形數(shù)據(jù)實時處理效率。本文設計的視頻顯示系統(tǒng),采用CUDA開發(fā)方式實現(xiàn)了計算機桌面圖片的分割計算、貝塞爾曲線擬合、以及融合圖像計算等三方面處理。實時性高,畫面數(shù)據(jù)計算理論上精確值14像素,精度好。
1 系統(tǒng)框架設計
圖像處理的本質是大規(guī)模矩陣運算,特別適合并行處理。但CPU通用計算很難利用該特性。與此相反,GPU在并行數(shù)據(jù)運算上具有強大的計算能力,特別適合作運算符相同而運算數(shù)據(jù)不同的運算,當執(zhí)行具有高運算密度的多數(shù)據(jù)元素時,內存訪問的延遲可以被忽略。CUDA編程模型將CPU作為主機(Host),GPU作為協(xié)處理器(Coprocessor)或設備(Device),一個系統(tǒng)中可以存在多個設備。在這個模型中,CPU與GPU共同工作,CPU負責邏輯性強的事務處理和串行計算,GPU則專注于執(zhí)行高度線程化的并行處理任務。
本系統(tǒng)以NVIDIA GeForce GTX470搭建的計算平臺為運行環(huán)境,利用顯卡的多頭輸出特性,連接多臺投影儀組成拼接屏幕陣列,不需要額外增加其他硬件設備。由于桌面融合顯示系統(tǒng)要處理的圖像數(shù)據(jù)大、實時性高的特點,所以本系統(tǒng)的軟件設計上則廣泛使用了多CPU并行編程技術和CUDA并行計算技術,針對每一個投影設備的圖像處理和顯示,系統(tǒng)會分配一個專門的線程來處理。該線程會對應固定的CPU和固定的GPU計算核心,保證多投影設備完全并行處理,從而避免了其他系統(tǒng)由于顯示設備增多,處理數(shù)據(jù)變大而造成的性能下降。CUDA架構如圖1所示。
本系統(tǒng)在設計中,首先設置定時器。定期采集控制屏幕圖像信息保存到公共存儲空間,然后針對外設顯示設備個數(shù)動態(tài)的開啟數(shù)個線程完成圖像的數(shù)據(jù)分割、圖像的數(shù)據(jù)融合以及圖像的顯示等工作。其中在線程開啟初始就與固定的GPU計算核心相關聯(lián),并把數(shù)據(jù)圖形分割和融合部分采用CUDA技術進行實現(xiàn),最后同樣采用定時器技術同步各個線程中圖像數(shù)據(jù)顯示工作。
通常采用貝塞爾曲線擬合方法來完成圖像數(shù)據(jù)的融合。該方法的一般做法是先由控制點得出目標圖像每行的貝塞爾曲線,組成二維貝塞爾曲面,再將目標圖像數(shù)據(jù)采用貼紋理的方法擬合到貝塞爾曲線上從而實現(xiàn)圖像變形。Bezier曲線是一種用控制多邊形定義曲線和曲面的方法。它的擬合插值公式為:
式中:Pi為構成該曲線的特征多邊形;Bi,n(t)是Bezier基函數(shù),是曲線上各點位置矢量的調和函數(shù)。Bezier曲線的始點、末點與其特征多邊形端點重合,且始點、末點的切線方向與特征多邊形的第一和最后一條邊一致。
該曲線具有凸包性、對稱性等特性。貝塞爾曲線的優(yōu)點是給定足夠的控制點后,它能夠擬合任意形狀的曲線。
Bezier曲線的擬合插值公式中,函數(shù)的次數(shù)是與特征多邊形的頂點數(shù)相應的,當特征多邊形頂點數(shù)為4時,就構成三次Bezier曲線。三次Bezier曲線的擬合插值公式為:
OPenGL技術提供了易于操作的貝塞爾曲線生成函數(shù)和貼圖函數(shù),但卻無法控制硬件運算,效率不高。本系統(tǒng)出于對時效性的考慮在實現(xiàn)過程中并未采用該方法,而是采用CUDA技術并行矩陣運算的方式來進行紋理貼圖。根據(jù)CUDA程序的結構特點,本系統(tǒng)處理時,首先根據(jù)人機交互部分得到的控制點信息采用通常方法生成目標圖像每行的貝塞爾曲線。開辟顯存存入GPU,然后對應CUDA程序結構,針對目標圖像上的每一個像素點,為其分配一個GPU thread來進行處理。
觀察上面的計算公式發(fā)現(xiàn),當獲得了初始控制點坐標后,在得出每一條貝賽爾曲線上的點的過程中,彼此并不影響,具有多線程的粗粒度的特性,所以CUDA并行計算的時效性有很大的提高。
2 性能評估
在多媒體拼接系統(tǒng)中實時性是最基本、也是最重要的指標。我們觀看到的大屏幕拼接動態(tài)效果是由一幀一幀圖片快速顯示而產(chǎn)生的。根據(jù)正常的人眼視覺殘留水平系統(tǒng)要達到顯示流暢的畫面,1s要處理至少25張圖片,也就是說整個程序一次圖像處理流程不會超過40ms.下面本文將分析一下該系統(tǒng)的時效性。
由于圖像采集部分和處理部分采用的是異步方式,時間復用,而顯然處理部分的耗時又遠遠超過采集部分,所以只列出處理部分的時間消耗,又因為該部分效率主要受顯卡GPU性能影響,所以之對比不同型號GPU的時間消耗情況。具體如表1所示。
由此我們看出采用GeForce8800GT顯卡可以基本上完成顯示功能,而采用GeForce GTX470則可以每秒鐘顯示35~40張圖片,是用戶完全感覺流暢的視頻體驗。
3 結語
今年來大屏幕對計算機操作演示的需求越來越多,而高性能顯卡的發(fā)展又促使GPU計算逐漸成為大規(guī)模并行計算重要的解決途徑。本系統(tǒng)采用了CUDA技術實現(xiàn)了視頻拼接系統(tǒng),目前本系統(tǒng)采用兩個雙頭顯卡組成顯示功能模塊最多實現(xiàn)四屏拼接,如果需要更多屏幕拼接顯示時可以考慮使用網(wǎng)絡C-S結構進行擴展。由于耗時的圖像處理部分完全有GPU進行計算,屏幕越多需要計算的內容也隨之增多,而同時系統(tǒng)顯卡數(shù)量也會增多,所以該系統(tǒng)不會隨著拼接屏幕增多而性能下降。由于系統(tǒng)總體采用并行技術,所以將來可以方便地為系統(tǒng)加入時下流行的人機互動模塊、真實感渲染模塊等部分,使之真正成為一款高性能多媒體展示系統(tǒng),給用戶一個全方位真實的體驗。