李龍華 王肅國(guó)
摘 ?要:針對(duì)傳統(tǒng)的中值濾波軟件處理速度慢,無(wú)法達(dá)到圖像處理高實(shí)時(shí)性要求的特點(diǎn)。文獻(xiàn)中提出了基于FPGA的快速中值濾波算法,充分結(jié)合硬件的高實(shí)時(shí)性和軟件的調(diào)度復(fù)雜性,同時(shí)采用流水線(xiàn)結(jié)構(gòu),使圖像中值濾波處理的實(shí)時(shí)性得到提高。文章對(duì)已有的算法進(jìn)行改進(jìn),簡(jiǎn)化了硬件結(jié)構(gòu),而又不失圖像處理的實(shí)時(shí)性。該算法通過(guò)仿真驗(yàn)證,得出算法在圖像中值濾波處理中的可行性,能夠滿(mǎn)足實(shí)時(shí)性要求。
關(guān)鍵詞:中值濾波;實(shí)時(shí)性;FPGA;硬件結(jié)構(gòu);仿真驗(yàn)證;可行性
中圖分類(lèi)號(hào):TP391.41 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)21-0097-04
Software and Hardware Optimization of Image Median Filtering Algorithm
LI Longhua,WANG Suguo
(Shandong Vocational Institute of Fashion Technology,Taian ?271000,China)
Abstract:Aiming at slow speed of software processing for the traditional median filtering,unable to meet the characteristics of the high real-time requirements of image processing. The literature proposed the FPGA-based fast median filtering algorithm,taking full advantage of high real-time hardware and software scheduling complexity,along with adopting a pipelined structure,so that improve the processing of real-time of image median filtering. The article improves existing algorithm,simplifies the hardware structure,and does not lose the real-time image processing. The algorithm is verified by simulation,and the feasibility of the algorithm in the image median filter processing is obtained,and it can meet the real-time requirements.
Keywords:median filtering;real-time;FPGA;hardware structure;simulation verification;feasibility
0 ?引 ?言
物聯(lián)網(wǎng)是當(dāng)今世界的一大研究熱點(diǎn),摒棄了原來(lái)只研究軟件算法,或者只研究硬件結(jié)構(gòu)的學(xué)科研究單一性的問(wèn)題,真正地將軟硬件結(jié)合實(shí)現(xiàn)快速中值濾波算法,以交叉學(xué)科的形式落實(shí)到計(jì)算機(jī)教學(xué)中。隨著越來(lái)越多高職院校相繼開(kāi)設(shè)物聯(lián)網(wǎng)技術(shù)(包含校企合作)等專(zhuān)業(yè),以山東服裝職業(yè)學(xué)院為例,開(kāi)設(shè)物聯(lián)網(wǎng)技術(shù)(中興校企合作專(zhuān)業(yè)),使得高職學(xué)生對(duì)于物聯(lián)網(wǎng)有了一個(gè)全方位的了解學(xué)習(xí)機(jī)會(huì)。采用軟硬件結(jié)合的方式,在軟件算法實(shí)現(xiàn)過(guò)程中,引進(jìn)硬件方案,從而加速軟件算法實(shí)現(xiàn)的過(guò)程,提高算法效率。學(xué)生在學(xué)習(xí)物聯(lián)網(wǎng)專(zhuān)業(yè)知識(shí)之初,對(duì)物聯(lián)網(wǎng)技術(shù)有個(gè)簡(jiǎn)單的認(rèn)識(shí),及對(duì)軟硬件結(jié)合解決軟件算法效率較低問(wèn)題有個(gè)初步的了解,故本文以中值濾波算法在軟硬件結(jié)合技術(shù)方面做出研究,引起學(xué)生對(duì)物聯(lián)網(wǎng)的學(xué)習(xí)興趣。
在高職物聯(lián)網(wǎng)應(yīng)用技術(shù)專(zhuān)業(yè)的技術(shù)類(lèi)課程教學(xué)中采用中值濾波算法處理圖像為切入點(diǎn),利用軟硬件結(jié)合優(yōu)化算法,可極大提高學(xué)生學(xué)習(xí)程序的興趣,感受算法的魅力,增進(jìn)其對(duì)專(zhuān)業(yè)的了解。因此在物聯(lián)網(wǎng)應(yīng)用技術(shù)教學(xué)中,應(yīng)用軟硬件協(xié)同優(yōu)化圖像中值濾波算法具有理論意義和實(shí)踐意義。文章在傳統(tǒng)的中值濾波算法的基礎(chǔ)上,引入軟硬件協(xié)同,采用基于FPGA技術(shù)設(shè)計(jì),并減少算法在硬件結(jié)構(gòu)設(shè)計(jì)上的投入。同時(shí),又能滿(mǎn)足在圖像處理中實(shí)時(shí)性的要求。相比其他的濾波技術(shù),既能有效的消除脈沖噪聲和椒鹽噪聲,又可以較好的保持圖像的邊緣信息[1]。
1 ?中值濾波原理
1.1 ?中值濾波的基本原理
采用合理算法去除圖像噪聲是一種有效的方法[2]。中值濾波(Median Filtering)是一種非線(xiàn)性的圖像處理技術(shù),能有效地抑制圖像中的噪聲。相關(guān)原理是對(duì)圖像中的所有像素值的整個(gè)區(qū)域進(jìn)行數(shù)值排序,找出該值域的中位值,當(dāng)作該像素鄰域的輸出值,參與圖像的呈現(xiàn)。在這種算法中,最大像素值及最小像素值在算法實(shí)施過(guò)程中不再作為像素輸出。因而,該算法能夠在圖像的平滑操作中,有效地過(guò)濾尖銳噪聲,例如常見(jiàn)的椒鹽噪聲等。算法的數(shù)學(xué)表達(dá)如下:
g(x,y)=median{f(x-i,y-j)};(i,j)∈S ? (1)
式(1)中g(shù)(x,y)和f(x,y)分別為處理后及原圖像中的像素值,S為窗口,可以是線(xiàn)性、正方形、十字形等窗口[3]。
1.2 ?傳統(tǒng)的中值濾波算法分析
傳統(tǒng)的算法排序是采用冒泡法對(duì)像素值比較排序,對(duì)于一個(gè)像素值為n的窗口,采用冒泡法,要進(jìn)行以n2的數(shù)量級(jí)的排序。與此同時(shí),采用冒泡法[4],需要產(chǎn)生第(n+1)/2個(gè)大值時(shí)方能產(chǎn)生一個(gè)中值,所以都要經(jīng)過(guò)若干個(gè)時(shí)鐘周期才能產(chǎn)生一個(gè)中值。以3×3窗口為例,采用中值濾波純軟件算法,需要冒泡排序36次。采用5×5,7×7等窗口時(shí),過(guò)程將會(huì)十分繁瑣,根本無(wú)法滿(mǎn)足圖像處理實(shí)時(shí)性的要求。
針對(duì)傳統(tǒng)算法在實(shí)時(shí)性要求較高的工程中無(wú)法滿(mǎn)足需求的不足,文獻(xiàn)中提出基于FPGA的快速中值濾波算法,該算法S選為矩陣模版,以三值排序模塊為基礎(chǔ)[5]。先在每行內(nèi)進(jìn)行排序,再進(jìn)行列排序,最后在主對(duì)角線(xiàn)上的像素進(jìn)行取中值。以3×3矩陣的模板窗口為例進(jìn)行分析。行內(nèi)排序需要9次。同理,列排序也需要9次,最后的取中值運(yùn)算需要3次。再者,比較次數(shù)的多少?zèng)Q定了所需三值排序模塊的多少。通過(guò)上述分析可知,得到一個(gè)3×3的中值,需要進(jìn)行21次比較,7個(gè)三值排序模塊。
2 ?改進(jìn)中值濾波算法
2.1 ?算法分析
以文獻(xiàn)[5]中FPGA的中值濾波算法為基礎(chǔ),本文對(duì)此進(jìn)行改進(jìn)。再次降低算法的比較次數(shù),所需三值排序模塊的數(shù)量進(jìn)一步減少,從而使硬件模塊化設(shè)計(jì)進(jìn)一步簡(jiǎn)化。具體過(guò)程如表1、表2、表3所示。
其中的中值就是a3**,b2**,c1**三者之間的中間值,具體分析如下。
對(duì)三個(gè)表的操作如下:第一步,對(duì)表1中的每行數(shù)值并行處理,即對(duì)三個(gè)數(shù)值從小至大排序,得表2。第二步,根據(jù)排序操作,可得出,其中a2*,b2*,c2*為所在行中值。然后,以這三個(gè)中值按從小到大順序,對(duì)表2數(shù)據(jù)進(jìn)行行間排序,產(chǎn)生表3。
對(duì)表3進(jìn)行分析得出中值,首先排除一定不是中值的點(diǎn)。a1**,a2**顯然不是中間值,如果這兩個(gè)值為中值,其中比其大的值不超過(guò)四個(gè)。以a2**為例,因?yàn)閷?duì)表1進(jìn)行的排序是從小到大的,所以a3**比它大。又因?yàn)閷?duì)表2的排序是行間按從小到大的排序,所以b2**,c2**也比它大,自然b3**,c3**也要比a2**大,所以a2**不可能是最大值。同理a1**也不可能是。c2**,c3**顯然也不是中值,c2**為例,根據(jù)數(shù)據(jù)處理的方法,得出小于c2**的數(shù)有五個(gè),分別是a3**、b1**、b2**、b3**、c1**。同理可得出c3**也不是所需中值。
剩下的五個(gè)值a3**、b1**、b2**、b3**、c1**中就包含了我們所需要的中值,因?yàn)閎1**、b2**、b3**已有順序,進(jìn)而無(wú)需重復(fù)參與排序。按照插入排序的方式,只要a3**、b2**、c1**進(jìn)行排序并取出其中的中間值,即為我們所要求的。
算法復(fù)雜度分析,第一步并行方式對(duì)行內(nèi)數(shù)值排序,比較9次,第二步各行中值比較,比較3次,第三步對(duì)三個(gè)數(shù)值進(jìn)行比較排序,比較3次。由此得出,本文改進(jìn)算法需要15次比較,比文獻(xiàn)[5]中的算法減少了6次。比較次數(shù)的降低,從而使三值排序模塊的使用個(gè)數(shù)減少。改進(jìn)的中值濾波算法只需5個(gè)三值排序模塊就能夠?qū)崿F(xiàn)。在硬件結(jié)構(gòu)的設(shè)計(jì)上,可以達(dá)到簡(jiǎn)化的目的。本文算法與純軟件、文獻(xiàn)[5]算法的具體比較如表4所示。
2.2 ?改進(jìn)中值濾波算法的設(shè)計(jì)
此算法的設(shè)計(jì)分為兩大部分:一是模塊產(chǎn)生部分,二是對(duì)產(chǎn)生的模塊進(jìn)行取中值部分。模塊產(chǎn)生部分即為N×N窗口生成模塊,將帶有噪聲的圖像的像素以窗口形式進(jìn)行呈現(xiàn),參與中值濾波算法中去。文章采用3×3窗口,因此需要3×3窗口。對(duì)產(chǎn)生的模塊進(jìn)行取中值部分,對(duì)已產(chǎn)生的3×3窗口像素進(jìn)行取中值操作,用于完成中值濾波算法。
2.2.1 ?3×3窗口生成模塊
原理框圖如圖1所示。
圖1中包括7個(gè)移位寄存器R1~R7,兩個(gè)先進(jìn)先出的存儲(chǔ)器FIFO1與FIFO2,F(xiàn)IFO用來(lái)存儲(chǔ)一行的數(shù)據(jù)[2],使9個(gè)數(shù)據(jù)輸出排列呈如表1所示的3×3模板所對(duì)應(yīng)的圖像數(shù)據(jù)[6]。像素值輸入,就相當(dāng)于一個(gè)3×3的窗口掃過(guò)整個(gè)圖像,得到圖像中的全部像素。
2.2.2 ?中值濾波設(shè)計(jì)
改進(jìn)中值濾波模塊示意圖如圖2所示。
C為三個(gè)數(shù)值排序模塊[7],M1,M2,M3是已經(jīng)過(guò)上一周期各行排序后的中間值為基準(zhǔn),進(jìn)行排序產(chǎn)生的新模塊。分別以模塊M1的最大值,模塊M2中間值,模塊M3的最小值做為C31的輸入值進(jìn)行排序,輸出median。
快速中值濾波算法的實(shí)現(xiàn)就是以三點(diǎn)排序的模塊為單位,由圖2可以看出,此算法利用5個(gè)排序模塊,比文獻(xiàn)[5]中算法實(shí)現(xiàn)所需模塊數(shù)目減少了2個(gè),達(dá)到硬件結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)化的目的。再加上時(shí)序的合理安排,采用流水線(xiàn)實(shí)現(xiàn)模式,最終達(dá)到處理所需要的效果。
由上可知,三值排序模塊是快速中值濾波算法的一個(gè)基礎(chǔ),實(shí)現(xiàn)此三值排序模塊的流程圖如圖3所示。
其中R1存放a1與a2中較大的值,R2存放兩者中較小的值,然后再將R1、R2與R3進(jìn)行比較,從而對(duì)三者進(jìn)行最終排序[7]。將9個(gè)數(shù)以行為單位分成三組,進(jìn)行并行處理,為9個(gè)數(shù)值的排序取中值縮短了時(shí)間,提高算法的處理效率。
3 ?改進(jìn)中值濾波算法的仿真
3.1 ?Quartus II與Modelsim的仿真
通過(guò)使用Quartus II 11.0和ModelSim SE 6.5a進(jìn)行仿真驗(yàn)證,可得到如圖4所示的仿真圖形。
由圖可以看到,時(shí)鐘clk上升沿有效,復(fù)位信號(hào)rst_n有效。這里采用了流水線(xiàn)處理方法,流水線(xiàn)處理[8]是提高組合邏輯設(shè)計(jì)處理效率和吞吐量最常用的方法。如流程圖2所示,采用流水線(xiàn)處理方法,雖然第一次輸出有較長(zhǎng)的的延時(shí),當(dāng)經(jīng)過(guò)若干個(gè)周期的延遲后,可以每個(gè)周期產(chǎn)生一個(gè)結(jié)果。本算法中采用三級(jí)流水線(xiàn)結(jié)構(gòu),經(jīng)過(guò)三個(gè)周期后,產(chǎn)生了第一個(gè)結(jié)果,之后的每個(gè)時(shí)鐘周期都可以產(chǎn)生輸出值,這樣大大地增加了系統(tǒng)的吞吐量。再者,這種流水線(xiàn)的設(shè)計(jì)方式解決了系統(tǒng)工作頻率的瓶頸問(wèn)題,提高了系統(tǒng)的帶寬以及資源利用率。
3.2 ?ModelSim與Matlab進(jìn)行聯(lián)合仿真
為了節(jié)省仿真時(shí)間,筆者采用Link for ModelSim組件進(jìn)行軟硬件協(xié)助仿真[9],這種仿真方式縮小了算法同硬件實(shí)現(xiàn)之間的鴻溝,縮短了仿真驗(yàn)證的時(shí)間,且簡(jiǎn)單易行。通過(guò)對(duì)加入椒鹽噪聲的cameraman圖片的處理,并與文獻(xiàn)[5]中的處理效果進(jìn)行比較,可以發(fā)現(xiàn)處理的效果大致相同。但是,在硬件部分上,該算法的硬件結(jié)構(gòu)得到了進(jìn)一步簡(jiǎn)化,節(jié)約了硬件資源,也為此系統(tǒng)的設(shè)計(jì)提供了方便。
4 ?結(jié) ?論
物聯(lián)網(wǎng)技術(shù)是一門(mén)軟硬件協(xié)同工作的技術(shù),屬于交叉學(xué)科。在高職院校引入物聯(lián)網(wǎng)技術(shù)專(zhuān)業(yè),相對(duì)高職學(xué)生而言,從技術(shù)和理論上是一種比較新的事物,從接觸專(zhuān)業(yè)開(kāi)始就應(yīng)該有一個(gè)全面的了解。高職院校的物聯(lián)網(wǎng)教學(xué),需要采用以點(diǎn)帶面的教學(xué)方式,找到適當(dāng)?shù)恼n程切入點(diǎn),使學(xué)生能夠更形象的了解學(xué)科組成結(jié)構(gòu)等方面的知識(shí)。因此文章為更好實(shí)現(xiàn)對(duì)物聯(lián)網(wǎng)應(yīng)用技術(shù)的教學(xué)工作,提高學(xué)生學(xué)習(xí)物聯(lián)網(wǎng)技術(shù)的積極性,通過(guò)對(duì)現(xiàn)有的中值濾波算法進(jìn)行軟硬件協(xié)同優(yōu)化,與單純的算法實(shí)現(xiàn)相比,實(shí)時(shí)性有很大的提高,其處理穩(wěn)定性與可靠性有所改善。同時(shí)又增加與文獻(xiàn)[5]的比較,在不影響快速實(shí)現(xiàn)中值濾波算法效率下,又對(duì)硬件結(jié)構(gòu)做出優(yōu)化,節(jié)省了硬件投入。不僅可以更好地滿(mǎn)足物聯(lián)網(wǎng)中圖像中值濾波算法簡(jiǎn)單、高效的特點(diǎn),同時(shí),也對(duì)學(xué)生了解物聯(lián)網(wǎng)技術(shù)設(shè)計(jì)的靈活性,了解物聯(lián)網(wǎng)技術(shù)具有廣闊的應(yīng)用前景有很大的幫助。
參考文獻(xiàn):
[1] 韓團(tuán)軍.快速中值濾波算法研究及其FPGA硬件實(shí)現(xiàn) [J].電子器件,2017,40(3):697-701.
[2] 沈?qū)W利,王肅國(guó).基于FPGA的改進(jìn)型中值濾波算法研究 [J].微電子學(xué)與計(jì)算機(jī),2014,31(1):21-24.
[3] 馬麗圓,常錦才.一種迭代的自適應(yīng)中值濾波算法 [J].軟件,2020,41(9):69-71.
[4] 張海生.FPGA在圖像處理系統(tǒng)設(shè)計(jì)與仿真中的應(yīng)用研究 [J].電子世界,2020(21):155-156.
[5] 李新春,趙璐.基于中值濾波算法濾波器的FPGA實(shí)現(xiàn) [J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(9):82-85+72.
[6] 趙亮,劉鵬,王曉曼,等.基于FPGA快速中值濾波算法的硬件實(shí)現(xiàn) [J].長(zhǎng)春理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,41(5):97-100+115.
[7] 仙云森.基于FPGA的圖像處理算法研究及硬件設(shè)計(jì) [D].大連:大連理工大學(xué),2008.
[8] 潘松,黃繼業(yè),潘明.EDA技術(shù)實(shí)用教程——Verilog HDL版:第4版 [M].北京:科學(xué)出版社,2010.
[9] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程:第2版 [M].北京:北京航空航天大學(xué)出版社,2008.
作者簡(jiǎn)介:李龍華(1988—),女,漢族,山東泰安人,助教,碩士,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù);王肅國(guó)(1987—),男,漢族,山東濟(jì)寧人,助教,碩士,研究方向:計(jì)算機(jī)應(yīng)用技術(shù)。