文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.182020
中文引用格式: 武昊男,儲(chǔ)成群,任勇峰,等. 基于FPGA的圖像自適應(yīng)加權(quán)均值濾波設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2019,45(3):32-35,41.
英文引用格式: Wu Haonan,Chu Chengqun,Ren Yongfeng,et al. Self-adaption image weighted mean filter design based on FPGA[J]. Application of Electronic Technique,2019,45(3):32-35,41.
0 引言
CMOS圖像傳感器相較于傳統(tǒng)的CCD而言,具有更高的集成度,更靈活的圖像捕獲方式,更寬的動(dòng)態(tài)范圍,加上其低成本、低功耗的特點(diǎn),越來(lái)越受到人們的重視并得到廣泛的應(yīng)用。但是CMOS圖像傳感器在采集圖像過(guò)程中由于暗電流和放大器偏差等原因?qū)е缕淇乖肼暷芰^差,引起圖像噪點(diǎn)增多,質(zhì)量下降[1],這會(huì)直接影響圖像的后期處理工作。為方便圖像的后續(xù)處理,在圖像采集過(guò)程中,對(duì)圖像進(jìn)行預(yù)處理是十分必要的。
1 降噪方法
高斯噪聲是數(shù)字圖像中最常見(jiàn)的噪聲[2],消除圖像高斯噪聲一般考慮使用均值濾波方法。傳統(tǒng)的鄰域均值濾波法對(duì)高斯噪聲可以起到抑制作用[2],但是會(huì)引起圖像邊緣部分細(xì)節(jié)的丟失。針對(duì)圖像噪聲與紋理邊緣的相似性,文獻(xiàn)[2]提出一種基于置信區(qū)間的自適應(yīng)加權(quán)均值濾波方法。該方法利用高斯噪聲的正態(tài)分布特性,將灰度值處于置信區(qū)間內(nèi)的像素點(diǎn)判斷為噪聲,能在濾除噪聲的同時(shí),保證圖像邊緣不受影響。但該方法需要對(duì)噪聲圖像的灰度均值及噪聲的標(biāo)準(zhǔn)差預(yù)先進(jìn)行估計(jì),實(shí)時(shí)性較差。文獻(xiàn)[3]提出一種基于灰度值相似度和空間鄰近度的加權(quán)均值濾波算法,不僅考慮到濾波窗口中像素值的灰度值差異,也考慮到距離對(duì)中心像素點(diǎn)的影響,根據(jù)其兩個(gè)參數(shù)局部鄰域灰度因子和局部鄰域空間因子,生成加權(quán)系數(shù)。該方法相比于傳統(tǒng)的高斯濾波方法有更好的去噪效果,但運(yùn)算量較大,處理速度較慢。
文獻(xiàn)[4]設(shè)計(jì)了一種基于極值點(diǎn)的加權(quán)均值濾波方法。該方法可以根據(jù)圖像的灰度值,自適應(yīng)調(diào)整加權(quán)系數(shù)。通過(guò)4個(gè)方向上的方差計(jì)算,可以確定濾波窗口與紋理邊緣是否重合,并判斷出紋理的方向,據(jù)此生成不同的權(quán)重。這樣就可以達(dá)到較好的去噪保邊的效果。但如果使用上位機(jī)實(shí)現(xiàn)該算法,無(wú)法保證實(shí)時(shí)性。
通常上位機(jī)處理速度較慢,無(wú)法與圖像采集、傳輸與存儲(chǔ)系統(tǒng)形成一套流水線,而FPGA具有高速、并行、數(shù)據(jù)吞吐量大的特點(diǎn),因此針對(duì)以上問(wèn)題,提出一種基于FPGA實(shí)現(xiàn)的自適應(yīng)加權(quán)均值濾波方法。該方法將文獻(xiàn)[4]提出優(yōu)化算法映射到FPGA中,實(shí)現(xiàn)實(shí)時(shí)的圖像處理。
2 算法分析及其FPGA映射
高斯噪聲是基于像素點(diǎn)的噪聲,因此考慮使用3×3的濾波窗口[5]。采用3×3的窗口對(duì)圖像進(jìn)行均值濾波時(shí),圖像第1行和第1列及最后1行和最后1列的像素點(diǎn)會(huì)由于數(shù)據(jù)不足而無(wú)法參與運(yùn)算。為保證數(shù)據(jù)的完整性,可以采用填充法[6],在處理前先對(duì)圖像進(jìn)行2×2的擴(kuò)展。擴(kuò)充后數(shù)據(jù)如圖1所示,白色部分為圖像原始數(shù)據(jù),陰影部分為填充的數(shù)據(jù)。
濾波模板生成,首先需要檢測(cè)窗口中心點(diǎn)是否為極值點(diǎn),如果是則可能是噪聲點(diǎn)或紋理邊緣[7]。通過(guò)窗口4個(gè)方向上3個(gè)點(diǎn)方差計(jì)算確定該點(diǎn)是噪聲還是紋理邊緣,如圖2所示。如果濾波窗口與紋理邊緣重合,4個(gè)方向中與紋理邊緣有交叉的方向,由于灰度值跳變,會(huì)出現(xiàn)方差較大的情況。
而與紋理邊緣平行的方向上,灰度值不會(huì)出現(xiàn)大幅跳變,因此方差較小。根據(jù)4個(gè)方向的方差,確定紋理邊緣的方向,再確定其加權(quán)系數(shù),在穿越圖像紋理邊緣的方向上,不做濾波處理。方向1到4上生成加權(quán)系數(shù)分別為A、B、C、D。
A=0 0 0
以上權(quán)重的模版矩陣都符合正態(tài)分布的規(guī)律,且矩陣所有元素的和為2的整數(shù)次冪,在后續(xù)的歸一化運(yùn)算中,可以通過(guò)移位寄存器代替除法器實(shí)現(xiàn),節(jié)省大量FPGA資源。
3 FPGA實(shí)現(xiàn)
本設(shè)計(jì)選用Xilinx FPGA XC6SLX45作為主控芯片,以模塊化設(shè)計(jì)理念為指導(dǎo),設(shè)計(jì)了分辨率可配置的加權(quán)均值濾波模塊。該模塊由4個(gè)部分組成,包括數(shù)據(jù)緩存模塊、權(quán)重生成模塊、加權(quán)求和模塊以及求均值模塊,四個(gè)子模塊采用流水線的方式工作,保證數(shù)據(jù)能夠?qū)崟r(shí)處理,整體邏輯設(shè)計(jì)如圖3所示。
3.1 數(shù)據(jù)緩存模塊設(shè)計(jì)
數(shù)據(jù)緩存模塊的功能是將1路12 bit數(shù)據(jù)流,經(jīng)過(guò)緩存和時(shí)序調(diào)整調(diào)整為3路并行的12 bit數(shù)據(jù)流。該模塊使用兩個(gè)深度為4 K,寬度為12 bit的讀優(yōu)先RAM,分別用來(lái)存儲(chǔ)一行有效圖像數(shù)據(jù)。根據(jù)行同步信號(hào)Hsync和場(chǎng)同步信號(hào)Vsync來(lái)判斷傳感器采集回的數(shù)據(jù)是否有效。
每當(dāng)Hsync的一個(gè)上升沿到來(lái)時(shí),鎖存輸入的數(shù)據(jù),得到每行數(shù)據(jù)的第一個(gè)像素。經(jīng)過(guò)計(jì)數(shù)后,再次鎖存每行數(shù)據(jù)的最后一個(gè)像素。輸入的數(shù)據(jù)延時(shí)一個(gè)時(shí)鐘,同時(shí)把鎖存的首位數(shù)據(jù)和末位數(shù)據(jù)與輸入數(shù)據(jù)組合,形成一路新的數(shù)據(jù)流,如圖4所示。由于RAM_4 K用于緩存一行擴(kuò)充數(shù)據(jù),因此圖像數(shù)據(jù)的寬度需要小于4 094,否則會(huì)造成數(shù)據(jù)丟失。
數(shù)據(jù)緩存模塊的一個(gè)關(guān)鍵信號(hào)是行計(jì)數(shù)信號(hào),當(dāng)一幀圖像數(shù)據(jù)到來(lái)即Vsync的一個(gè)上升沿到來(lái)時(shí),行計(jì)數(shù)信號(hào)清零,每次Hsync的上升沿到來(lái)時(shí),行計(jì)數(shù)加1。由于需要對(duì)數(shù)據(jù)進(jìn)行擴(kuò)充,因此第一行和最后一行數(shù)據(jù)做特殊處理。當(dāng)?shù)谝恍薪M合數(shù)據(jù)到來(lái)時(shí),同時(shí)存儲(chǔ)進(jìn)兩個(gè)RAM中,此時(shí)3個(gè)輸出通道無(wú)輸出。當(dāng)?shù)诙薪M合數(shù)據(jù)到來(lái)時(shí),1通道輸出第二行數(shù)據(jù),2通道和3通道輸出第一行數(shù)據(jù),如圖5所示。
中間數(shù)據(jù)到來(lái)時(shí),延時(shí)后輸入1通道,且作為RAM1的輸入。RAM1的輸出同時(shí)輸入至RAM2中。在數(shù)據(jù)輸入的同時(shí),將上次存入RAM的數(shù)據(jù)讀出。這樣當(dāng)?shù)贜行數(shù)據(jù)到來(lái)時(shí),1通道輸出第N行數(shù)據(jù),2通道輸出第N-1行數(shù)據(jù),3通道輸出N-2行數(shù)據(jù),即完成三行數(shù)據(jù)的同步輸出,邏輯圖如圖6所示。
當(dāng)最后一行數(shù)據(jù)輸入完成后,開(kāi)始對(duì)其進(jìn)行擴(kuò)充。此時(shí)Data_in為無(wú)效輸入,并且RAM1輸出為最后一行數(shù)據(jù),同時(shí)賦值給1通道和2通道,RAM2輸出倒數(shù)第二行數(shù)據(jù),賦值給3通道,完成最后一行數(shù)據(jù)的擴(kuò)充,如圖7所示。
經(jīng)過(guò)RAM緩存后的數(shù)據(jù)輸出受RAM使能控制,由于RAM緩存的圖像數(shù)據(jù)是擴(kuò)展后的數(shù)據(jù),RAM的使能信號(hào)要在行同步信號(hào)的基礎(chǔ)上擴(kuò)展兩個(gè)時(shí)鐘。三個(gè)通道的信號(hào)要經(jīng)過(guò)適當(dāng)?shù)难訒r(shí)實(shí)現(xiàn)數(shù)據(jù)的同步。
3.2 權(quán)重生成模塊設(shè)計(jì)
權(quán)重生成模塊的目的是檢測(cè)濾波窗口的中心像素點(diǎn)是平滑區(qū)域還是邊緣區(qū)域,并根據(jù)檢測(cè)結(jié)果生成相應(yīng)的加權(quán)系數(shù)[6],其工作流程如圖8所示。
該模塊由加法器、減法器和乘法器構(gòu)成,數(shù)據(jù)緩存模塊輸出的三行數(shù)據(jù)分別進(jìn)行三次鎖存,得到窗口內(nèi)9個(gè)像素點(diǎn)的灰度值Pix0~Pix8。其中Pix3~Pix5作為水平方向;Pix2、Pix4、Pix6作為45°方向;Pix1、Pix4、Pix7作為90°方向;Pix0、Pix4、Pix8作為135°方向,分別計(jì)算方差。求灰度和時(shí),中心像素點(diǎn)Pix4權(quán)重為2,另外兩個(gè)點(diǎn)權(quán)重為1。這樣計(jì)算標(biāo)準(zhǔn)差時(shí),只需將灰度和通過(guò)兩個(gè)移位寄存器即可。方差計(jì)算完成后,根據(jù)方差生成相應(yīng)的權(quán)重模板及歸一化系數(shù),作為后續(xù)處理的參數(shù)。為保證處理過(guò)程流水線化,此模塊通過(guò)四路并行計(jì)算方差,因此占用了較多DSP資源。
3.3 加權(quán)求和模塊設(shè)計(jì)
加權(quán)求和模塊的功能實(shí)現(xiàn)同一行的三個(gè)像素點(diǎn)的加權(quán)運(yùn)算。該模塊由3個(gè)乘法器及兩個(gè)加法器組成,如圖9所示。一路數(shù)據(jù)輸入后,經(jīng)過(guò)三次鎖存,得到同一行的3個(gè)相鄰像素點(diǎn)。同時(shí)輸入乘法器,進(jìn)行加權(quán)運(yùn)算,權(quán)重由權(quán)重生成模塊給出。運(yùn)算完畢后把兩個(gè)乘法器的運(yùn)算結(jié)果輸入加法器進(jìn)行求和運(yùn)算,再把得到的結(jié)果與另一個(gè)乘法器得到的結(jié)果輸入下一級(jí)加法器進(jìn)行求和,得到同行3個(gè)像素點(diǎn)的加權(quán)求和輸出,如圖9所示。加權(quán)求和模塊共調(diào)用三次,完成三路數(shù)據(jù)的同步加權(quán)求和運(yùn)算。
3.4 求均值模塊設(shè)計(jì)
求均值模塊調(diào)用了兩個(gè)加法器實(shí)現(xiàn)三路同步數(shù)據(jù)的求和運(yùn)算。通過(guò)移位寄存器來(lái)計(jì)算輸出的均值。當(dāng)歸一化系數(shù)分別為4和16時(shí),加法器輸出數(shù)據(jù)經(jīng)過(guò)2個(gè)或4個(gè)向右的移位寄存器輸出,如圖10所示。
12 bit數(shù)據(jù)經(jīng)過(guò)乘法器、加法器的運(yùn)算后,變成24 bit數(shù)據(jù),但是有效數(shù)據(jù)位不變,只需取低12 bit即可。
4 仿真及實(shí)驗(yàn)結(jié)果分析
在ISE邏輯仿真時(shí)賦值給該模塊不同的圖像參數(shù),驗(yàn)證模塊的正確性和可配置性。以9×5分辨率的圖像為例:輸入圖像有效數(shù)據(jù)為1~9,數(shù)據(jù)緩存模塊輸出應(yīng)為擴(kuò)充后的并行3行數(shù)據(jù),經(jīng)過(guò)權(quán)重生成后,加權(quán)求和輸出,如圖11所示。
在仿真過(guò)程中,根據(jù)數(shù)據(jù)輸入與數(shù)據(jù)輸出的延遲判斷,在輸入圖像寬度為2 048像素情況下,處理延時(shí)為42.04 μs,滿足實(shí)時(shí)性要求。
實(shí)驗(yàn)對(duì)象選擇ON公司的CMOS圖像傳感器MT9P031,對(duì)采集到的2 048×1 944分辨率的圖像進(jìn)行預(yù)處理。結(jié)果如圖12所示,其中圖12(a)為模板圖像,圖12(b)為采集回的原始圖像,圖12(c)為傳統(tǒng)加權(quán)均值濾波處理過(guò)的圖像,圖12(d)為本文方法處理后的圖像??梢钥吹轿刺幚韴D像的噪點(diǎn)較多,且紋理邊緣有毛刺;經(jīng)過(guò)傳統(tǒng)加權(quán)均值濾波處理后,圖像的噪點(diǎn)減少,紋理邊緣毛刺消失,但比較模糊;使用本文方法處理后的圖像噪點(diǎn)較少,同時(shí)邊緣也更加清晰,圖像質(zhì)量得到明顯改善。通過(guò)MATLAB對(duì)處理結(jié)果及原始圖像進(jìn)行均方差MES與峰值信噪比PSNR計(jì)算比較,結(jié)果見(jiàn)表1。
從表1中圖像的客觀指標(biāo)可以看到,通過(guò)本文方法處理后的圖像相較于傳統(tǒng)加權(quán)均值濾波處理后的圖像,其峰值信噪比提高1.04 dB。說(shuō)明本文方法優(yōu)于傳統(tǒng)的加權(quán)均值濾波方法。
FPGA資源占用率見(jiàn)表2。由表2數(shù)據(jù)可知,除DSP資源外,本設(shè)計(jì)的資源占用率低,而一般圖像采集系統(tǒng)對(duì)DSP需求不高,因此可以方便嵌入CMOS圖像采集系統(tǒng)設(shè)計(jì)中。
5 結(jié)論
針對(duì)傳統(tǒng)均值濾波處理圖像時(shí)實(shí)時(shí)性差等特點(diǎn),結(jié)合FPGA并行處理數(shù)據(jù)的高效性,實(shí)現(xiàn)圖像的自適應(yīng)加權(quán)均值濾波處理,具有可配置、低延時(shí)的特點(diǎn)。實(shí)驗(yàn)結(jié)果表明,本設(shè)計(jì)能夠在不影響數(shù)據(jù)傳輸速度的情況下,嵌入圖像采集系統(tǒng)中,形成一套流水線,并有效提高CMOS圖像傳感器采集圖像的質(zhì)量。
參考文獻(xiàn)
[1] 徐琳亮.CMOS圖像傳感器預(yù)處理數(shù)字電路的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2017.
[2] 陳家益,黃楠,熊剛強(qiáng),等.基于置信區(qū)間的自適應(yīng)加權(quán)均值濾波算法[J].南京理工大學(xué)學(xué)報(bào),2017,41(3):307-312.
[3] 張文娟,康家銀.一種用于圖像降噪的自適應(yīng)均值濾波算法[J].小型微型計(jì)算機(jī)系統(tǒng),2011,32(12):2495-2498.
[4] 楊樊,韓艷麗.一種基于極值的自適應(yīng)均值濾波算法[J].紅外與激光工程,2006(S4):116-120.
[5] 彭宏,趙鵬博.邊緣檢測(cè)中的改進(jìn)型均值濾波算法[J].計(jì)算機(jī)工程,2017,43(10):172-178.
[6] 張文娟,康家銀.一種用于圖像降噪的自適應(yīng)均值濾波算法[J].小型微型計(jì)算機(jī)系統(tǒng),2011,32(12):2495-2498.
[7] 郭貝貝,易三莉,賀建峰,等.改進(jìn)的非局部均值濾波算法[J].計(jì)算機(jī)工程,2016,42(7):227-231.
[8] 李佐勇,湯可宗,胡錦美,等.椒鹽圖像的方向加權(quán)均值濾波算法[J].中國(guó)圖象圖形學(xué)報(bào),2013,18(11):1407-1415.
作者信息:
武昊男,儲(chǔ)成群,任勇峰,焦新泉
(中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西 太原030051)