国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

三維圖形紋理函數(shù)在二維圖像處理中的應(yīng)用

2015-12-30 09:19張?zhí)礻?/span>何志毅
科技視界 2015年18期
關(guān)鍵詞:著色器復(fù)雜度頂點(diǎn)

張?zhí)礻?何志毅

(桂林電子科技大學(xué)信息與通信學(xué)院,廣西 桂林541004)

0 引言

在采集視頻圖像的傳輸過(guò)程中,受諸多因素的影響,可能導(dǎo)致圖像的退化。均值濾波是一種常用的線性平滑濾波器[1],因易于設(shè)計(jì)和在多處場(chǎng)合的優(yōu)越性能而成為信號(hào)處理的重要手段,它直接在圖像空間域上對(duì)圖像局部窗口取均值代替窗口中心像素的值,可以在一定程度上對(duì)高斯噪聲加以抑制。但由于其運(yùn)算的時(shí)間復(fù)雜度高,因此不能滿足幀速較高的實(shí)時(shí)視頻圖像的處理[2]。

然而圖形硬件技術(shù)的飛速發(fā)展給予了我們這種契機(jī)。從90年代中期開始,Direct3D7.0引入了基于硬件加速的“轉(zhuǎn)換和光照(transform and light,Tffamp;L)”,并首先得到了NVIDIA公司的GeForce 256(代號(hào)NV10)芯片的支持,從而使得三維硬件加速?gòu)膯我坏墓鈻呕l(fā)展成為具有多個(gè)階段的渲染流水線[3]。運(yùn)用Direct3D技術(shù)在加速處理圖像和計(jì)算機(jī)視覺(jué)中的應(yīng)用研究成果最為突出。Fung等人利用GPU的高速計(jì)算能力,實(shí)現(xiàn)了基于相機(jī)的人臉跟蹤系統(tǒng)[4],Abate等人實(shí)現(xiàn)了在GPU上基于Direct3D的三維人臉識(shí)別[5];Ujaldón等人利用GPU中的光柵器實(shí)現(xiàn)了Hough變換,用于在二維圖像中檢測(cè)圓[6]。現(xiàn)有的成果也以事實(shí)證明,將均值濾波移植到Direct3D中來(lái),可以實(shí)現(xiàn)對(duì)其時(shí)間復(fù)雜度的降低。

1 鄰域平均法的均值濾波

鄰域均值濾波法是一種空間域圖像增強(qiáng)法,是典型的線性濾波算法,它是指在圖像上對(duì)目標(biāo)像素給定一個(gè)模版,該模版包含了其周圍鄰域的像素(已目標(biāo)像素為中心的周圍8個(gè)像素,構(gòu)成一個(gè)濾波器),再用模版中的全體像素的平均值來(lái)代替原來(lái)的像素值。

設(shè)定F(x,y)為N*N的輸入圖像,若平滑增強(qiáng)后的圖像為G(x,y),則有

其中x,y=0,1,...,N-1;S為(x,y)鄰域內(nèi)像素坐標(biāo)的集合;M表示集合S內(nèi)像素的總數(shù)。根據(jù)M值的選取分為了如下幾個(gè)常用的濾波模版:

采用1/8的模版用VC++對(duì)鄰域均值算法加以實(shí)現(xiàn),得到噪聲圖像的處理前后效果如圖1所示。

圖1

均值計(jì)算占用了均值濾波處理的大量時(shí)間費(fèi)用[7],接下來(lái)我們將介紹如何運(yùn)用Direct3D進(jìn)行圖像的均值濾波并大幅度降低該算法的時(shí)間復(fù)雜度。

2 基于Direct3D渲染目標(biāo)

2.1 Direct3D和GDI訪問(wèn)硬件的不同方式

目前在Windows上采用GDI(圖形設(shè)備接口)的處理方法主要分為空域方法和頻域方法,空域方法直接作用于圖像中的像素點(diǎn),該方法延伸的算法便于理解,但是每次處理都要遍歷每一個(gè)像素點(diǎn),占用大量?jī)?nèi)的內(nèi)存和耗費(fèi)很長(zhǎng)的時(shí)間,因此不適用于對(duì)視頻進(jìn)行操作和處理。頻域方法則將初始圖像通過(guò)傅里葉變換至頻率域,對(duì)頻率域進(jìn)行處理,經(jīng)過(guò)傅里葉反變換后獲取圖像結(jié)果。因其基本采用的都是高精度的算法而經(jīng)常運(yùn)用在目標(biāo)檢測(cè)、目標(biāo)跟蹤等實(shí)際應(yīng)用上。但是大量的數(shù)學(xué)運(yùn)算需要占用一定的內(nèi)存空間,因此一些高復(fù)雜度的算法會(huì)占用處理每幀圖象的時(shí)間而無(wú)法達(dá)到幀同步既而無(wú)法完成要求較高的基于視頻的目標(biāo)檢測(cè)。Direct3D技術(shù)的誕生則解決了一些幀同步的問(wèn)題。由于其Texture直接對(duì)底層硬件進(jìn)行操作,因此可以用很少的代碼,就可以使用Direct3D的新接口完成二維圖形處理而僅僅占用少量的時(shí)間。另外,還可以得到各種各樣非常卓越的效果,例如縮放、旋轉(zhuǎn)、透明以及光照等,而且Direct3D技術(shù)對(duì)硬件支持廣泛,其顯示效果完全能夠達(dá)到視頻逐幀圖像處理的要求。

2.2 渲染流程

渲染3D對(duì)象的任務(wù)可分為兩個(gè)階段,第一階段成為轉(zhuǎn)換和照明。在這個(gè)過(guò)程中,未經(jīng)轉(zhuǎn)換和照明的頂點(diǎn)從一段進(jìn)入,經(jīng)過(guò)網(wǎng)格化和固定功能的管道從另一端出來(lái)。其中,固定管道包括世界變換、觀察變換、背景剔除、燈光材質(zhì)、裁剪、投影變換、視口變換幾個(gè)步驟。第二階段稱為光柵化處理,圖元用于將這些經(jīng)過(guò)經(jīng)過(guò)轉(zhuǎn)換并添加了照明效果的頂點(diǎn)組織為點(diǎn)、線和三角形。光柵處理程序使繪制結(jié)果形成DireceDraw表面,該表面成為渲染目標(biāo),同時(shí)應(yīng)用紋理映射圖并添加多種屬性,如兩個(gè)相連頂點(diǎn)間的顏色。

3 基于Direct3D的均值濾波方法

鄰域平均法的均值濾波是圖像預(yù)處理中圖像平滑和消噪常用的方法。由于均值濾波算法的時(shí)間復(fù)雜度較高而不被應(yīng)用于視頻幀處理中。本節(jié)主要講述如何運(yùn)用Direct3D中的頂點(diǎn)著色器和像素著色器來(lái)對(duì)紋理坐標(biāo)進(jìn)行操作來(lái)降低均值濾波算法的時(shí)間復(fù)雜度從而達(dá)到對(duì)每幀圖像通過(guò)均值濾波進(jìn)行平滑預(yù)處理的目的。

頂點(diǎn)著色器(Vertex Shader)是一個(gè)在圖形卡的GPU上執(zhí)行的程序,它可以進(jìn)行編程,并將代碼傳給GPU進(jìn)行計(jì)算,然后通過(guò)屏幕顯示出來(lái)。它替換了在渲染3D對(duì)象中固定功能管線(fixed function pipeline)中的變換(transformation)和光照(lighting)階段。頂點(diǎn)著色器通過(guò)頂點(diǎn)作為輸入數(shù)據(jù),只要將頂點(diǎn)緩存數(shù)據(jù)傳入GPU就會(huì)執(zhí)行;像素著色器(Pixel Shader)以從頂點(diǎn)著色器輸出的值為基準(zhǔn),對(duì)畫面輸出的像素進(jìn)行運(yùn)算。下面給出每一步的具體實(shí)現(xiàn)原理:

3.1 初始化3D環(huán)境

Direct3D需要經(jīng)歷幾個(gè)步驟來(lái)為應(yīng)用程序做準(zhǔn)備:

●創(chuàng)建IDirect3D9對(duì)象。

●檢查IDirect3D9對(duì)象的性能并選擇一個(gè)合適的設(shè)備類型。

●為適配器選擇一個(gè)顯示適配器和顯示模式。

●創(chuàng)建并初始化IDirect3DDevice9對(duì)象。

●將待處理的位圖加載到紋理上。

3.2 在MFC中構(gòu)建Mesh類

在Mesh中內(nèi)置所有頂點(diǎn)緩沖、索引緩沖以及頂點(diǎn)格式的信息。頂點(diǎn)緩沖是儲(chǔ)存頂點(diǎn)信息的一種方法,它的內(nèi)存由Direct3D進(jìn)行管理并存放在顯存內(nèi),而不需要渲染每一幀時(shí)再將數(shù)據(jù)拷貝到顯卡,從而提高了處理圖像的性能。索引緩沖就像一個(gè)包含了數(shù)字的數(shù)組,而這些數(shù)字引用了頂點(diǎn)緩沖中的頂點(diǎn),索引緩沖有點(diǎn)像將頂點(diǎn)緩沖作為頂點(diǎn)的調(diào)色板來(lái)使用。當(dāng)頂點(diǎn)著色器和像素著色器對(duì)頂點(diǎn)數(shù)據(jù)進(jìn)行處理后,使用DrawSubset()方法用紋理對(duì)Mesh中的表面進(jìn)行渲染。以下為用處理后的紋理渲染Mesh的關(guān)鍵代碼:

3.3 著色器對(duì)頂點(diǎn)坐標(biāo)進(jìn)行操作達(dá)到均值濾波效果

上述代碼中的m_pVsh即為頂點(diǎn)著色器文件,m_pPsh為像素著色器文件。下列三行代碼和兩個(gè)著色器內(nèi)的代碼共同完成了對(duì)頂點(diǎn)坐標(biāo)進(jìn)行操作的任務(wù)。

float ifl=0.001f;

m_pd3dDevice-ffgt;SetVertexShaderConstantF(13,D3DXVECTOR4(ifl,-ifl,ifl*2,-ifl*2),1);

m_pd3dDevice-ffgt;SetVertexShaderConstantF (14,D3DXVECTOR4(0.0006f,0.0016f,0,0),1);

上述代碼聲明了常量寄存器來(lái)使著色器得到變換矩陣。由于著色器直接在GPU操作,因此采用匯編語(yǔ)言進(jìn)行編碼。

其中,每一個(gè)頂點(diǎn)信息中最多包含八組紋理坐標(biāo)。我們的目的是將一組原始的頂點(diǎn)紋理坐標(biāo)通過(guò)矢量的運(yùn)算最終形成八組紋理坐標(biāo)并儲(chǔ)存在一個(gè)頂點(diǎn)信息內(nèi)。每個(gè)形成的紋理坐標(biāo)分別對(duì)應(yīng)原始紋理坐標(biāo)在二維平面上、下、左、右、左上、右上、左下、右下平移后的位置。平移的量值根據(jù)上述聲明的常量寄存器而定。

頂點(diǎn)著色器的目的是將八組紋理坐標(biāo)加載到頂點(diǎn)信息內(nèi),接下來(lái)的任務(wù)就交給像素著色器m_pPsh對(duì)紋理進(jìn)行渲染。在m_pPsh內(nèi),分別用八組紋理坐標(biāo)對(duì)原始紋理的像素進(jìn)行加載,并把八組渲染結(jié)果累加在寄存器r0中,則當(dāng)前每個(gè)像素點(diǎn)的值就相當(dāng)于鄰域八個(gè)點(diǎn)像素值的累加之和。對(duì)r0中的數(shù)據(jù)求均值,最終得到的紋理圖像即可達(dá)到對(duì)原始紋理圖像均值濾波的效果。

3.4 將渲染后的紋理加載到表面上進(jìn)行處理

將處理后的紋理加載到表面上,通過(guò)對(duì)表面的操作既而達(dá)到了對(duì)紋理內(nèi)的圖像的操作。若想對(duì)預(yù)處理后的圖像進(jìn)行下一步的操作,只需處理表面內(nèi)部的RECTs數(shù)組。它描述了表面所包含的矩形區(qū)域的像素,獲得它之前需要鎖定圖像表面。鎖定圖像表面和傳輸頂點(diǎn)數(shù)據(jù)到頂點(diǎn)緩沖的采用的方式相似:

m_pMesh-ffgt;m_pTex-ffgt;LockRect(0,ffamp;m_pMesh-ffgt;m_TexRect,0,0);//鎖定圖像表面

/*在這里對(duì)m_TexRect內(nèi)的像素進(jìn)行操作*/

m_pMesh-ffgt;m_pTex-ffgt;UnlockRect(0);//解鎖圖像表面

最終將表面內(nèi)的內(nèi)存數(shù)據(jù)顯示在屏幕上,即完成了運(yùn)用Direct3D技術(shù)對(duì)二維圖像進(jìn)行均值濾波預(yù)處理的全部流程。另外,在Mesh中創(chuàng)建不同大小的原始紋理坐標(biāo)亦可對(duì)整幅位圖進(jìn)行插值或均值處理。由此可見(jiàn),Direct3D技術(shù)在處理二維圖像中還有廣闊的發(fā)掘前景。

4 結(jié)語(yǔ)

本文介紹的這種用著色器配合Direct3D的渲染技術(shù)對(duì)二維圖像的處理方法,不僅僅大幅度的降低了均值濾波算法的時(shí)間復(fù)雜度,還可以加速實(shí)現(xiàn)后續(xù)對(duì)紋理中整幅位圖的全局處理,例如圖像的縮放,旋轉(zhuǎn)等等,并且對(duì)圖像的處理速度較比于通過(guò)GDI訪問(wèn)硬件進(jìn)行處理提升了三到四倍。

[1]王明翠,顧海明.均值均方差在基于DCT的圖像壓縮算法中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2007,27(B06):162-163.

[2]張麗,陳志強(qiáng),高文煥,等.均值加速的快速中值濾波算法[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2005,44(9):1157-1159.

[3]From Wikipedia.Graphics processing unit[OL].http://en.wikipedia.org/wiki/Graphics_processing_unit.2009.

[4]Fung J,Mann S.Computer vision signal processing on graphics processing units[C]//Acoustics,Speech,and Signal Processing,2004.Proceedings.(ICASSP'04).IEEE International Conference on.IEEE,2004,5:V-93-6 vol.5.

[5]Noe K?,Tanderup K,Lindegaard J C,et al.GPU accelerated viscous-fluid deformable registration for radiotherapy[J].DAIMI Report Series,2007,36(583).

[6]Ujaldón M,Ruiz A,Guil N.On the computation of the Circle Hough Transform by a GPU rasterizer[J].Pattern Recognition Letters,2008,29(3):309-318.

[7]常瑞娜,穆曉敏,楊守義,等.基于中值的自適應(yīng)均值濾波算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(16):4257-4259.

猜你喜歡
著色器復(fù)雜度頂點(diǎn)
過(guò)非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
基于UE4 實(shí)時(shí)射線追蹤技術(shù)的研究與探討
基于Unity Shader石油泄漏現(xiàn)象模擬的研究
基于IMx6的opengl圖形著色器開發(fā)研究
一種低復(fù)雜度的慣性/GNSS矢量深組合方法
關(guān)于頂點(diǎn)染色的一個(gè)猜想
求圖上廣探樹的時(shí)間復(fù)雜度
某雷達(dá)導(dǎo)51 頭中心控制軟件圈復(fù)雜度分析與改進(jìn)
出口技術(shù)復(fù)雜度研究回顧與評(píng)述
基于可編程渲染管線的雷達(dá)圖像分層模型設(shè)計(jì)與實(shí)現(xiàn)