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