張 灝,王素珍,鄭 宇,王 偉,李濰志,王 鵬,任貴珊,馬家麟
(青島大學(xué) 電子信息學(xué)院,山東 青島 266071)
邊緣檢測(cè)是分離圖像目標(biāo)主體和背景的主要依據(jù)。通過檢測(cè)圖像上灰度變化顯著的像素點(diǎn)集合來確定圖像的邊緣。圖像的邊緣檢測(cè)在許多領(lǐng)域,比如醫(yī)學(xué)影像、地質(zhì)勘探、衛(wèi)星遙感、航天、交通、計(jì)算機(jī)視覺等方面都有重要的應(yīng)用。目前對(duì)圖像清晰度的要求越來越高,圖像處理的信息量巨大。一般串行方式已經(jīng)不能滿足對(duì)圖像大量信息的實(shí)時(shí)處理。大規(guī)模可編程片上系統(tǒng)(Field Programmable Gate Array,F(xiàn)PGA)芯片以其獨(dú)特的并行可編程處理信號(hào)的方式,成為處理圖像的重要器件。
邊緣檢測(cè)的常用方法是SOBEL算法。文獻(xiàn)[1-5]成功地在FPGA芯片上應(yīng)用SOBEL算法實(shí)現(xiàn)了圖像的邊緣檢測(cè)。但是,其邊緣檢測(cè)的門限閾值需要反復(fù)的實(shí)驗(yàn)確定,且圖像有噪聲的影響,同時(shí)邊緣輪廓也不夠細(xì)化。文獻(xiàn)[6]引入高斯濾波(GAUSS-filter),對(duì)圖像先去噪聲處理,再送入SOBEL算法進(jìn)行邊緣檢測(cè),減少了圖像邊緣背景噪聲的干擾。文獻(xiàn)[7]把經(jīng)過SOBEL算法檢測(cè)出的邊緣圖像送到非極大值抑制(Non-maximum Suppression,NMS)算法模塊處理,細(xì)化了圖像輪廓的邊緣。文獻(xiàn)[8-10]將大津法OTSU加入SOBEL算法中,使圖像邊緣的門限閾值能夠自適應(yīng)圖像特點(diǎn)調(diào)整。
本文在FPGA器件上,綜合應(yīng)用GAUSS-filter、SOBEL、NMS、OTSU等多種算法,進(jìn)行圖像邊緣檢測(cè)。將原始采集到的彩色圖像轉(zhuǎn)換成灰度圖像,先對(duì)圖像進(jìn)行高斯平滑處理,消除背景干擾性噪聲;應(yīng)用SOBEL算法計(jì)算灰度梯度值,得到圖像邊緣;再應(yīng)用NMS算法處理灰度,對(duì)比出最大的灰度像素集合;最后應(yīng)用OTSU算法自適應(yīng)圖像特點(diǎn)確定圖像門限閾值,提高圖像邊緣檢測(cè)的適應(yīng)性。實(shí)驗(yàn)結(jié)果證明本文方法對(duì)不同圖像都有很好的邊緣檢測(cè)效果。在運(yùn)行速度上,比軟件實(shí)現(xiàn)時(shí)間少很多,提高了系統(tǒng)處理的速度。該實(shí)時(shí)圖像邊緣檢測(cè)方法能夠嵌入式地應(yīng)用到許多領(lǐng)域中。
本系統(tǒng)采用XILINX公司的ARTIX7系列的xc7a100tfgg484-2芯片作為邊緣檢測(cè)的主要器件,同時(shí)在FPGA主控芯片外圍配置雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR3 SDRAM(Double Data Rate SDRAM)緩存圖像。基于FPGA的實(shí)時(shí)邊緣檢測(cè)系統(tǒng)如圖1所示。采用乒乓操作方法將來自CCD攝像機(jī)的分辨率為640×480的圖像先緩存到DDR3存儲(chǔ)器中,在圖像請(qǐng)求處理信號(hào)的作用下,圖像數(shù)據(jù)流將從DDR3存儲(chǔ)中被讀出,進(jìn)行圖像的邊緣檢測(cè)處理。原始采集到的圖像為彩色圖,將圖像由彩色空間轉(zhuǎn)換到灰度空間;轉(zhuǎn)換后的灰度圖像混有噪聲,在進(jìn)行圖像邊緣檢測(cè)之前,先將圖像送到高斯濾波器中處理,消除圖像中的噪聲。

圖1 整體結(jié)構(gòu)框圖
高斯濾波處理后的圖像送到SOBEL算法模塊中,進(jìn)行梯度的計(jì)算,包括X、Y方向的梯度計(jì)算,進(jìn)而計(jì)算出像素的梯度值,這些梯度像素點(diǎn)對(duì)應(yīng)的輪廓比較粗糙。為一步對(duì)圖像邊緣進(jìn)行細(xì)化處理,要對(duì)梯度值進(jìn)行非極大值抑制處理,即判斷當(dāng)前像素點(diǎn)的梯度值是否是梯度方向上的極大值,如果是,則保留該梯度值;否則,則將其歸零。圖像的邊緣檢測(cè)需要確定閾值,采用OTSU算法,求取目標(biāo)與背景之間的灰度類間方差來確定閾值。圖像的梯度值與閾值進(jìn)行比較,得到圖像邊緣,將檢測(cè)到的邊緣輪廓送到顯示器進(jìn)行顯示。
SOBEL算法是通過SOBEL算子矩陣與圖像鄰域矩陣進(jìn)行卷積,計(jì)算X方向和Y方向的梯度分量,來獲取圖像的邊緣信息。圖2為邊緣檢測(cè)模板。

(a)3×3 neighborhood window (b)Edge detection openator
圖2 邊緣檢測(cè)模板
Fig.2 Edge detection template
圖2(a)為中心像素點(diǎn)的3×3鄰域窗口,圖2(b)為SOBEL算法水平方向、垂直方向的梯度算子。將像素鄰域與X、Y方向梯度算子進(jìn)行卷積運(yùn)算,分別可以得到水平方向的梯度值Gx、垂直方向的梯度值Gy為
(1)
3×3鄰域的梯度卷積值為

(2)
其中G為當(dāng)前鄰域內(nèi)的梯度值。因?yàn)镕PGA不容易執(zhí)行開平方的操作,為了方便FPGA內(nèi)部電路的計(jì)算,此處將鄰域的梯度卷積值簡(jiǎn)化表示為
G=|Gx|+|Gy|.
(3)
用GAUSS filter和SOBEL算法進(jìn)行邊緣檢測(cè)可以得到粗線條的圖像輪廓。對(duì)圖像輪廓細(xì)化處理的算法是非極大值抑制NMS。NMS是將鄰域中心像素點(diǎn)的梯度值與它所在梯度方向上的梯度值的線性插值相比較,判斷其是否為最大值,如果是,則保留該像素點(diǎn)梯度值;否則,直接將鄰域中心像素點(diǎn)的梯度值歸為0。這種方法能夠去除圖像中存在的偽邊緣像素點(diǎn)[11]。
非極大值抑制必須要進(jìn)行梯度方向的判斷,梯度方向計(jì)算公式一般為θ(i,j)=arctan(Gx/Gy),使用FPGA實(shí)現(xiàn)反正切函數(shù)相對(duì)較難。在論文中是通過判斷梯度值在X方向Gx的分量和在Y方向的Gy分量之間大小,以及兩者的正負(fù)來判斷當(dāng)前梯度方向在哪一個(gè)“方向象限”,這樣去處理當(dāng)前的梯度方向會(huì)減少一定的計(jì)算量。

(a)θ(i,j)∈[0°,45°) (b)θ(i,j)∈[45°,90°)

(c)θ(i,j)∈[90°,135°) (d)θ(i,j)∈[135°,180°)
如圖3所示,其中Gi為3×3鄰域中的像素點(diǎn)的梯度值,mi為中心像素點(diǎn)G4的梯度方向與鄰域的交點(diǎn)。圖中只畫出[0°,180°]上4個(gè)“方向象限”內(nèi)的梯度方向圖,[180°,360°]上梯度方向由此類推。梯度方向上的值可以由鄰域內(nèi)相應(yīng)的梯度值進(jìn)行線性插值求得。例如:圖3(b)的m4點(diǎn)的值可以由G6和G7進(jìn)行線性插值[12-13]求出。G4所有梯度方向上的線性插值公式如表1所示,其中x和y分別代表|Gx|、|Gy|。

表1 線性插值公式表
從表1中可以看出,通過線性插值公式可得到[0°,360°]梯度方向上的mi值,NMS方法是G4與mi的值進(jìn)行比較,如果G4比mi的值大,則保留G4;否則將G4置為0。這樣經(jīng)過NMS處理后的任意像素點(diǎn)的梯度值可表示為公式(4),其中KnmsG4為非極大值抑制結(jié)果。
(4)
設(shè)置一幅圖像的灰度閾值就能進(jìn)行邊緣檢測(cè)。如果設(shè)置閾值過大,會(huì)丟失一些邊緣信息;如果設(shè)置的閾值較小,那么會(huì)出現(xiàn)一些假的邊緣,使得輪廓不準(zhǔn)確。為了使邊緣最大程度地體現(xiàn)目標(biāo)信息,就得恰當(dāng)?shù)卮_定灰度閾值。本文使用OTSU算法自適應(yīng)圖像灰度來確定當(dāng)前的閾值。OTSU算法通過計(jì)算背景和目標(biāo)灰度之間的類間方差來區(qū)分圖像邊緣,類間方差越大,證明背景和目標(biāo)之間的差別越大[14-16]。
假設(shè)w(D0)為背景D0出現(xiàn)的概率,w(D1)為目標(biāo)D1出現(xiàn)的概率,u(D0)和u(D1)分別為D0和D1的灰度均值。w(D0)、w(D1)、u(D0)以及u(D1)計(jì)算公式如公式(5)所示:
(5)
其中:P(i)為灰度級(jí)i出現(xiàn)的概率,T為背景和目標(biāo)的分界灰度級(jí),L為最大灰度級(jí)。則整幅圖像的背景與目標(biāo)之間的類間方差g為:
g=w(D0)*w(D1)*(u(D0)-u(D1))2,
(6)
其中:w(D1)=1-w(D0),將公式(5)中變量代入公式(6)可得:
(7)
其中N(i)為灰度級(jí)i的統(tǒng)計(jì)數(shù)。不同的圖像對(duì)應(yīng)不同的輪廓邊緣,其對(duì)應(yīng)的最大類間方差不同,當(dāng)每幅圖像的g達(dá)到最大時(shí),此時(shí)的灰度級(jí)i即為我們所需要的最佳閾值。
在FPGA芯片上實(shí)現(xiàn)SOBEL算法的過程中,產(chǎn)生3×3鄰域領(lǐng)域滑動(dòng)窗口是關(guān)鍵技術(shù)。本文采用XILINX公司的SHIFT_RAM模塊進(jìn)行3×3鄰域窗口設(shè)計(jì),其深度設(shè)置為一幅圖像的一行像素點(diǎn)數(shù),寬度為8位。

圖4 水平方向和垂直方向梯度計(jì)算
如圖4所示,構(gòu)建3×3鄰域需要2個(gè)SHIFT_RAM緩存模塊,每行3個(gè)D觸發(fā)器,共3行。3×3鄰域窗口滑窗式地遍歷整幅圖像實(shí)現(xiàn)SOBEL算法,從3×3鄰域窗輸出的數(shù)據(jù)對(duì)應(yīng)圖2(a)中的像素灰度值。圖4右是實(shí)現(xiàn)公式(1)的結(jié)構(gòu)框圖,計(jì)算輸出水平方向Gx和垂直方向Gy。圖5是實(shí)現(xiàn)公式(3)的電路結(jié)構(gòu)圖,判斷X、Y方向梯度值正負(fù),再分別相加計(jì)算SOBEL算法的梯度值。

圖5 SOBEL算子梯度值計(jì)算
4.2.1 NMS公式改進(jìn)
由表1可看出,在進(jìn)行線性插值計(jì)算時(shí),會(huì)涉及除法,因?yàn)镕PGA計(jì)算除法需要消耗較多的資源,本文將除法轉(zhuǎn)化為乘法,實(shí)現(xiàn)插值計(jì)算。將“方向象限”線性插值公式兩邊同時(shí)乘以分母,變除法為乘法運(yùn)算。例如線性插值m1的公式可表示為xm1=yG2+(x-y)G5。在m1的計(jì)算中,x>y,取Mbig=max(x,y),Msmall=min(x,y),則有:
Mbig*m1=Msmall*G2+(Mbig-Msmall)*G5,
(8)
同理,在m2~m8的計(jì)算中,通過比較x、y之間的大小關(guān)系,將線性插值公式總結(jié)為式(9):
Mbig*mi=Msmall*GA+(Mbig-Msmall)*GB,
(9)
其中GA和GB分別為相應(yīng)的3×3鄰域內(nèi)的兩個(gè)梯度值。相應(yīng)地在非極大值抑制判斷表達(dá)式中進(jìn)行改變,可得改進(jìn)后的判斷表達(dá)式:
(10)
4.2.2 方向象限編碼
在FPGA實(shí)現(xiàn)公式(9)的計(jì)算中,首先通過判斷Gx和Gy的大小以及正負(fù)來確定鄰域內(nèi)的中心像素點(diǎn)的梯度方向,為此用b2b1b0對(duì)8個(gè)“方向象限”方向進(jìn)行編碼,用info_data表示,便于程序運(yùn)行時(shí)進(jìn)行查找表計(jì)算。可得到表2所示內(nèi)容。

表2 方向象限編碼
如表2所示,“方向象限”編碼信號(hào)info_data的b2位為Gy的符號(hào)位,b1位為Gx的符號(hào)位,b0位是兩者之間的大小關(guān)系,如果|Gx|>|Gy|,則為0,反之,則為1。例如,第5、6“方向象限”,其Gx、Gy均為負(fù)值,則info_data的b2、b1位都為1,但確定梯度方向具體在二者中哪個(gè),則要根據(jù)Gx和Gy的大小進(jìn)行判斷,第5“方向象限”|Gx|>|Gy|,“方向象限”編碼為110,第6“方向象限”|Gy|>|Gx|,“方向象限”編碼為111。根據(jù)表2中的“方向象限”信息看出,每個(gè)“方向象限”的Gx和Gy大小情況不同,為統(tǒng)一計(jì)算,將其中較大的值賦值給Mbig,較小的值賦值給Msmall。圖6為“方向象限”信息仿真圖,out_x_data=Mbig為梯度方向上梯度值的較大值,out_x_data=Msmall為梯度方向上梯度值的較小值,out_info=info_data為“方向象限”編碼信息。

圖6 “方向象限”信息仿真圖
4.2.3 NMS內(nèi)插公式的FPGA實(shí)現(xiàn)
圖7為非極大值實(shí)現(xiàn)框圖,上半部分為非極大值抑制部分,下半部分為3×3鄰域生成部分。要進(jìn)行非極大值抑制計(jì)算,需要構(gòu)建3×3鄰域窗口,窗口構(gòu)建仿照SOBEL算法模塊實(shí)現(xiàn)。進(jìn)入窗口的數(shù)據(jù)是經(jīng)過“方向象限”信息處理后的Mbig、Msmall、out_info與Gi拼接的數(shù)據(jù)。經(jīng)3×3鄰域窗口緩存后,分別提取Mbig、Msmall、out_info與Gi對(duì)應(yīng)的鄰域中心點(diǎn)的值data_max,data_min,out_info_4以及G4,將這些數(shù)據(jù)送入非極大值抑制模塊進(jìn)行非極大值抑制計(jì)算。將“方向象限”編碼值out_info_4作為L(zhǎng)UT查找表的地址,進(jìn)而尋找到線性插值的3×3鄰域梯度值數(shù)據(jù)GA和GB。例如,當(dāng)3×3滑動(dòng)窗口鄰域的中心梯度值的out_info為001時(shí),插值公式對(duì)應(yīng)梯度值數(shù)據(jù)分別為G2、G1、G6、G7,則梯度插值索引值{c3,c2,c1,c0}={2,1,6,7},根據(jù)索引值也可找到梯度值數(shù)據(jù)。圖中減法器用來計(jì)算Mbig與Msmall的差值Mbig-Msmall,乘法器主要負(fù)責(zé)公式(9)中的乘法操作,加法器實(shí)現(xiàn)式公式(9)左端兩數(shù)據(jù)的相加,比較器COM、與門&、二選一數(shù)據(jù)選擇器MUX則是用來實(shí)現(xiàn)公式(10)非極大值的判斷,使用D觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)延時(shí)使數(shù)據(jù)之間進(jìn)行對(duì)齊。DOUT為非極大值抑制結(jié)果,且nmsG4=DOUT。

圖7 非極大值實(shí)現(xiàn)原理圖
要實(shí)現(xiàn)OTSU全局閾值分割,首先是要統(tǒng)計(jì)當(dāng)前灰度級(jí)所對(duì)應(yīng)的像素點(diǎn)數(shù);對(duì)于灰度級(jí)的統(tǒng)計(jì),采用直方圖統(tǒng)計(jì)方法來進(jìn)行。送入到直方圖統(tǒng)計(jì)的數(shù)據(jù)是經(jīng)過非極大值抑制后的數(shù)據(jù)DOUT。直方圖統(tǒng)計(jì)主要由雙口RAM及檢測(cè)控制器組成,其中雙口RAM位寬設(shè)置為8位,深度為32位,雙口RAM用于存儲(chǔ)每個(gè)灰度級(jí)所對(duì)應(yīng)的統(tǒng)計(jì)值。直方圖統(tǒng)計(jì)的思想如下:利用每個(gè)像素點(diǎn)所對(duì)應(yīng)的灰度值作為雙口RAM的存儲(chǔ)及讀取地址,當(dāng)有當(dāng)前圖像的梯度值輸入時(shí),雙口RAM中相應(yīng)地址內(nèi)的統(tǒng)計(jì)值會(huì)被讀出與遞增計(jì)數(shù)器數(shù)據(jù)進(jìn)行相加,直到輸入的梯度值不是該地址時(shí),會(huì)將此梯度值對(duì)應(yīng)的統(tǒng)計(jì)值緩存到RAM,并進(jìn)行下一個(gè)梯度值的統(tǒng)計(jì)。

圖8 直方圖時(shí)序設(shè)計(jì)圖
直方圖統(tǒng)計(jì)的時(shí)序設(shè)計(jì)圖如圖8所示。對(duì)進(jìn)入直方圖統(tǒng)計(jì)模塊的灰度值數(shù)據(jù)DIN延遲得到DIN_1、DIN_2。在論文中,控制器中會(huì)有一個(gè)遞增計(jì)數(shù)器CNT,遞增計(jì)數(shù)器使能信號(hào)INC_EN拉高的條件是DIN_1與DIN_2相等,使得CNT遞增,用來計(jì)算連續(xù)灰度值的個(gè)數(shù);否則該計(jì)數(shù)器對(duì)應(yīng)的復(fù)位使能信號(hào)RST_CNT拉高,CNT置為1,不再計(jì)數(shù)。對(duì)于涉及到的雙口RAM,B端口的地址address_b為DIN_1,A端口的地址address_a為DIN_2,兩者之間存在時(shí)鐘延遲是為了讓B口讀出的統(tǒng)計(jì)值q_b剛好與A口地址對(duì)應(yīng)的遞增計(jì)數(shù)器CNT對(duì)齊。A端口的寫使能WR_A與B端口的讀使能RD_B拉高的條件是DIN_1與DIN_2數(shù)據(jù)不相等,此時(shí)需要將前一灰度值已統(tǒng)計(jì)好的數(shù)據(jù)CNT_VLE寫入RAM,CNT_VLE為q_b與CNT的和,同時(shí)將當(dāng)前灰度值的統(tǒng)計(jì)值q_b從RAM中讀出,進(jìn)行當(dāng)前灰度值的統(tǒng)計(jì)計(jì)算。例如,當(dāng)DIN為222時(shí),延遲后在DIN_1、DIN_2上分別出現(xiàn)灰度值222,因?yàn)榛叶戎?22與前一灰度值76不相等,需要將前一灰度值76的統(tǒng)計(jì)數(shù)據(jù)CNT_VLE寫入RAM,將上一次灰度值222出現(xiàn)時(shí)已統(tǒng)計(jì)好的數(shù)據(jù)q_b讀出,同時(shí)在INC_EN拉高的控制下q_b與CNT相加,將統(tǒng)計(jì)值CNT_VLE從38變到42。

圖9 最大類間方差實(shí)現(xiàn)圖
直方圖統(tǒng)計(jì)完成后,每一個(gè)灰度級(jí)所對(duì)應(yīng)的統(tǒng)計(jì)值N(i)就存儲(chǔ)在雙口RAM中對(duì)應(yīng)的地址中,背景和目標(biāo)之間的最大類間方差需要使用這些統(tǒng)計(jì)值進(jìn)行計(jì)算。在類間方差計(jì)算時(shí),按照地址從0~255的順序?qū)⑻荻鹊慕y(tǒng)計(jì)值讀出,將梯度值與梯度值的統(tǒng)計(jì)值進(jìn)行對(duì)齊,方便兩者的相乘運(yùn)算。圖9為OTSU算法的公式(7)的計(jì)算框圖。為了在FPGA中實(shí)現(xiàn)OTSU算法過程中省去兩個(gè)除法器,此處去掉公式(7)右半部分的除數(shù)N×N,這樣處理不會(huì)影響類間方差之間的比較,節(jié)約了資源。圖10為OTSU計(jì)算閾值仿真圖。

圖10 OTSU閾值仿真圖
如圖11所示為在FPGA芯片上實(shí)現(xiàn)的未進(jìn)行高斯濾波的SOEBL算法、進(jìn)行高斯濾波后的不同閾值下的SOBEL算法、濾波后SOBEL和OTSU算法結(jié)合、濾波后的SOBEL和NMS算法結(jié)合、綜合GAUSS-filter、SOBEL、NMS、OTSU算法后的圖像邊緣檢測(cè)比較結(jié)果。

(a)實(shí)際拍攝的人物圖片處理效果

(b)實(shí)際拍攝的物體結(jié)構(gòu)圖片處理效果

(c)麗達(dá)圖片處理效果
圖11(a)是對(duì)實(shí)際拍攝的人物圖片處理的效果;圖11(b)是對(duì)實(shí)際拍攝的物體結(jié)構(gòu)圖片處理的效果;圖11(c)是對(duì)畫面層次豐富的麗達(dá)圖片處理的效果。其中A圖為原始灰度圖;B圖為未進(jìn)行高斯濾波的SOEBL算法邊緣檢測(cè)效果圖,因?yàn)槲催M(jìn)行高斯濾波,所以有很多噪聲存在圖像中;C圖、D圖、E圖為只用SOBEL算法實(shí)現(xiàn)的不同閾值下的邊緣檢測(cè)效果,其中C圖是因?yàn)殚撝颠^小,導(dǎo)致過多非圖像邊緣信息顯示出來的效果;D圖為閾值過大,圖像邊緣不能全部顯示的效果,輪廓不連續(xù);E圖是經(jīng)過多次實(shí)驗(yàn)找出的恰當(dāng)閾值下所顯示圖像邊緣。由此可見,單一的SOBEL算法需要反復(fù)測(cè)試來確定一個(gè)恰當(dāng)?shù)拈撝担也煌膱D像需要不同的閾值,不便于對(duì)圖像邊緣的快速檢測(cè)。F圖為SOBEL和OTSU算法結(jié)合的圖像邊緣檢測(cè)效果,克服了多次尋找閾值的缺點(diǎn);G圖為SOEBL算子與NMS算法的結(jié)合,將E圖像邊緣進(jìn)行細(xì)化,但對(duì)圖像缺少自適應(yīng)性;H圖為綜合GAUSS-filter、SOBEL、NMS、OTSU算法后的圖像邊緣檢測(cè)結(jié)果。比較圖11中的3組圖片的邊緣檢測(cè)效果可得,綜合應(yīng)用4種算法的H圖不僅能夠畫出圖像邊緣,而且還能對(duì)邊緣進(jìn)行細(xì)化,對(duì)不同圖像都有好的邊緣檢測(cè)效果。

表3 運(yùn)行時(shí)間對(duì)比
經(jīng)過多次實(shí)驗(yàn),得出論文中使用FPGA實(shí)現(xiàn)邊緣檢測(cè)的效果與軟件實(shí)現(xiàn)效果差別不大,但是在實(shí)現(xiàn)時(shí)間上兩者有較大差別。表3是圖像處理軟、硬件運(yùn)行的平均時(shí)間比較,從表3看出,使用FPGA實(shí)現(xiàn)邊緣檢測(cè)比軟件實(shí)現(xiàn)時(shí)間少很多。
文中提到的硬件實(shí)現(xiàn),是FPGA設(shè)計(jì)軟件上的功能驗(yàn)證,將圖像處理過程在硬件仿真工具modelsim上實(shí)現(xiàn);提取txt文件,然后在軟件工作環(huán)境QT上進(jìn)行圖像處理效果比較。
FPGA硬件實(shí)現(xiàn)時(shí)間僅與工作時(shí)鐘頻率有關(guān)。文中軟件實(shí)現(xiàn)與硬件實(shí)現(xiàn)速度的比較是指圖像處理過程分別在硬件仿真工具modelsim上運(yùn)行和在軟件工作環(huán)境QT運(yùn)行時(shí)間的比較。
在實(shí)驗(yàn)中我們使用的PC機(jī)配置參數(shù)為:64位 win7操作系統(tǒng),運(yùn)行內(nèi)存為6 G,主頻為2.7 GHz。FPGA的晶振為200 MHz,其中圖像工作頻率為40 MHz。
在FPGA上綜合應(yīng)用GAUSS-filter、SOBEL、NMS、OTSU等多種算法,進(jìn)行圖像邊緣檢測(cè)。將原始采集到的彩色圖像轉(zhuǎn)換成灰度圖像,先對(duì)圖像進(jìn)行高斯平滑處理,消除干擾性噪聲;應(yīng)用SOBEL算法計(jì)算圖像梯度值,再應(yīng)用NMS算法處理灰度,挑出輪廓邊緣梯度值最大的灰度像素集合,最后應(yīng)用OTSU算法自適應(yīng)地確定圖像門限閾值進(jìn)行邊緣檢測(cè)。單一SOBEL算法需要人為設(shè)置閾值,閾值容易出現(xiàn)過大或者過小的現(xiàn)象,導(dǎo)致圖像出現(xiàn)假邊緣或者不連續(xù)邊緣;SOBEL和OTSU算法結(jié)合又不能對(duì)圖像進(jìn)行細(xì)化處理。4種算法綜合的檢測(cè)不僅準(zhǔn)確找到圖像邊緣,而且還能對(duì)邊緣進(jìn)行細(xì)化,彌補(bǔ)了兩種邊緣檢測(cè)算法的不足。實(shí)驗(yàn)結(jié)果顯示對(duì)不同的圖像都有很好的檢測(cè)效果。文中所提出的在FPGA上實(shí)現(xiàn)的圖像邊緣檢測(cè)方法具有準(zhǔn)切、實(shí)時(shí)、高速、嵌入式等特點(diǎn),能夠應(yīng)用到許多領(lǐng)域中。