康 宇,趙冬青,上官鵬,儲成群
(1.中北大學(xué)電子測試技術(shù)國家重點(diǎn)實驗室,山西太原 030051;2.北京控制與電子技術(shù)研究所,北京 100032)
在圖像的生成與傳輸過程中,由于圖像生成的工作環(huán)境、傳感器材質(zhì)、電子元器件特性、以及電路架構(gòu)等各種原因,極易引入各種各樣的噪聲[1]。噪聲降低了獲取圖像的質(zhì)量,極大地增加了圖像識別的難度,于是解決圖像噪聲成為了圖像處理的一大要務(wù)。其中,高斯噪聲由于其產(chǎn)生的普遍性成為圖像處理必須解決的問題。高斯噪聲屬于高頻噪聲,噪點(diǎn)在圖中表現(xiàn)為與周邊像素點(diǎn)梯度大的特性,這一特性雖然為濾除高斯噪聲提供了便利,但由于圖像的邊緣點(diǎn)一樣擁有該特性,僅僅通過梯度很難區(qū)分噪點(diǎn)與邊緣點(diǎn)。濾除與周邊像素點(diǎn)梯度大的像素點(diǎn),將同時濾除圖像邊緣點(diǎn),造成圖像邊緣的平滑,使得圖像邊緣特征信息缺失,降低了圖像在識別過程中的識別率?;谥兄禐V波與均值濾波對高斯噪聲不敏感的特性,針對高斯噪聲一般的處理方法,仍使用高斯濾波[2]。
隨著集成工藝的不斷進(jìn)步,F(xiàn)PGA 器件也在不斷發(fā)展,其可配置、功耗低、易于實現(xiàn)流水和并行結(jié)構(gòu)的特點(diǎn),提高了圖像處理速度,能夠滿足現(xiàn)代圖像處理對高可靠性與實時性的要求[3-4]。由于高斯濾波最佳平滑系數(shù)的確定因圖而異,很難有定論,目前自適應(yīng)確定平滑系數(shù)的算法復(fù)雜度較高,很難在FPGA上實現(xiàn)實時圖像處理,造成目前FPGA 實現(xiàn)的高斯濾波算法有局部或整體性的過度平滑問題,導(dǎo)致圖像邊緣信息缺失,造成圖像邊緣模糊。
通過結(jié)合高斯濾波與動態(tài)閾值計算,劃分圖像邊緣與離散噪點(diǎn),以避開對平滑系數(shù)的計算,減少了計算量的同時也使圖像的邊緣信息得以保護(hù),從而在FPGA 運(yùn)算的實時性前提下提高圖像濾波效果。
高斯濾波本質(zhì)上是一種通過正態(tài)分布確定權(quán)重的低通線性平滑濾波器,相比其他線性濾波器,如均值濾波器、中值濾波器,高斯濾波器的權(quán)重由空間距離因子控制[5],在窗口中,距離待處理像素點(diǎn)越遠(yuǎn)的像素點(diǎn)權(quán)重越低,距離待處理像素點(diǎn)越近的則權(quán)重越高,對待處理像素點(diǎn)的影響力就越大,傳統(tǒng)高斯濾波的數(shù)學(xué)表達(dá)式如下式所示[6]:
由于高斯濾波在考慮圖像空間因子的同時沒有考慮圖像的梯度因素,這導(dǎo)致高斯濾波作為低通濾波器將濾除圖像的高頻信息,如圖1 所示,在傳統(tǒng)高斯濾波中,圖(a)邊緣細(xì)線將被當(dāng)做噪聲進(jìn)行高斯濾波處理,大大降低了邊緣與周邊像素點(diǎn)的區(qū)分度,從而模糊了圖像的邊緣信息。檢測并保護(hù)圖像的高頻信息將獲得相比傳統(tǒng)高斯濾波更完整的邊緣信息。
圖1 高斯濾波圖像邊緣數(shù)據(jù)對比圖
基于上文所述,高斯濾波本質(zhì)上屬于基于圖像空間因子的平滑濾波,如引入傳統(tǒng)高斯濾波缺失的梯度因子,就將大幅度改善傳統(tǒng)高斯濾波破壞圖像邊緣信息的問題[7],在一副圖像中,除圖像最外側(cè)像素點(diǎn)外,任何一個像素點(diǎn)都擁有8 個梯度值與4 個梯度方向,梯度求取原理圖如圖2 所示。
圖2 四方向八梯求取示意圖
如圖2 所示,八方向梯度計算方法為:
如圖2 所示,求取平均梯度共需要4 個方向的8 個梯度值,其中平均梯度的求取方法如下:
根據(jù)式(5)即可求取3×3 掩模的平均梯度,其中∑I指八方向梯度總和。求取3×3 掩模的平均梯度,通過和最終求得的閾值比較,判斷該點(diǎn)是否為噪點(diǎn),求取梯度閾值必須先求取整幅圖像模板的梯度均值與像素點(diǎn)梯度均值的方差,而整幅圖像模板的梯度均值與像素點(diǎn)梯度均值方差的求取方法則如下式所示:
其中,P代表整個圖像梯度的均值,M×N代表整幅圖像的像素數(shù),σ代表像素點(diǎn)梯度與圖像全局平均梯度之間的方差。在圖像數(shù)據(jù)中,70%的像素點(diǎn)梯度均值數(shù)據(jù)在(P-σ,P+σ) 之間,僅0.3%的數(shù)據(jù)在(P-3σ,P+3σ)之外,可以認(rèn)為(P-2σ,P+2σ)之內(nèi)的數(shù)據(jù)為圖像邊緣點(diǎn),大于(P-3σ,P+3σ) 的數(shù)據(jù)皆為噪聲,對該點(diǎn)進(jìn)行高斯權(quán)重濾波,通過以上運(yùn)算,即可通過梯度閾值的方法判斷噪點(diǎn),從而形成對圖像邊緣保護(hù)的功用,以及精準(zhǔn)去噪的功能[8]。
圖像的客觀評價方法可分為全參考圖像質(zhì)量評價方法、半?yún)⒖紙D像質(zhì)量評價方法和無參考圖像質(zhì)量評價方法,全參考圖像質(zhì)量評價方法是目前使用最為廣泛,最為成熟的評價方法。因此采用全參考圖像質(zhì)量評價方法進(jìn)行圖像質(zhì)量評價,通過均方誤差(MSE)與峰值信噪比(PSNR)評價方法,分別從圖像與原始圖像的近似程度與信息和噪聲的最大功率比值兩個方面入手,盡可能多角度、客觀地評價圖像質(zhì)量[9]。
通過Matlab 仿真可得傳統(tǒng)高斯濾波與改進(jìn)高斯濾波效果圖。如圖3、4 所示,主觀上相比傳統(tǒng)高斯濾波,改進(jìn)高斯濾波器得到的圖像明顯擁有更好的邊緣特征與細(xì)節(jié),而傳統(tǒng)高斯濾波在濾波過程中明顯造成了圖像邊緣的模糊現(xiàn)象。
圖3 原圖下的濾波效果對比圖
圖4 30%高斯噪聲下的濾波效果對比圖
客觀評價體系下,通過對比由改進(jìn)高斯濾波算法得到的圖像與常規(guī)高斯濾波算法得到的處理圖像,如表1、表2 所示,在原圖與添加30%高斯噪聲的環(huán)境下,MSE 分別減少34%、26%,PSNR 分別提升6%、4%,所得數(shù)據(jù)對比如表2 所示。
表1 原圖下圖像客觀評價數(shù)據(jù)對比表
表2 30%高斯噪聲下圖像客觀評價數(shù)據(jù)對比表
由于實現(xiàn)的圖像采集是實時性的,所以對圖像處理有對實時性的要求。圖5 為該改進(jìn)高斯濾波器的rtl級視圖,為保證實時性,流水線處理是高速設(shè)計中比較常見的設(shè)計步驟,且整個數(shù)據(jù)流的數(shù)據(jù)處理是單向操作[10],若將上述算法變?yōu)轫樞驁?zhí)行,就將以如下流程進(jìn)行:①cmos 傳感器壞點(diǎn)矯正;②圖像的高斯濾波模板創(chuàng)建;③利用3×3 模板求取模板梯度均值;④通過各模板梯度均值求取方差并求得閾值;⑤按與閾值的比較結(jié)果套用高斯模板權(quán)值輸出或者不進(jìn)行處理;⑥將輸出數(shù)據(jù)輸出至緩沖區(qū),整合成為新的圖片。其中閾值求取模塊共需要使用4個乘法器與一個開平方ip 核。
CCD/CMOS 圖像傳感器上的像素點(diǎn)存在問題、缺陷,在視頻監(jiān)控畫面上呈現(xiàn)為黑色或者白色,稱為壞點(diǎn)[11]。由上文可知,噪點(diǎn)檢測算法是基于壞點(diǎn)校正后實現(xiàn)的,如不預(yù)先進(jìn)行壞點(diǎn)檢測,壞點(diǎn)對周邊像素點(diǎn)的高梯度將大幅度影響全局梯度閾值的選取,降低檢測準(zhǔn)確率,造成大面積噪點(diǎn)誤判,從而降低對邊緣信息的保護(hù)效果。
如圖6 所示,第一行為傳感器發(fā)送而來的串行數(shù)據(jù),而第二行與第三行皆為移位寄存器,移位寄存器大小視圖像傳感器行周期而定,當(dāng)數(shù)據(jù)進(jìn)入移位寄存器的同時也進(jìn)行取數(shù),于是當(dāng)?shù)谌袛?shù)據(jù)開始進(jìn)入第一個移位寄存器的時候,便出現(xiàn)了1.1、2.1、3.1像素點(diǎn)同時輸出的情況,實現(xiàn)了生成模板的功能[12-13]。
圖5 改進(jìn)高斯濾波算法RTL級電路圖
圖6 掩模的FPGA設(shè)計原理圖
如圖7 所示,通過9 個寄存器存儲兩個移位寄存器的輸出與串行輸入值,則第三行第三個像素點(diǎn)像素值輸入時將得到第一個3×3 矩陣。當(dāng)?shù)谌械谒膫€數(shù)據(jù)輸入時,第二列寄存器將賦值給第三列寄存器,隨后第一列賦值給第二列,第三列存入圖中最左側(cè)的第一排,隨后將重復(fù)如上步驟,直到最后一個像素點(diǎn)輸出完畢為止[14]。
圖7 3×3寄存器取數(shù)示意圖
FPGA 實現(xiàn)梯度閾值的求取總共需要求取兩個值,一個是圖像整體的梯度幅度均值,一個是當(dāng)前圖像像素點(diǎn)對全局梯度均值的方差。求取圖像整體平均值,要先記錄第一個壓入移位寄存器的像素值為初始值,隨后三排輸出的第一個像素點(diǎn)與初始值做差,并將所有差值的和存儲于一個寄存器,最后將該寄存器中的差值和求取平均值,再與初始值相加,即可獲得圖像的整體平均像素值,將整體平均像素值帶入到第二幅圖像的計算中即可用于求取圖像的方差[15]。方差的基本求取方法如式(5)所示。求取開根號值的方法選用xilinx公司的square_root ip核進(jìn)行處理。
通過對梯度閾值的比較,得出該像素點(diǎn)為噪點(diǎn),則通過高斯權(quán)重濾波的方式進(jìn)行處理,如圖8 所示。
圖8 高斯濾波權(quán)值模板
通過對高斯濾波公式的分析,可以用近似的權(quán)值表示空間因子對像素點(diǎn)的影響權(quán)重,F(xiàn)PGA 實現(xiàn)高斯濾波權(quán)值模板的公式如下[16]:
式(8)的分子中每一變量代表在3×3 模板中像素點(diǎn)像素與該點(diǎn)權(quán)重的乘積,通過如上運(yùn)算即可得到模板的最終高斯濾波結(jié)果。
如表3 所示,此方案的FPGA 占用資源較少,擁有較大的改進(jìn)與升級空間,滿足了設(shè)計初衷,實現(xiàn)了改進(jìn)高斯濾波的FPGA 實現(xiàn)。
表3 改進(jìn)FPGA高斯濾波算法資源占用情況表
該測試系統(tǒng)主要由賽靈思公司的6 系FPGA XC6SLX45-CSG324 驅(qū)動CMOS 傳感器進(jìn)行圖像的采集與處理工作,系統(tǒng)通過FPGA 產(chǎn)生的驅(qū)動信號驅(qū)動CMOS 傳感器采集圖像,通過圖像處理模塊處理后,根據(jù)PIXCLK(像素時鐘)、FRAMEVALID(幀有效信號)、LINEVALID(行有效信號)傳輸給上位機(jī)軟件成像,還原出處理后的圖像信息,實際測試平臺如圖9 所示。
圖9 測試平臺搭建圖
取圖像原圖,如圖10 所示,放大后與采集到的改進(jìn)高斯濾波處理過的一幀圖像以及常規(guī)FPGA 處理的圖像對比。
圖10 未經(jīng)處理的圖像原圖
圖11 測試結(jié)果對比圖
如圖11 所示,可見實際測試結(jié)果基本符合仿真結(jié)果,圖像邊緣相比常規(guī)FPGA 高斯濾波得到的圖像得到了保護(hù),且完成了圖像實時性處理輸出的目標(biāo)。
該文實現(xiàn)了一種基于FPGA 的改進(jìn)型高斯濾波器,該算法于上位機(jī)需較長的實現(xiàn)時間,要求主機(jī)有較強(qiáng)的運(yùn)算能力。采用FPGA 實現(xiàn)該算法,大大提升了該算法的運(yùn)行速率,保證了FPGA 實時圖像處理能力,并將梯度因素引入到高斯濾波中來,成功經(jīng)過圖像處理實時輸出了視頻流。
且經(jīng)過對比發(fā)現(xiàn),基于FPGA 的改進(jìn)高斯濾波算法得到的濾波后圖像相比傳統(tǒng)FPGA 高斯濾波擁有更好的邊緣細(xì)節(jié)。但該算法用于較為復(fù)雜的大圖像時,可能會遇到全局閾值沒有典型性的問題,隨著圖像大小和復(fù)雜度的提高,全局閾值或被拉到較為不合理的數(shù)值,大大降低了全局閾值對圖像邊緣的保護(hù)效果,另外,如果對信噪比過低的圖像采用此濾波方法將導(dǎo)致噪聲被放大的情況。如采用圖像分割濾波技術(shù),將圖像分區(qū)塊求取閾值單獨(dú)處理,或?qū)⒌玫礁玫臑V波效果,這也是下一步應(yīng)著重研究的改進(jìn)辦法。