現代GPU提供了頂點處理器和片段處理器兩個可編程并行處理部件。在利用GPU執行圖像處理等通用計算任務時,要做的主要工作是把待求解的任務映射到GPU支持的圖形繪制流水線上。
通常的方法是把計算任務的輸入數據用頂點的位置、顏色、法向量等屬性或者紋理等圖形繪制要素來表達,而相應的處理算法則被分解為一系列的執行步驟,并改寫為GPU的頂點處理程序或片段處理程序,然后,調用3D API執行圖形繪制操作,調用片段程序進行處理;最后,保存在幀緩存中的繪制結果就是算法的輸出數據。
雖然數字圖像處理算法多種多樣,具體實現過程也很不相同,但是在利用GPU進行并行化處理時,有一些共性的關鍵技術問題需要解決,如:數據的加載,計算結果的反饋、保存等。
下面對這些共性的問題進行分析,并提出相應的解決思路。
1. 數據加載
在GPU的流式編程模型中,所有的數據都必須以“流”的形式進行加載處理,并通過抽象的3D API進行訪問。在利用GPU進行圖像處理時,最直接有效的數據加載方法是把待處理的圖像打包為紋理,在繪制四邊形時進行加載、處理。同時為了保證GPU上片段程序能夠逐像素的對紋理圖像進行處理,必須將投影變換設置為正交投影,視點變換的視區與紋理大小相同,使得光柵化后的每個片段(fragment)和每個紋理單元(texel)一一對應。對于圖像處理算法中的其他參數,如果數據量很小,則可以直接通過接口函數進行設置;如果參數比較多,也應該將其打包為紋理的形式傳輸給GPU。在打包的過程中應充分利用紋理圖像所具有的R、G、B、A四個通道。
2. 計算結果的反饋、保存
應用程序是通過調用3D API繪制帶紋理的四邊形,激活GPU上的片段程序進行圖像處理的,而GPU片段著色器的直接渲染輸出是一個幀緩沖區,它對應著計算機屏幕上的一個窗口,傳統上用來容納要顯示到屏幕的像素,但是在GPU流式計算中可以用來保存計算結果。雖然CPU可以通過3D API直接讀寫這個幀緩沖區,將渲染處理的結果從幀緩存中復制到系統內存進行保存,但是幀緩存的大小受窗口大小限制,而且由于AGP總線的帶寬限制(2.1GB/s),從顯存到系統
鏡像變換 GPU 渲染主要包括以下幾個步驟:
設置 1 個輸入紋理;
對輸入紋理進行紋理采樣;
設置變換矩陣;
在頂點著色器中,將輸入頂點與變換矩陣相乘;
輸出圖像數據;
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
19259瀏覽量
229653 -
gpu
+關注
關注
28文章
4729瀏覽量
128890 -
計算機
+關注
關注
19文章
7488瀏覽量
87852
原文標題:【光電智造】GPU圖像處理的基本流程
文章出處:【微信號:今日光電,微信公眾號:今日光電】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論