《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 一種基于FPGA的實時NPR系統
一種基于FPGA的實時NPR系統
2015年微型機與應用第3期
孟 勇,卿粼波,何小海,呂 順
(四川大學 電子信息學院 圖像信息研究所,四川 成都 610064)
摘要: 在進行非真實感渲染(NPR)處理時需要大量的計算,這對高幀率、高分辨率的視頻做實時的NPR渲染是一個難題。根據FPGA以并行運算為主的特點,對傳統的NPR算法做了改進和簡化,最終設計了一種基于FPGA的實時NPR系統。實驗結果表明,該系統對高幀率、高分辨率的視頻做實時NPR處理具有運算速度快、系統穩定等特點,同時還具有體積小、便于攜帶等優點。
Abstract:
Key words :

  摘  要: 在進行非真實感渲染(NPR)處理時需要大量的計算,這對高幀率、高分辨率的視頻做實時的NPR渲染是一個難題。根據FPGA以并行運算為主的特點,對傳統的NPR算法做了改進和簡化,最終設計了一種基于FPGA的實時NPR系統。實驗結果表明,該系統對高幀率、高分辨率的視頻做實時NPR處理具有運算速度快、系統穩定等特點,同時還具有體積小、便于攜帶等優點。

  關鍵詞: 非真實感渲染;Prewitt邊緣檢測;擴散濾波

0 引言

  非真實感渲染(NON-photorealistic rendering,NPR)是計算機圖形學的一類技術,主要模擬藝術形式的畫面風格,也用于發展新的繪制風格。與傳統的追求真實感的計算機圖形學不同,NPR受到油畫、素描、技術圖紙和動畫卡通的影響。它已經以卡通造影的形式出現在電影和電子游戲中。非真實感繪制技術從20世紀80年代開始興起,當時的研究進展緩慢。直到90年代中期,尤其是EUROGRAPHICS和SIGGRAPH上關于這方面的幾篇論文才確立了這一領域的雛形[1]。近年來,NPR越來越多地被應用到各個領域,例如視頻通信、視頻游戲、精密程度較高的醫學和科學插圖[2],由此可見高分辨率、實時的NPR系統越來越凸顯出重要的地位。

  目前實現NPR處理主要有兩種途徑:一種是在PC機上進行處理[3-7];另一種是在嵌入式系統中進行處理[8]。參考文獻[3]和參考文獻[4]主要在PC上針對單幅圖片做了NPR處理,參考文獻[5]利用OpenCV API在計算機上對圖片和視頻實現了抽象處理,參考文獻[6]和[7]則在PC上用特征流法和光流法等特定算法對視頻做了抽象處理。在NPR系統中,圖像濾波、邊緣檢測、色彩變化等都需要大量復雜的運算。因此在PC上很難對分辨率稍大或者幀率稍高的視頻做到實時處理。又由于PC機體積較大,不方便系統的移動,所以在嵌入式系統上做NPR是必然的趨勢。參考文獻[8]則是在一個以Xilinx Virtex-2 FPGA為核心的平臺上對單一圖片做了油畫處理,但是由于其平臺的限制,并未實現對視頻的實時處理。

  本文在以Xilinx Virtex-5 FPGA為核心的自行設計的高速圖像處理平臺上,實現了對Camera Link接口相機采集到的視頻做實時的NPR渲染,并輸出到顯示器上進行顯示。本文首先對NPR算法進行講解,然后對系統和NPR算法的硬件結構做出具體分析,最后給出實驗結果及結論。

1 算法描述

  雖然NPR渲染的具體實現方法多種多樣,但是它們的處理流程大致相同。經過大量的文獻查閱,主流的NPR渲染流程都要經過邊緣增強、擴散濾波、量化光照信息三個步驟。本文也采用這種流程進行處理,每個步驟所采用的具體方法將在下面進行介紹。

  1.1 邊緣增強

  當檢測到邊緣點之后,把邊緣點的RGB分量全部置為0,即可達到邊緣增強的效果。目前主流的邊緣檢測方法有差分邊緣檢測、Roborts算子、Prewitt算子、Kirsh算子、Laplace算子、LOG算子和Canny算子,考慮到在FPGA上實現的復雜性及資源利用率,本文采用的是Prewitt算子。

001.jpg

  通常情況下,邊緣檢測每次只對圖像中3×3的圖像塊進行處理,如圖1(a)所示。圖像塊的第一行和第三行的差近似x方向的導數,第三列與第一列之差近似于y方向的導數[9]。如下所示:

  Gx=(z7+z8+z9)-(z1+z2+z3)(1)

  Gy=(z3+z6+z9)-(z1+z4+z7)(2)

  上面就是Prewitt算子,Prewitt算子只有簡單的加減法,非常適合于FPGA實現。Prewitt算子模板如圖1(b)和(c)所示。

  1.2 擴散濾波

  NPR的另一個重要步驟是擴散濾波,它能模糊較小的不連續和突出的邊緣,并且達到圖像色彩擴散的效果。處理速度較快的經典圖像濾波算法有鄰域平均法和中值濾波法等。由于要實現擴散濾波的效果且要兼顧FPGA的運算特點,本文決定采用鄰域平均法。鄰域平均法是把相鄰像素的相應分量值的平均值作為中心點像素相應分量值。若輸入圖像中某點的各分量值為f(j,k),以其為中心,取N×N的窗口像素組成的點集用A表示(其中N=3,5,7…)。經鄰域平均法濾波后,像素f(j,k)對應的輸出為[10]:

  3.png

  此算法的優點在于算法簡單,適于在FPGA上實現,而且能達到色彩擴散的目的。

  1.3量化光照信息

  抽象效果的特點是原始輸入圖像中的很多細節信息被忽略,大塊區域的顏色比較接近或均勻[3]。因此,對圖像進行亮度信息量化操作是必要的步驟,以此來實現分塊化效果。式(4)是量化的計算公式:

  4.png

  由于此計算公式需要進行正切計算,對FPGA來說復雜度較高,所以本文只是將RGB各顏色分量的低位置1,只保留高3~4位的有效信息,這樣也能達到忽略細節信息的目的,讓以前顏色基本相同的區域都保持一致。

2 硬件設計

  2.1 系統結構

  系統的前端采用的是一個Camera Link接口的工業相機,用于視頻采集。相機分辨率為767×576,幀率為60 f/s,相機時鐘為36.15 MHz。視頻數據通過Camera Link線纜傳到圖像處理平臺上,然后由一個接收芯片DS90CR288將收到的差分信號轉換成24位RGB圖像數據,再將數據傳到FPGA中。系統使用的處理器是Xilinx公司V5系列的一款FPGA芯片xc5vlx110t。FPGA利用兩片DDR2內存對圖像進行緩存、處理,最后控制DVI芯片CH7301C進行實時顯示。系統的整體架構如圖2所示。

002.jpg

  FPGA內部首先由圖像采集模塊將圖像傳到圖像采集FIFO中,然后由乒乓操作模塊將圖像采集FIFO中的數據進行乒乓操作暫存到DDR2里面,實現前后速度的匹配,再將數據輸出到圖像處理FIFO。NPR模塊讀取圖像處理FIFO中的數據進行處理后輸出到圖像顯示FIFO,最后DVI顯示模塊讀取圖像顯示FIFO中的數據進行顯示,FPGA內部模塊及其數據流向如圖3所示。

003.jpg

  2.2 NPR模塊

  經過DDR2乒乓緩存過后的24位RGB圖像數據輸出后會通過NPR模塊。在NPR模塊中,圖像數據分成兩路:一路數據進行邊緣檢測,首先通過亮度提取模塊進行亮度提取,然后進入一個行緩沖模塊,進行三行完整圖像的緩存,最后進入邊緣檢測模塊,進行水平和垂直方向的邊緣檢測。另一路數據主要進行色彩濾波和光照強度量化,以及為了達到時序匹配而做的延時。最后由選擇器進行選擇輸出,若是邊緣則輸出黑色,否則輸出另一路處理過后的圖像數據。NPR模塊整體結構如圖4所示。

004.jpg

  2.2.1 亮度分量提取

  通常情況下,邊緣檢測是對灰度圖像進行的,由于相機采集到的圖像是RGB圖像,所以必須進行彩色圖像到灰度圖像的變換,即提取亮度分量。亮度分量Y和RGB的轉換公式是:

  Y=0.229×red+0.587×green+0.114×blue(5)

  考慮到FPGA中更適合于做加減及移位運算,所以將式(5)做如下的近似變形,這樣用簡單的移位運算就可以輕松地實現亮度分量的提取:

  6.png

  這樣既能獲得較好的提取效果,又能將浮點運算和乘法運算轉化為簡單的移位運算。最后的硬件結構如圖5所示。

005.jpg

  2.2.2 邊緣檢測

  用Prewitt方法進行邊緣檢測,本質上就是將上面介紹的Prewitt算子分別與灰度圖像做卷積,然后用梯度計算公式計算該點的梯度值。要實現圖像與模板的卷積,必須同時獲得三行圖像的數據,為了達到這個目的,本系統使用一個三行移位寄存器組,用來存儲前一步得到的亮度信息,效果如圖6所示。

010.jpg

  每次將這三行的前三個點組成的一個3×3矩陣分別與模板作卷積,就能分別得到垂直與水平方向的梯度。為了避免開方運算,直接將垂直與水平方向的梯度與門限做比較,只要任一方向的梯度高于門限值,就認定這個點是邊緣點,上述操作雖然要求得到梯度值的絕對值,但與典型開方近似運算JPL算法相比,減少了3個時鐘周期并且降低了算法復雜度。經過多次實驗對比驗證,本系統最后選定了一個固定的門限值30。其垂直與水平方向的邊緣檢測硬件結構圖分別如圖7(a)和(b)所示。

006.jpg

  2.2.3 擴散濾波

  視頻中的圖像幀通常帶有時域和空域的噪聲,因此,首先需要對其進行平滑去噪處理。通常情況下使用的是雙邊濾波,雙邊濾波是結合圖像的空間臨近度和像素值相似度的一種折中方法,離得較遠的點不會對邊緣上的像素值造成太大影響,具有簡單、非迭代、局部的特點,可以實現邊緣保存,而維納濾波和高斯濾波都會有明顯的模糊邊緣。本文采用一種和雙邊濾波的局部特點相似的方法,將圖像分成2×2的小塊,同時進行時域和空域的均值濾波。

  首先進行時間域濾波。這個模塊會把當前像素點的值與過去該點的值做平均計算,其中過去的值存儲在一個FPGA上的block ram模塊里面,因為系統最后會把低位全部置為1,所以低位并沒有必要做處理,因此每個像素點只存RGB的高4位。本文決定使用4幀圖像來做平均值計算,因為這樣系統只需要將當前值的1/4與過去值的3/4相加即可,而過去值的3/4可以表示為1減去1/4,這有利于FPGA實現,將除法運算變成了簡單的移位運算。公式如下所示:

  7.png

  硬件實現如圖8所示。

007.jpg

  然后進行空間域的均值濾波。本文將圖像劃分為2×2的小塊,每次濾波都以這種小塊為基礎,這個特點類似于雙邊濾波器的局部特性,有利于做到邊緣保持。具體做法是:先設計兩個計數器,用來模擬圖像的行計數Y與列計數X,然后將X與Y方向坐標的最低位移除以產生block ram模塊的地址,這樣就使相鄰的4個點都參考block ram模塊的同一個點。使用此方法可以減少FPGA上實現block ram模塊的資源大小,節約資源。由于block ram模塊的讀和寫各需要一個時鐘周期,如果要做濾波,每個時鐘周期都需要從block ram模塊里面讀出一個舊值,同時還要存入前一個時鐘變化后的值,這就導致了一定的時序問題,但是由于系統是以2×2的塊進行濾波,相鄰的四個點參考同一個點,因此系統就可以用一個時鐘讀出block ram模塊里的數據并做處理,處理后的數據暫存在寄存器中,第二個時鐘周期到來的時候就可以將剛才寄存器中的數據拿來參加計算而不必重新從block ram模塊中讀出數據。與此同時,利用列計數X的最低位來控制將變化后的數據存進block ram模塊,以達到時序的匹配。至此,濾波結束。整個流程的硬件結構如圖9所示。

008.jpg

  2.2.4 量化光照信息

  由于量化光照信息算法復雜度較高,不利于在FPGA上實現,本文只簡單地將紅綠藍通道低位全部置1。而人眼對綠色分量變化敏感,所以對綠色通道保留高4位的有效信息,紅和藍通道只保留高3位的信息,這樣做可以忽略色彩變化不明顯的區域,達到量化光照信息的目的。

3 實驗結果

009.jpg

  由于相機分辨率限制,本文只對分辨率為640×480、幀率為60 f/s的視頻進行驗證。由于NPR模塊需要緩存三行數據,處理時鐘為64.8 MHz,所以總延時t可由式(8)計算得30 ?滋s,達到了實時處理的效果。由前面的算法分析知本系統采用流水線結構,時延小,完全可以對分辨率更高、幀率更高的視頻做實時NPR渲染。本系統在ISE下綜合之后的資源利用率如表1所示,系統僅消耗了整個FPGA slice資源的5%。但是由于要在FPGA上暫存1/4幀的圖像以及三行完整的圖像數據,所以消耗了39%的Block RAM資源。如果圖像更大,可以考慮在FPGA外圍加上SRAM芯片,這樣可以避免占用太多FPGA片上的Block RAM資源。

  4PDKV2{%_UILM7K]ARHRLK7.png

4 結論

  非真實感渲染技術越來越多地被應用到各個領域中。本文使用VHDL語言設計了基于FPGA的實時NPR系統,該系統在自行研發的以Virtex-5 FPGA為核心的高速圖像處理平臺上得到了實現,并且具體分析了NPR算法的硬件實現流程及方法。由實驗結果可知,該系統實時性好、體積小、便于攜帶,具有較強的工程應用價值。

參考文獻

  [1] 吳友.基于圖像的彩色鉛筆畫快速生成算法研究[D].長沙:長沙理工大學,2012.

  [2] 李倩影,陳鍛生.人臉圖像風格化綜述[J].微型機與應用,2014,33(9):4-6.

  [3] 陳喬,錢文華,徐丹,等.基于非真實感繪制的抽象藝術效果實現[J].計算機應用,2010(12):189-191.

  [4] Yang Ming, Lin Shu, Luo Ping, et al. Semantics-driven portrait cartoon stylization[C]. Image Processing (ICIP), 2010 17th IEEE International Conference on. IEEE, 2010: 1805-1808.

  [5] 宋杰,徐丹,時永杰.視覺感知的圖像和視頻抽象[J].中國圖象圖形學報,2013,18(4):450-908.

  [6] CHE D, MIAO Z . Real-time cartoon style video generation[C]. Image Analysis and Signal Processing(IASP), 2010 International Conference on. IEEE, 2010:640-643.

  [7] Zhang Songhai, Li Xianying, Hu Shimin, et al. Online video stream abstraction and stylization[J]. Multimedia, IEEE Transactions on, 2011,13(6):1286-1294.

  [8] 蔡小波,張學杰.一種油畫生成方法及其在FPGA上的實現[J].云南大學學報(自然科學版),2007(S2):133-137.

  [9] GONZALEZ R C, WOODS R E.數字圖像處理(第二版)[M].阮秋琦,阮宇智,譯.北京:電子工業出版社,2007:467-469.

  [10] 曹振華.嵌入式實時系統圖像濾波算法研究[J].蘇州大學學報:工科版,2010,30(1):37-41.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 91香蕉国产在线观看人员| 久久综合香蕉国产蜜臀av| 老扒夜夜春宵粗大好爽aa毛片| 在线观看国产精美视频| 久久国产精品99精品国产| 欧美视频免费在线观看| 啊灬啊灬啊灬快好深在线观看| 日本最大色倩网站www| 大桥未久全63部作品番号| 久久久久久一区国产精品| 欧美国产激情二区三区| 免费观看一级特黄欧美大片| 高清一级做a爱过程免费视频| 国偷自产视频一区二区久| 两性色午夜免费视频| 朝鲜女人性猛交| 亚洲综合无码一区二区| 老司机深夜影院| 国产成人a毛片在线| 91亚洲va在线天线va天堂va国产| 性高湖久久久久久久久| 久久精品人人爽人人爽| 欧美日韩国产另类一区二区三区| 初尝黑人巨砲波多野结衣| 青青青国产精品视频| 国产精品亚洲αv天堂2021| av在线手机播放| 成年在线网站免费观看无广告| 五月婷在线视频| 欧美激情校园春色| 免费v片在线看| 美女污污视频在线观看| 国产在线五月综合婷婷| 老妇bbwbbw视频| 国内自拍视频一区二区三区| 一区精品麻豆入口| 无码人妻精品一区二区三区9厂 | 免费看小12萝裸体视频国产 | 成年女性特黄午夜视频免费看| 久久综合九色综合91| 欧美亚洲图片小说|