陸申陽(yáng),冉 峰,郭愛(ài)英,沈華明
(1.上海大學(xué)微電子研究與開(kāi)發(fā)中心,上海200444;2.上海大學(xué)新型顯示技術(shù)及應(yīng)用集成教育部重點(diǎn)實(shí)驗(yàn)室,上海200444;3.上海大學(xué)機(jī)電工程與自動(dòng)化學(xué)院,上海200444)
低照度夜視系統(tǒng)主要用于夜視成像、汽車駕駛輔助、安防監(jiān)控等領(lǐng)域,是一種非常重要的圖像增強(qiáng)技術(shù),在軍事和民用方面都被廣泛應(yīng)用.但是,在低照度環(huán)境中理想的光照條件和曝光度往往難以得到滿足,攝像頭捕獲到的視頻圖像存在亮度低、噪聲大、對(duì)比度低等缺點(diǎn),直接影響到后續(xù)的圖像處理質(zhì)量.針對(duì)低照度視頻圖像的處理需求,圖像增強(qiáng)技術(shù)應(yīng)運(yùn)而生.傳統(tǒng)的圖像增強(qiáng)技術(shù),如直方圖均衡化、伽馬校正、色調(diào)映射等,往往存在圖像曝光過(guò)度、暗區(qū)細(xì)節(jié)丟失、整體對(duì)比度低等缺點(diǎn)[1-3].目前由于廣泛使用的經(jīng)過(guò)優(yōu)化的直方圖均衡化技術(shù)、暗通道算法、神經(jīng)網(wǎng)絡(luò)算法、Rtinex算法等過(guò)于復(fù)雜,計(jì)算量過(guò)大,故不宜于硬件實(shí)現(xiàn).
為了克服上述圖像增強(qiáng)技術(shù)的缺點(diǎn),學(xué)者們主要展開(kāi)了如下2個(gè)方向的研究.
(1)改進(jìn)圖像增強(qiáng)算法[4-9].例如,文獻(xiàn)[4]的動(dòng)態(tài)直方圖均衡(dynamic histogram equalization,DHE)算法是根據(jù)極大值或極小值割直方圖后再分別均衡.此算法自適應(yīng)性強(qiáng),能有效拉伸集中在低灰度區(qū)域的灰度級(jí),但該算法在尋找極小值時(shí)容易出錯(cuò).文獻(xiàn)[9]中的反距離加權(quán)插值自適應(yīng)圖像直方圖均衡化算法(inverse distance weighted interpolation adaptive histogram equalization,IDWIAHE),該算法在非重疊子塊直方圖均衡化方法的基礎(chǔ)上,綜合運(yùn)用每個(gè)像素點(diǎn)周邊的灰度信息,消除不同子塊之間的塊效應(yīng),較好地保存了圖像的細(xì)節(jié)信息.但是該算法結(jié)構(gòu)非常復(fù)雜,難以在硬件上實(shí)現(xiàn).
(2)基于硬件平臺(tái)設(shè)計(jì)和優(yōu)化硬件電路[10-15].文獻(xiàn)[10]針對(duì)640×480大小的圖像在現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(field programmable gate array,FPGA)上實(shí)現(xiàn)了直方圖均衡化電路設(shè)計(jì),得到了畫(huà)面清晰、細(xì)節(jié)完整的圖像,但是由于設(shè)計(jì)中圖像尺寸固定,故難以推廣應(yīng)用.文獻(xiàn)[11]在FPGA上以譯碼器和計(jì)數(shù)器為基礎(chǔ)實(shí)現(xiàn)了一個(gè)直方圖均衡化電路,從而提高了處理速度.但是,由于每個(gè)灰度級(jí)都需要一個(gè)計(jì)數(shù)器,故當(dāng)處理高灰度級(jí)圖像時(shí)計(jì)數(shù)器的個(gè)數(shù)將倍增;此外,該算法在低灰度區(qū)域存在大量的灰度合并現(xiàn)象,導(dǎo)致對(duì)比度等級(jí)無(wú)法區(qū)分,畫(huà)面細(xì)節(jié)丟失嚴(yán)重.文獻(xiàn)[12]也在FPGA上設(shè)計(jì)實(shí)現(xiàn)了直方圖均衡化電路,該方法采用乒乓操作,可實(shí)現(xiàn)高速連續(xù)的圖像處理,但是該算法未考慮數(shù)字顯示與模擬顯示的不同,在硬件平臺(tái)上處理得到的圖像嚴(yán)重失真,畫(huà)面模糊,圖像細(xì)節(jié)全部丟失.
針對(duì)上述算法性能和硬件實(shí)現(xiàn)無(wú)法平衡的問(wèn)題,本工作提出了一種用于自適應(yīng)直方圖均衡化的硬件加速器(hardware accelerator,HA)的設(shè)計(jì)方法.首先,針對(duì)過(guò)度增強(qiáng)、噪聲放大、暗區(qū)細(xì)節(jié)丟失、自適應(yīng)算法復(fù)雜等問(wèn)題對(duì)均衡算法做了基于自適應(yīng)的對(duì)比度改進(jìn);其次,采用乒乓和對(duì)比度策略,將改進(jìn)型自適應(yīng)直方圖均衡化算法進(jìn)行基于FPGA的硬件加速器設(shè)計(jì);最后,基于實(shí)驗(yàn)室和真實(shí)場(chǎng)景的實(shí)驗(yàn)結(jié)果表明,本硬件加速器能夠平衡算法性能和硬件實(shí)現(xiàn)之間的矛盾,達(dá)到了適度提升亮度、對(duì)比度,保留圖像細(xì)節(jié)的效果.
灰度級(jí)直方圖描述的是一幅圖像的灰度分布情況,即圖像中每一灰度與該灰度級(jí)出現(xiàn)的頻數(shù)之間的統(tǒng)計(jì)關(guān)系.經(jīng)直方圖均衡化處理后,圖像亮度和對(duì)比度得到明顯提高,但是增強(qiáng)過(guò)程中容易產(chǎn)生過(guò)度增強(qiáng)和灰度合并現(xiàn)象,導(dǎo)致噪聲放大、圖像細(xì)節(jié)丟失等問(wèn)題.為了克服傳統(tǒng)直方圖算法的不足,本工作提出了改進(jìn)的自適應(yīng)直方圖均衡算法.
直方圖灰度級(jí)范圍為[0,L?1],其中8位灰度圖像L為256.首先根據(jù)式(1)計(jì)算出每個(gè)灰度級(jí)對(duì)應(yīng)的像素?cái)?shù)量H(rk),其中k=0,1,···,L?1;rk為第K個(gè)灰度級(jí);nk為一幀圖像中第k個(gè)灰度級(jí)對(duì)應(yīng)的像素?cái)?shù)量,通過(guò)累加計(jì)算得到
同時(shí)得到每個(gè)灰度級(jí)的概率密度函數(shù)
式中:N為圖像的總像素?cái)?shù).
由式(2)的統(tǒng)計(jì)結(jié)果計(jì)算圖像灰度級(jí)的累積概率密度函數(shù)(cumulate density function,CDF)
根據(jù)式(3)可以推導(dǎo)出CDF(rL?1)為1,可見(jiàn)圖像均衡前后總灰度值不改變.用映射函數(shù)S(rk)來(lái)描述輸入像素與輸出像素的關(guān)系,
式中:rk為輸入的第k級(jí)灰度值,S(rk)為輸出的第k級(jí)灰度值,rL?1為最大灰度值.
分析式(3)可知,當(dāng)ni較大時(shí),會(huì)導(dǎo)致概率密度函數(shù)顯著增大,進(jìn)而導(dǎo)致式(4)中對(duì)應(yīng)輸出值及后續(xù)輸出值普遍偏大,產(chǎn)生過(guò)增強(qiáng)、噪聲放大現(xiàn)象.當(dāng)ni的值較小時(shí),會(huì)導(dǎo)致概率密度函數(shù)只發(fā)生微量變化,進(jìn)而導(dǎo)致式(4)中多個(gè)輸入rk只對(duì)應(yīng)同一個(gè)輸出值S,即多個(gè)輸入灰度值映射出同一個(gè)輸出灰度值,產(chǎn)生灰度合并現(xiàn)象,導(dǎo)致圖像細(xì)節(jié)丟失、畫(huà)面模糊.式(3)中的ni來(lái)源于式(1)中的nk,對(duì)于一幅低照度圖像大部分像素點(diǎn)集中在低灰度區(qū)域,高灰度區(qū)域的像素點(diǎn)個(gè)數(shù)較少,即低灰度區(qū)域nk值較大,高灰度區(qū)域nk值較小(見(jiàn)圖1(a)),橫坐標(biāo)為灰度級(jí),縱坐標(biāo)為對(duì)應(yīng)灰度級(jí)的像素點(diǎn)個(gè)數(shù).因此HE算法會(huì)產(chǎn)生大量的灰度合并現(xiàn)象和過(guò)增強(qiáng)現(xiàn)象,主要表現(xiàn)為圖像模糊不清、細(xì)節(jié)丟失、偏亮等.
針對(duì)HE算法的上述缺點(diǎn),本工作引入了閾值T和增量V來(lái)調(diào)整每個(gè)灰度級(jí)對(duì)應(yīng)的像素點(diǎn)個(gè)數(shù)nk,實(shí)現(xiàn)自適應(yīng)地限制對(duì)比度拉伸程度,抑制灰度合并現(xiàn)象,構(gòu)建出一種新的改進(jìn)型自適應(yīng)直方圖均衡化(interpolation adaptive histogram equalization,IAHE)算法.閾值T的引入減少了低灰度區(qū)域的像素點(diǎn)個(gè)數(shù),而增量V的引入增加了高灰度區(qū)域的像素點(diǎn)個(gè)數(shù),使得像素點(diǎn)分布更加均勻.此外,在檢測(cè)峰值前剔除了直方圖中的零分量,保證了閾值T計(jì)算的科學(xué)性和準(zhǔn)確性.增量V的引入確保了直方圖總面積不變,即在計(jì)算概率密度函數(shù)時(shí)分母N仍然是圖像總像素個(gè)數(shù),在算法性能提升的同時(shí)其計(jì)算復(fù)雜度未增加.具體改進(jìn)方法如下.
IAHE算法將HE衡算法中的式(1)替換為
式中:HF(j)為原直方圖中的非零分量.
式中:k=0,1,···,L ? 1;j=0,1,···,l,l為直方圖中非零分量個(gè)數(shù).
閾值T由剔除零分量之后的直方圖的峰值確定,其表達(dá)式為
式中:HF(m)為檢測(cè)到的局部極大值;M為極大值的個(gè)數(shù).
增量V由大于閾值T的直方圖分量確定,其表達(dá)式為
式(1)替換為式(5)就是對(duì)原始直方圖自適應(yīng)調(diào)整,其過(guò)程如圖1所示.
圖1 直方圖自適應(yīng)調(diào)整過(guò)程Fig.1 Adaptive adjustment process of histogram
適用于IAHE算法的硬件加速器的實(shí)現(xiàn)能提升圖像增強(qiáng)的處理速度和增強(qiáng)效果.針對(duì)HE算法的硬件實(shí)現(xiàn)通常包括3個(gè)步驟:統(tǒng)計(jì)、累加和映射.這種設(shè)計(jì)結(jié)構(gòu)精煉、算法簡(jiǎn)單,在資源面積上占有一定優(yōu)勢(shì),但是過(guò)增強(qiáng)和灰度合并現(xiàn)象嚴(yán)重,進(jìn)而會(huì)導(dǎo)致圖像增強(qiáng)效果不理想.本工作從增強(qiáng)效果和硬件實(shí)現(xiàn)的雙需求出發(fā),提出了一種自適應(yīng)IAHE算法的硬件加速器設(shè)計(jì)結(jié)構(gòu),其總體結(jié)構(gòu)如圖2所示.
該結(jié)構(gòu)的核心可以分為5個(gè)主要部分:控制模塊(control module,CM)、緩存控制模塊(ache control module,ACM)、統(tǒng)計(jì)控制模塊(statistical control module,SCM)、自適應(yīng)調(diào)整模塊(adaptive adjustment module,AAM)和映射控制模塊(mapping control module,MCM).
(1)控制模塊主要負(fù)責(zé)算法的條件判斷和信號(hào)控制,如累加計(jì)算條件的判斷信號(hào)、使能信號(hào)、起始與結(jié)束信號(hào)的控制等,該模塊利用有限狀態(tài)機(jī)(finite-state machine,FSM)實(shí)現(xiàn).
(2)緩存控制模塊主要負(fù)責(zé)存儲(chǔ)原始圖像信息,用于映射輸入,主要利用一塊RAM和相應(yīng)的讀寫(xiě)時(shí)序控制模塊實(shí)現(xiàn).
(3)統(tǒng)計(jì)控制模塊主要負(fù)責(zé)原始圖像的直方圖統(tǒng)計(jì),具體是利用一塊RAM和相應(yīng)的累加計(jì)算、讀寫(xiě)時(shí)序模塊實(shí)現(xiàn).
(4)自適應(yīng)調(diào)整模塊負(fù)責(zé)直方圖的自適應(yīng)調(diào)整,主要包括閾值T計(jì)算模塊(T calculation module,TCM)、增量V計(jì)算模塊(V calculation module,VCM)、直方圖調(diào)整模塊(histogram adjustment module,HAM)和均衡化模塊(equalization module,EM)這4個(gè)子模塊,其中直方圖調(diào)整模塊利用了乘法器、除法器、RAM和相應(yīng)的讀寫(xiě)時(shí)序控制模塊實(shí)現(xiàn).
(5)映射控制模塊負(fù)責(zé)增強(qiáng)后的圖像映射輸出,主要利用RAM和查找表來(lái)實(shí)現(xiàn).其余模塊負(fù)責(zé)時(shí)鐘信號(hào)的分頻、數(shù)據(jù)的傳輸與顯示等.如開(kāi)發(fā)板的系統(tǒng)時(shí)鐘頻率為27 M,顯示器所用掃描時(shí)鐘頻率為74.25 M,且直方圖統(tǒng)計(jì)模塊使用了倍頻操作,因此鎖相環(huán)(phase locoed loop,PLL)模塊產(chǎn)生的2個(gè)時(shí)鐘信號(hào)clk1,clk2分別為74.25,148.50 M.
圖2 IAHE的硬件加速器設(shè)計(jì)結(jié)構(gòu)Fig.2 Hardware accelerator design structure of IAHE
控制模塊主要用于控制各個(gè)模塊的工作狀態(tài),產(chǎn)生控制各模塊的信號(hào)并以并行的方式傳輸給各個(gè)模塊.圖3為控制模塊的FSM實(shí)現(xiàn).
首先,在圖像增強(qiáng)過(guò)程開(kāi)始之前將初始值設(shè)置為0,初始狀態(tài)設(shè)為S _wait的空閑等待狀態(tài).當(dāng)開(kāi)始圖像數(shù)據(jù)輸入時(shí),增強(qiáng)過(guò)程開(kāi)始,此時(shí)完成圖像數(shù)據(jù)的緩存以及統(tǒng)計(jì);之后,根據(jù)統(tǒng)計(jì)出的原始直方圖計(jì)算出調(diào)整參數(shù)閾值T和增量V,反饋到原始直方圖上對(duì)其進(jìn)行自適應(yīng)調(diào)整,并且完成均衡化操作得到映射查找表.最后用緩存的圖像數(shù)據(jù)通過(guò)查找表將輸出結(jié)果映射并顯示出來(lái).
圖3 控制模塊的FSM實(shí)現(xiàn)Fig.3 FSM implementation of the control module
圖4 緩存控制模塊結(jié)構(gòu)Fig.4 Structure of cache control module
圖5 統(tǒng)計(jì)控制模塊結(jié)構(gòu)Fig.5 Structure of statistical control module
在進(jìn)行緩存控制和統(tǒng)計(jì)控制模塊設(shè)計(jì)時(shí),充分利用FPGA強(qiáng)大的并行性能,緩存和統(tǒng)計(jì)操作可以同時(shí)進(jìn)行;另外,緩存與統(tǒng)計(jì)過(guò)程采用乒乓操作,可以將速度降低一半.緩存控制模塊主要用于初始階段原始圖像數(shù)據(jù)的緩存和最終階段原始圖像數(shù)據(jù)的輸出,該模塊由一個(gè)RAM和相應(yīng)的讀寫(xiě)模塊完成 (見(jiàn)圖4).RAM1中數(shù)據(jù)地址位為18 bit,存儲(chǔ)為512×512(像素)的圖像,位寬為8 bit,存儲(chǔ)256級(jí)灰度值.圖像數(shù)據(jù)din[7:0]作為RAM1的輸入數(shù)據(jù),數(shù)據(jù)伴隨信號(hào)dva控制產(chǎn)生讀寫(xiě)控制信號(hào)和寫(xiě)地址,完成緩存后等待映射控制信號(hào).統(tǒng)計(jì)控制模塊主要用于初始階段在圖像數(shù)據(jù)到來(lái)時(shí),對(duì)圖像數(shù)據(jù)進(jìn)行直方圖統(tǒng)計(jì),該模塊主要利用一個(gè)累加計(jì)算模塊、一個(gè)RAM和相應(yīng)的讀寫(xiě)模塊完成(見(jiàn)圖5).RAM2中數(shù)據(jù)地址位為8 bit,對(duì)應(yīng)256級(jí)灰度,將灰度值相同的像素點(diǎn)累加儲(chǔ)存在相應(yīng)的地址上,數(shù)據(jù)位寬為19 bit.圖像數(shù)據(jù)din[7:0]作為RAM2地址尋找相同灰度級(jí)數(shù)據(jù)位置,數(shù)據(jù)伴隨信號(hào)dva控制產(chǎn)生讀寫(xiě)控制信號(hào),當(dāng)完成統(tǒng)計(jì)后將統(tǒng)計(jì)數(shù)據(jù)輸出,并且產(chǎn)生控制信號(hào)ctl _1.
自適應(yīng)調(diào)整模塊包括提取非零分量、檢測(cè)峰值、計(jì)算T和V、調(diào)整直方圖和均衡化運(yùn)算等子模塊.自適應(yīng)調(diào)整模塊主要負(fù)責(zé)直方圖的自適應(yīng)調(diào)整和均衡化運(yùn)算,其結(jié)構(gòu)如圖6所示.
首先,輸入的原始直方圖數(shù)據(jù)存入RAM3中,同時(shí)進(jìn)行提取非零分量、檢測(cè)峰值和計(jì)算閾值T操作.之后完成閾值T的計(jì)算后輸出RAM3中的數(shù)據(jù)并計(jì)算增量V,再利用T和V調(diào)整直方圖.最后,將上一步得到的直方圖通過(guò)乘法器和相應(yīng)的運(yùn)算得到映射數(shù)據(jù),存入RAM4中作為查找表.該過(guò)程中RAM3地址位寬為8 bit,用于存儲(chǔ)直方圖數(shù)據(jù);RAM4地址位寬為8 bit,用于存儲(chǔ)均衡化后得到的映射數(shù)據(jù)作為查找表.完成以上操作后進(jìn)入等待狀態(tài),其中提取非零分量、檢測(cè)峰值和計(jì)算閾值T同時(shí)進(jìn)行.當(dāng)完成提取非零分量后,檢測(cè)峰值和計(jì)算非零閾值T也隨之完成,所耗時(shí)間約為256個(gè)時(shí)鐘周期.計(jì)算增量V時(shí)需要對(duì)每一個(gè)灰度級(jí)進(jìn)行操作,也需要256個(gè)時(shí)鐘周期.T,V調(diào)整、累加和均衡所耗時(shí)間同樣約為256個(gè)時(shí)鐘周期.
圖6 自適應(yīng)調(diào)整模塊結(jié)構(gòu)Fig.6 Structure of adaptive adjustment module
映射控制模塊主要用于產(chǎn)生RAM1的讀地址和讀控制信號(hào).將原始圖像數(shù)據(jù)讀出,作為RAM4的讀地址,查詢相應(yīng)灰度級(jí)對(duì)應(yīng)的灰度值,從而映射出均衡化后的圖像數(shù)據(jù).該模塊內(nèi)部結(jié)構(gòu)如圖7所示.
基于改進(jìn)型自適應(yīng)直方圖均衡算法的硬件加速器驗(yàn)證分為算法功能驗(yàn)證和硬件加速器性能驗(yàn)證2個(gè)部分.
(1)在PC機(jī)上進(jìn)行自適應(yīng)算法的能和性能驗(yàn)證.PC機(jī)的配置參數(shù)為Intel(R)Core(TM)i7-6500@2.5 GHz與4 G內(nèi)存.仿真軟件為Matlab R2016a.
(2)在FPGA開(kāi)發(fā)板上對(duì)硬件加速器的性能驗(yàn)證.開(kāi)發(fā)板為AV150 FPGA,核心處理MCU為XC6SLX150.開(kāi)發(fā)軟件為ISE14.7,ModelSim SE-64 10.1c.
為了驗(yàn)證算法是否能限制圖像對(duì)比度拉伸、減弱圖像增強(qiáng)程度、保留暗部圖像細(xì)節(jié)等功能及性能,使用OV5640攝像頭在一天中的6,9,12,15,18,21點(diǎn)等不同光照條件下,對(duì)學(xué)校以及學(xué)校周邊的不同環(huán)境采集了1 200幅圖像,并做了相關(guān)系列實(shí)驗(yàn).圖8為其中一組低照度圖像的實(shí)驗(yàn)結(jié)果,該圖是夜間居民樓旁的白色汽車圖像,圖像大小為512×512(像素).圖8(a)整體偏暗,車窗及墻均不清晰;(b)為采用HE算法處理后的圖像,圖像整體偏白,成功地提高了圖像的對(duì)比度,但是圖像過(guò)亮存在“過(guò)增強(qiáng)”現(xiàn)象;(c)為采用本算法處理后的圖像,對(duì)比度得到適度拉伸,亮度適中,圖像細(xì)節(jié)保留完整.
圖7 映射控制模塊結(jié)構(gòu)Fig.7 Structure of map control module
圖8不同算法的增強(qiáng)效果Fig.8 Enhancement results of different algorithms
圖9 是該組圖像對(duì)應(yīng)的直方圖,橫坐標(biāo)為灰度級(jí),縱坐標(biāo)為像素點(diǎn)個(gè)數(shù).表1統(tǒng)計(jì)了不同圖像增強(qiáng)算法處理后圖像及直方圖的特性參數(shù),包括灰度級(jí)個(gè)數(shù)、平均灰度、標(biāo)準(zhǔn)差、過(guò)暗區(qū)域(灰度值<50)像素點(diǎn)個(gè)數(shù)占比、過(guò)亮區(qū)域(灰度值>200)像素點(diǎn)個(gè)數(shù)占比以及圖像的信息熵.
從表1中可以看出,經(jīng)HE算法處理后的圖像有效灰度級(jí)從147降低到了68,說(shuō)明發(fā)生了大量的灰度合并現(xiàn)象,導(dǎo)致圖像模糊、細(xì)節(jié)丟失;而IAHE算法的灰度級(jí)為97,有效抑制了這一現(xiàn)象.經(jīng)HE算法處理后的圖像平均灰度由21提升到了129,導(dǎo)致圖像過(guò)亮;而IAHE算法僅提升到81,亮度適中.在標(biāo)準(zhǔn)差一欄中,IAHE算法低于HE算法,有效限制了對(duì)比度拉伸,得到的圖像較為柔和.研究表1中圖像過(guò)暗區(qū)域和過(guò)亮區(qū)域后可知,原始圖像大部分像素點(diǎn)集中在低灰度,為夜間的低照度圖像,大部分背景顏色為黑色,而經(jīng)HE算法處理后的圖像過(guò)暗區(qū)域占20.44%,過(guò)亮區(qū)域占22.25%,圖像明顯偏亮;而本算法的圖像暗區(qū)占38.65%,亮區(qū)占0.57%,得到的圖像明亮適中.經(jīng)IAHE算法處理得到的圖像熵值大于HE算法得到的圖像熵值,說(shuō)明IAHE算法得到的圖像包含更多的信息.
圖9 不同算法直方圖對(duì)比Fig.9 Experiment histogram of different algorithms
表1 不同算法增強(qiáng)效果對(duì)比Table 1 Comparison of different algorithm enhancements
為了驗(yàn)證硬件加速器的性能,本工作開(kāi)發(fā)了圖像增強(qiáng)硬件實(shí)現(xiàn)驗(yàn)證平臺(tái),主要由代碼輸入與仿真調(diào)試窗口、核心處理和處理結(jié)果顯示這3個(gè)部分組成,其實(shí)物圖如圖10所示.圖中右側(cè)為代碼輸入與仿真調(diào)試窗口,左下為核心處理部分,左上為處理結(jié)果顯示部分.
圖10 圖像增強(qiáng)硬件實(shí)現(xiàn)驗(yàn)證平臺(tái)Fig.10 Verification platform of image enhancement hardware implementation
在ISE14.7下,采用Verilog進(jìn)行硬件加速器的設(shè)計(jì),其仿真波形如圖11所示,圖中(a)為算法處理的部分計(jì)算過(guò)程,(b)為算法處理后的部分結(jié)果數(shù)據(jù).
將結(jié)束仿真實(shí)驗(yàn)的邏輯功能正確的硬件加速器設(shè)計(jì)文件,通過(guò)USB Cable下載器燒錄到FPGA里面.在針對(duì)測(cè)試集的圖像進(jìn)行測(cè)試時(shí),選出其中4組典型的夜間低照度圖像進(jìn)行分析.為了方便查看處理效果,實(shí)驗(yàn)中將處理前后的圖像同時(shí)顯示在顯示器上(見(jiàn)圖12),每組實(shí)驗(yàn)結(jié)果均是左圖為原始圖像,右圖為經(jīng)過(guò)本工作設(shè)計(jì)硬件加速器增強(qiáng)之后的圖像.每幅原始圖像大小為512×512(像素),顯示器分辨率為1 280×720(像素),未填充圖像的顯示器區(qū)域設(shè)置為黑色.第一組實(shí)驗(yàn)結(jié)果中原始圖像僅能分辨出汽車輪廓和窗戶輪廓,而處理后的圖像車牌、鐵門(mén)、墻面、窗戶都非常清晰.在第二、三、四組實(shí)驗(yàn)結(jié)果中,原始圖像都是僅有模糊的實(shí)物輪廓,幾乎被黑暗完全淹沒(méi),難以分辨圖像內(nèi)容,而處理后的圖像能明顯看出路面上的斑馬線和路標(biāo)、樓房的天臺(tái)和窗戶、河邊的房子和橋.這表明,增強(qiáng)之后的圖像亮度和對(duì)比度都有了明顯的提升,圖像細(xì)節(jié)也保存得相當(dāng)完好,噪聲和過(guò)度增強(qiáng)現(xiàn)象得到了較大的抑制,產(chǎn)生了更好更清晰的圖像.
圖11 基于ModelSim的算法仿真Fig.11 ModelSim-based algorithm simulation
圖12 基于FPGA的硬件加速器實(shí)驗(yàn)結(jié)果Fig.12 Test result of hardware accelerator based on FPGA
另外,在進(jìn)行實(shí)時(shí)圖像處理時(shí),由于視頻圖像是連續(xù)的,故相鄰圖像具有很強(qiáng)的相似性.可以用上一幀統(tǒng)計(jì)的數(shù)據(jù)處理下一幀圖像,這樣既能滿足實(shí)時(shí)性的要求,又能達(dá)到較好的增強(qiáng)效果.當(dāng)一幀圖像來(lái)臨時(shí),首先在對(duì)其進(jìn)行統(tǒng)計(jì)的同時(shí)對(duì)其進(jìn)行映射,映射關(guān)系來(lái)自上一幀圖像,映射和統(tǒng)計(jì)同時(shí)完成;之后處理統(tǒng)計(jì)的結(jié)果形成下一幀的映射關(guān)系.至此,圖像處理時(shí)間為原始直方圖提取非零分量、計(jì)算增量V以及灰度級(jí)計(jì)算所用的時(shí)間,分別表示為T(mén)1,T2,T3,統(tǒng)計(jì)和緩存不再占用處理時(shí)間.處理時(shí)間可以表示為
由于直方圖灰度級(jí)為256,提取非零分量時(shí)需要256個(gè)時(shí)鐘周期,故T1約為256個(gè)時(shí)鐘周期;計(jì)算增量V時(shí)需要對(duì)每個(gè)灰度級(jí)對(duì)應(yīng)的像素點(diǎn)個(gè)數(shù)進(jìn)行減法操作,需要256個(gè)時(shí)鐘周期,故T2約為256個(gè)時(shí)鐘周期;在映射函數(shù)值計(jì)算時(shí)需要對(duì)256個(gè)統(tǒng)計(jì)數(shù)值進(jìn)行操作,也即需要256個(gè)時(shí)鐘周期,故T3約為256個(gè)時(shí)鐘周期.本實(shí)驗(yàn)使用的時(shí)鐘頻率為74.25 MHz,圖像處理時(shí)間約為
表2統(tǒng)計(jì)了不同算法在硬件上實(shí)現(xiàn)的處理時(shí)間,其中本算法低于文獻(xiàn)[9]中的多子直方圖算法和文獻(xiàn)[12]中的直方圖均衡化算法,可見(jiàn)本工作設(shè)計(jì)的硬件加速器具有較好的性能.
表2 不同算法硬件處理時(shí)間Table 2 Hardware processing time of different algorithms
本工作設(shè)計(jì)了一種用于自適應(yīng)直方圖均衡算法的硬件加速器,平衡了算法性能和硬件實(shí)現(xiàn)之間的矛盾.首先,該加速器改進(jìn)了自適應(yīng)直方圖均衡算法,使之能夠利用自適應(yīng)閾值有效限制對(duì)比度拉伸,克服了過(guò)度增強(qiáng)、噪聲放大、丟失細(xì)節(jié)等缺點(diǎn),且優(yōu)化算法使之易于在硬件平臺(tái)上實(shí)現(xiàn);其次,該硬件加速器在FPGA硬件平臺(tái)進(jìn)行了測(cè)試,能夠產(chǎn)生更好、更清晰的圖像,達(dá)到了預(yù)期的增強(qiáng)效果,驗(yàn)證了其實(shí)用性和正確性.