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

?

各向異性模型圖像增強(qiáng)算法的FPGA高速實現(xiàn)

2019-10-18 07:52張?zhí)煜?/span>劉瑞強(qiáng)劉艷莉張艷花張鵬程桂志國
測試技術(shù)學(xué)報 2019年5期
關(guān)鍵詞:處理結(jié)果圖像增強(qiáng)灰度

張?zhí)煜?,劉瑞?qiáng),周 沖,劉艷莉,張艷花,張鵬程,桂志國

(1.中北大學(xué) 生物醫(yī)學(xué)成像與影像大數(shù)據(jù)山西省重點實驗室,山西 太原 030051;2.哈爾濱工業(yè)大學(xué) 電子與信息工程學(xué)院,黑龍江 哈爾濱 150001;3.中北大學(xué) 信息與通信工程學(xué)院,山西 太原 030051)

隨著傳感器技術(shù)的發(fā)展,圖像增強(qiáng)技術(shù)已經(jīng)應(yīng)用在工業(yè)檢測、無人機(jī)識別、生物醫(yī)學(xué)成像等多個領(lǐng)域.圖像增強(qiáng)技術(shù)對于實時性要求越來越高,所以越來越多的應(yīng)用領(lǐng)域要求降低算法的時延.實時性要求算法能夠在1 s內(nèi)處理25幀以上圖像,才能滿足人眼的視覺感受,使人眼不會感到卡頓的現(xiàn)象.圖像增強(qiáng)算法中,偏微分方程的圖像增強(qiáng)算法不僅能夠提高圖像對比度,也能較大程度地保留細(xì)節(jié)信息[1-2],但由于操作過程中圖像迭代次數(shù)較多并且每次對整幅圖像進(jìn)行遍歷,在CPU上執(zhí)行圖像的遍歷計算的效率很低[3],運(yùn)行Perona-Malik模型算法處理一幀圖像的時間都在200 ms以上,很難實現(xiàn)算法的實時性處理.

現(xiàn)場可編程門陣列(FPGA)憑借其靈活性好、集成度高、并行處理、開發(fā)周期短等特點已經(jīng)廣泛應(yīng)用于圖像處理的各類加速應(yīng)用中.近年來,將FPGA與傳統(tǒng)嵌入式芯片的融合也成為了一種替代原有技術(shù)的方案.同時,將FPGA作為CPU外帶加速卡已經(jīng)被廣泛應(yīng)用[4],F(xiàn)PGA加速卡不僅能夠為CPU快速實現(xiàn)算法,更有千兆網(wǎng)接口、PCIe接口等來保證超快速地傳輸數(shù)據(jù).

因此,本文提出一種基于各向異性分散模型圖像增強(qiáng)算法的FPGA硬件實現(xiàn)結(jié)構(gòu).該算法是在Perona-Malik模型基礎(chǔ)上的一種改進(jìn)算法,圖像經(jīng)過該算法處理后,對比度有所提高,圖像細(xì)節(jié)明顯增強(qiáng).本文所設(shè)計的硬件結(jié)構(gòu)通過參數(shù)表,流水線處理以及行緩存等操作實現(xiàn).通過軟件實現(xiàn)和Modelsim仿真對結(jié)果進(jìn)行對比,根據(jù)主客觀評價分析表明,將此算法實現(xiàn)在FPGA上,處理效果與軟件實現(xiàn)近似,并且滿足實時性處理要求.

1 圖像的各向異性擴(kuò)散模型

1.1 Perona-Malik模型

Perona-Malik模型是一種各向異性擴(kuò)散模型,迭代格式十分簡明,算法復(fù)雜度較低.模型如下:設(shè)圖像定義在整個二維平面內(nèi),原始圖像I(x,y,0)=I(x,y)隨時間t演化為圖像I(x,y,t)[5-7],演化規(guī)則為

(1)

式中:c(x,y,t)稱作擴(kuò)散函數(shù),根據(jù)擴(kuò)散函數(shù)的值是否趨近于0來判斷圖像在區(qū)域內(nèi)是否需要平滑操作.

將I(x,y,t)定義為灰度圖像的次迭代結(jié)果,(x,y,0)為初始圖像.迭代形式為

I(x,y,t+1)=I(x,y,t)+

(2)

設(shè)可能的擴(kuò)散函數(shù)c(x,y,t)

(3)

式中:常數(shù)K為擴(kuò)散常數(shù)或者流常數(shù),作為邊緣強(qiáng)度的閾值.一般定義流函數(shù)為

Φ(x,y,t)=g(|I|)·I(x,y,t).

(4)

圖1 中(a),(b)分別表示擴(kuò)散函數(shù)和流函數(shù).

圖1 Perona-Malik模型的函數(shù)圖

圖1(b)中顯示隨著流常數(shù)K的增大,平滑效果越明顯,當(dāng)I=K時,平滑效果最好,當(dāng)I>4K后,平滑效果趨近于零.因此在圖像邊緣增強(qiáng)過程中,選擇K使其略小于邊緣的梯度幅度,有利于邊緣增強(qiáng)[8].隨著迭代次數(shù)的增加,圖像的細(xì)節(jié)逐漸被模糊,只能停止擴(kuò)散來保留圖像原有的細(xì)節(jié)信息[9],限制了該模型在圖像增強(qiáng)領(lǐng)域的應(yīng)用.

1.2 改進(jìn)型Perona-Malik模型

為了保留圖像的細(xì)節(jié)信息,同時提升圖像對比度,在Perona-Malik模型中融合銳化操作.改進(jìn)后的模型不僅能夠?qū)Ρ尘皡^(qū)域進(jìn)行平滑操作,也能夠在邊緣區(qū)域進(jìn)行銳化操作,這樣在提升對比度的同時也不會模糊掉圖像的細(xì)節(jié)信息[10].類似傳統(tǒng)的Perona-Malik模型,其迭代形式為

I(x,y,t+1)=I(x,y,t)+

(5)

式中:h(x,y,t)功能上是一個銳化函數(shù),定義

h(i)=ω·[1-g(i)],

(6)

式中:g(i)為擴(kuò)散函數(shù);ω為銳化程度系數(shù),0≤ω≤1.它決定了相應(yīng)擴(kuò)散系數(shù)的銳化程度.將擴(kuò)散函數(shù)g(i)帶入式(6)的c(x,y,t)中,得到

I(x,y,t+1)=I(x,y,t)+

(7)

式中:將g(I)-h(I)作為新的擴(kuò)散函數(shù),根據(jù)式(4)得出新的流函數(shù)

Φ(x,y,t)=

[g(|I|)-h(|I|)]·I(x,y,t).

(8)

圖2(a)所示為不同ω值下的新擴(kuò)散函數(shù).在圖2(b)中取定ω=0.2,當(dāng)I>2.24K,即時,擴(kuò)散函數(shù)和流函數(shù)降為負(fù)值,這里的正負(fù)值表明:對I>2.24K的邊緣區(qū)域進(jìn)行銳化操作,對I<2.24K的非邊緣區(qū)域進(jìn)行平滑操作.因此,選取合適的ω和K值,使改進(jìn)型模型自適應(yīng)地進(jìn)行平滑或銳化操作,從而提升圖像對比度并保留圖像細(xì)節(jié)[11],本文選取=0.15和K=1來計算擴(kuò)散系數(shù).

圖2 改進(jìn)型Perona-Malik模型的函數(shù)圖

2 基于FPGA的硬件實現(xiàn)

采用Xilinx公司出品的Zynq-7000 SoC開發(fā)平臺,芯片型號為XC7Z020.開發(fā)平臺有以下主要資源:ARM雙核Cortex-A9處理器,處理器工作頻率667 MHz,8個DMA通道,其中4個專用于可編程邏輯,PS端(ARM)與PL端(FPGA)通過AXI總線接口相連接,PL端含有85 000個邏輯單元(LE),53 200個查找表(LUT),106 400個觸發(fā)器(FF),60個 36 Kb塊RAM,220個可編程DSP切片[12],開發(fā)板工作電壓為5 V.

2.1 算法硬件結(jié)構(gòu)

通過Verilog HDL硬件描述語言設(shè)計改進(jìn)型Perona-Malik模型,輸入圖像I(x,y,t)通過N次迭代處理后輸出圖像I(x,y,t+N),每次迭代處理都由4部分組成,并且使用流水線處理來達(dá)到提高運(yùn)算速率的目的[13].硬件結(jié)構(gòu)如圖3所示.

首先將輸入圖像經(jīng)過行緩存,當(dāng)緩存的行數(shù)達(dá)到2行,即可與當(dāng)前輸入行的數(shù)據(jù)滿足3行數(shù)據(jù)同時傳輸.當(dāng)3行數(shù)據(jù)滿足3×3的窗口處理模板后,通過窗口模板計算4個方向的梯度.然后將梯度值絕對值|I|傳入?yún)?shù)表中進(jìn)行查表操作得出每個方向的擴(kuò)散系數(shù),最后將輸出圖像和每個方向的值進(jìn)行累加,得到一次迭代處理的結(jié)果.

在行緩存過程中,由于輸入圖像四周的像素不進(jìn)行處理,為保證后續(xù)處理過程的統(tǒng)一性,如圖4所示,通過計數(shù)器來判斷像素位置,并添加1位標(biāo)志位進(jìn)入行緩存中,后續(xù)處理中只需判斷標(biāo)志位來決定是否需要對像素進(jìn)行處理.

圖3 Perona-Malik模型算法硬件結(jié)構(gòu)圖

圖4 行緩存與流水線操作

流水線中參數(shù)表的建立是為了減少迭代過程中的復(fù)雜計算.首先將式(7)中的擴(kuò)散函數(shù)g(I)-h(I)取定ω和K值,計算出擴(kuò)散系數(shù)c.輸入圖像為8 b灰度圖像,梯度絕對值|I|在[0,255]范圍內(nèi).在迭代過程中,各個方向的計算結(jié)果是Si=|I|i×ci.所以參數(shù)表以梯度絕對值|I| 為索引,采用深度為256的ROM來存儲各個方向的計算結(jié)果Si.

計算參數(shù)表時用定點小數(shù)表示浮點小數(shù).用 8 bit 數(shù)據(jù)來表示小數(shù)部分,對于灰度值區(qū)間為[0,255]的8 bit灰度圖來說,誤差只要小于0.5,在灰度值取整過程中就不會出現(xiàn)圖像信息缺失的問題.參數(shù)表實際值域為[-9.56,0.1],參數(shù)表使用8位定點小數(shù)表示后的最小分辨率為0.038,滿足計算精度要求.所以,結(jié)合上文負(fù)數(shù)的補(bǔ)碼表示,對參數(shù)表中數(shù)據(jù)保存格式如圖5所示,有1 bit 符號位+8 bit整數(shù)位+8 bit小數(shù)位,等效于將數(shù)值擴(kuò)大256倍,為保證小數(shù)部分截去的尾數(shù)誤差更小,對結(jié)果加0.5后進(jìn)行取整,則參數(shù)表存儲的值域為[-2 448,26],均采用補(bǔ)碼來表示.

圖5 參數(shù)表數(shù)據(jù)保存格式

除行緩存外,該算法結(jié)構(gòu)對每一幀圖像一次迭代計算只需要經(jīng)過3次加法計算和1次查表操作,避免了乘法以及平方等更加復(fù)雜的計算,計算過程經(jīng)過4個時鐘周期即可完成.

2.2 系統(tǒng)整體結(jié)構(gòu)

系統(tǒng)采用Zynq平臺實現(xiàn),由Zynq芯片,OV5640攝像頭、DDR3內(nèi)存緩存、VGA/HDMI顯示器構(gòu)成.系統(tǒng)結(jié)構(gòu)框架如圖6所示,分為硬件設(shè)計(PL)和軟件設(shè)計(PS)兩部分,其中硬件部分包括數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)緩存模塊和圖像顯示模塊.軟件部分包括OV5640攝像頭驅(qū)動、數(shù)據(jù)緩存和DMA驅(qū)動控制,軟硬件之間通過AXI接口進(jìn)行通信.

圖6 系統(tǒng)硬件結(jié)構(gòu)圖

PS端最高工作頻率設(shè)置為667 MHz,PL端從數(shù)據(jù)采集模塊到DMA的工作頻率為100 MHz,OV5640和圖像顯示模塊工作頻率為25 MHz.PS端初始化攝像頭采集數(shù)據(jù)為YUV422格式,采集30 fps大小為640×480的圖像,數(shù)據(jù)采集模塊輸出Y分量,即灰度圖像.經(jīng)過Video in AXI-Stream IP核后將有效數(shù)據(jù)傳入數(shù)據(jù)處理模塊[14,15].

數(shù)據(jù)經(jīng)過處理后,通過PS端控制DMA傳入DDR3內(nèi)存中進(jìn)行緩存,類似雙緩沖機(jī)制,緩存3幀圖像來保證系統(tǒng)能夠同時接收和處理數(shù)據(jù).輸出顯示時,VTC視頻時間控制IP核給輸出模塊60 fps的VGA時序,所以在DMA與圖像顯示模塊之間加入了FIFO作為數(shù)據(jù)緩沖,防止數(shù)據(jù)丟失.

3 結(jié)果及分析

3.1 軟件實現(xiàn)及仿真結(jié)果對比

將該算法的軟件實現(xiàn)與仿真的硬件加速結(jié)果做對比,選取ω=0.15和K=1.軟件實現(xiàn)在2.5 GHz 的Intel Corei5-4200M CPU上通過VS 2013開發(fā)平臺和OPENCV開發(fā)庫完成.仿真處理在Vivado 2016.4,Modelsim和Matlab聯(lián)合仿真下進(jìn)行處理,為了與實際工程相符,設(shè)置工作頻率為100 MHz.

選取兩張256×256,一張400×292的灰度圖進(jìn)行對照實驗,每張圖像都經(jīng)過8次迭代處理,結(jié)果如圖7所示,其中第1列為選取的原圖,第2列是使用C++語言通過VS 2013開發(fā)平臺和OPENCV開發(fā)庫的處理結(jié)果,第3列是使用Verilog HDL經(jīng)過Vivado 2016.4綜合后,再通過其附帶的Modelsim仿真,產(chǎn)生數(shù)據(jù)文件后通過Matlab顯示的處理結(jié)果.

通過觀察圖像、定量計算圖像信息熵和對比度來評價參數(shù)選取后的處理結(jié)果.圖像信息熵計算公式為

(9)

式中:i表示灰度圖像灰度值,pi表示i在灰度分布中所占比例.圖像信息熵越大表明圖像中的細(xì)節(jié)程度越好[16].對比度計算公式為

C=∑δ(x,y)2·Pδ(x,y),

(10)

式中:δ(x,y)是相鄰像素間的灰度差;Pδ(x,y)是灰度差為δ的像素分布概率.

圖7 中處理結(jié)果的各項參數(shù)如表1所示.通過觀察圖7 和表1 中的結(jié)果可以看出,軟件的處理結(jié)果與綜合后的仿真結(jié)果在圖像質(zhì)量上相差無幾.通過信息熵和對比度來看,其結(jié)果相差不大,參數(shù)提升范圍也在同一數(shù)量級,說明通過Verilog HDL所實現(xiàn)的算法與C++所實現(xiàn)算法處理效果相同.但通過處理時間對比可知,經(jīng)過硬件算法在FPGA上實現(xiàn)的處理速度將會是在計算機(jī)CPU上實現(xiàn)的300倍左右,加速效果明顯.

圖7 VS2013處理結(jié)果和Modelsim仿真處理結(jié)果

表1 處理結(jié)果的各項參數(shù)

3.2 硬件實現(xiàn)結(jié)果

將該算法在ZYNQ開發(fā)板上進(jìn)行實現(xiàn),將輸出圖像改為720 p圖像,相應(yīng)的輸出時鐘頻率改為75 MHz,目的是將大小為640×480的原圖與處理結(jié)果圖拼接后進(jìn)行對比,最終結(jié)果如圖8所示.

圖8 中左側(cè)為處理后的顯示圖像,右側(cè)為原圖.圖8(a)為遮擋物體采光后采集的低對比度圖像,比較明顯的是原圖中因光照問題所模糊的投擲垃圾圖案和花型圖案,在處理圖中可以清晰看到其輪廓細(xì)節(jié).圖8(b)為正常采集的圖像,對比度相對較高,圖像細(xì)節(jié)保留完好,根據(jù)處理后的結(jié)果來看,并沒有出現(xiàn)過度銳化的現(xiàn)象,并且圖像對比度也有一定提升,結(jié)果表明算法在該場景下適應(yīng)性較好,所消耗各項資源如表2所示.

圖8 實際場景處理結(jié)果圖

4 結(jié) 論

本文在ZYNQ-7000平臺上對一種改進(jìn)型Perona-Malik模型算法進(jìn)行算法加速.通過對照實驗分析結(jié)果,該算法在PL端處理一幀256×256圖像約為0.67 ms,滿足算法處理實時性要求,使用Verilog HDL實現(xiàn)后處理效果與C++實現(xiàn)效果相似,并且在實際工程中處理效果較好,沒有出現(xiàn)過度銳化和噪聲等現(xiàn)象.

下一步的改進(jìn)之處有:

1) 利用片內(nèi)RAM,F(xiàn)IFO等其他內(nèi)部資源解決觸發(fā)器消耗較多的問題;

2) 先將數(shù)據(jù)存儲,再通過DMA讀出后進(jìn)行處理[17],用于解決處理結(jié)果邊緣有毛刺的問題.

猜你喜歡
處理結(jié)果圖像增強(qiáng)灰度
采用改進(jìn)導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過濾技術(shù)
圖像增強(qiáng)技術(shù)在超跨聲葉柵紋影試驗中的應(yīng)用
Bp-MRI灰度直方圖在鑒別移行帶前列腺癌與良性前列腺增生中的應(yīng)用價值
水下視覺SLAM圖像增強(qiáng)研究
虛擬內(nèi)窺鏡圖像增強(qiáng)膝關(guān)節(jié)鏡手術(shù)導(dǎo)航系統(tǒng)
會計賬務(wù)的處理對成本核算結(jié)果的影響
基于圖像增強(qiáng)的無人機(jī)偵察圖像去霧方法
間接正犯與教唆犯的異同
生豬屠宰檢疫技術(shù)和處理結(jié)果的探討
基于最大加權(quán)投影求解的彩色圖像灰度化對比度保留算法