文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.02.020
中文引用格式: 李錦明,高文剛,張虎威,等. 自適應(yīng)實時邊緣檢測系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2017,43(2):85-87,91.
英文引用格式: Li Jinming,Gao Wengang,Zhang Huwei,et al. The design of adaptive real-time edge detection system[J].Application of Electronic Technique,2017,43(2):85-87,91.
0 引言
圖像邊緣是圖像像素灰度值有階躍變化的像素集合,反映了圖像灰度的不連續(xù)性,包含了豐富的圖像信息,被廣泛應(yīng)用于圖像識別領(lǐng)域[1]。常用邊緣檢測算子有Roberts、Prewitt、Sobel、Canny等[2],其中Canny算子是基于最優(yōu)化邊緣的檢測方法,具有很高的檢測精度和信噪比。但計算量大、實時性差、需要預(yù)先設(shè)置閾值等弊端制約了其在系統(tǒng)中的應(yīng)用。
為此,利用FPGA的高速并行處理能力和豐富的邏輯資源[3],設(shè)計了一種適應(yīng)性較強的實時邊緣檢測系統(tǒng)。該系統(tǒng)無需預(yù)先設(shè)定閾值,可根據(jù)圖像的幅值梯度直方圖特性[4],自動計算Canny邊緣檢測算法所需的高低閾值,能在不同環(huán)境下完成對圖像的邊緣檢測,具有較強的適應(yīng)能力。
1 邊緣檢測系統(tǒng)結(jié)構(gòu)設(shè)計
自適應(yīng)實時邊緣檢測系統(tǒng)由圖像采集、灰度轉(zhuǎn)換、數(shù)據(jù)緩存、Canny算子邊緣檢測以及VGA顯示控制等模塊組成。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
系統(tǒng)選用Cyclone III系列的EP3C40F484為核心處理器。上電后,圖像采集模塊通過SCCB總線初始化CMOS相機并采集圖像數(shù)據(jù),然后將圖像數(shù)據(jù)轉(zhuǎn)換成灰度圖像以便Canny算子邊緣檢測模塊提取圖像的邊緣信息,而VGA顯示模塊是為了邊緣圖像的實時顯示。同時采用外擴SDRAM的方式來實現(xiàn)對圖像數(shù)據(jù)的跨時域操作。
2 Canny算子自適應(yīng)雙閾值選擇
傳統(tǒng)Canny算子的檢測結(jié)果極易受到外部環(huán)境影響,本文采用一種自適應(yīng)雙閾值選取算法來增強系統(tǒng)的抗干擾能力。
統(tǒng)計非極大值抑制后圖像的梯度直方圖,由梯度直方圖的性質(zhì)可得低閾值位于第一個大波峰和第一個小波峰之間。為了便于閾值選取和硬件實現(xiàn),將梯度直方圖轉(zhuǎn)化為差分直方圖,如式(1)所示:
其中,diff(i)=|NMS(i+1)-NMS(i)|,i=1,2,3,…,NMS(i)是非極大值抑制后的梯度直方圖。然后選擇第一個零點的梯度值作為高閾值,如式(2)所示,低閾值可通過式(3)得到:
其中,Arg表示第一次滿足Diff(i)=0的像素點i的梯度值。
3 自適應(yīng)實時邊緣檢測系統(tǒng)的實現(xiàn)
系統(tǒng)前端搭載CMOS相機OV5620采集圖像。上電后,圖像采集模塊通過SCCB總線對相機進行初始化,然后相機輸出640×480像素大小的圖像數(shù)據(jù)。圖像采集模塊在接收圖像數(shù)據(jù)的同時會根據(jù)像素時鐘、同步信號來確定數(shù)據(jù)的有效位,并將數(shù)據(jù)傳遞到下一模塊進行灰度化處理。系統(tǒng)中采用4.7 kΩ的上拉電阻來解決SCCB接口只能輸出低電平的問題。
灰度轉(zhuǎn)換模塊采用一個乘加器來實現(xiàn)。由于FPGA不擅長浮點數(shù)處理,可先將浮點參數(shù)左移10 bit變?yōu)檎麛?shù)參與計算,接著例化一個乘加器,然后再把輸出結(jié)果右移10 bit得到圖像灰度值,如式(4)所示:
3.1 圖像緩存模塊的實現(xiàn)
系統(tǒng)中采用外擴SDRAM芯片MT48LC8M32(2 M×32 bit×4 bank)作為數(shù)據(jù)緩存器來解決數(shù)據(jù)的跨時域問題[5]。為了充分利用FPGA的并行處理能力和SDRAM的高速讀寫能力,設(shè)計了雙端口(Wr_FIFO和Rd_FIFO)的SDRAM控制器。在SignalTap II中對SDRAM控制器進行功能驗證,仿真結(jié)果表明,所設(shè)計的SDRAM控制器滿足要求。SDRAM控制器仿真波形如圖2所示。
3.2 Canny邊緣檢測模塊的實現(xiàn)
Canny算子是一種面向圖像幅值梯度的邊緣檢測方法。在計算幅值梯度前利用中值濾波代替高斯濾波進行圖像預(yù)處理,不僅能平滑圖像噪聲,而且能更好地保留圖像的細(xì)小邊緣。
3.2.1 幅值梯度計算
圖像中某一像素的幅值梯度是不同方向模板對該像素點鄰域卷積的結(jié)果。可采用水平和垂直2個方向的3×3模板來計算圖像梯度。方向模板如圖3所示。
中心像素點a4的梯度幅值和梯度方向如式(5)所示:
根據(jù)分析,梯度計算模塊可由6個乘加器、2個加法器和1個開方器組成,實現(xiàn)過程如圖4所示。其中一個乘加器包含3個乘法運算和1個加法運算,可直接完成一行像素與對應(yīng)模板的卷積,再調(diào)用一個加法器就可得到某一方向的梯度值,然后結(jié)合兩個方向梯度值和一個開方運算來確定該像素點的幅值梯度值。
3.2.2 非極大值抑制
非極大值抑制就是比較中心像素梯度值與其梯度方向上相鄰像素梯度值的大小。實現(xiàn)時可將梯度方向分為0°、45°、90°和135°四個方向[6],每個方向包含左右各22.5°范圍,梯度方向根據(jù)μ=|Py/Px|的值和tan22.5°≈13/32、tan67.5°≈77/32來確定。梯度方向定義如式(6)所示:
在確定梯度方向之后,判斷中心像素點是否為該梯度方向上的極大值。先利用移位寄存器和鎖存器來獲得3×3鄰域內(nèi)的9個像素梯度值,然后通過選擇器找出與中心像素點在同一梯度方向上的兩個梯度值,最后利用比較器進行大小判斷。如果當(dāng)前像素點的梯度值大于其他兩個梯度值,則該像素點梯度值為極大值,需要參與后續(xù)的雙閾值化處理,否則直接輸出該像素點的梯度值為0。
3.2.3 自適應(yīng)雙閾值處理
根據(jù)所述算法,系統(tǒng)利用梯度直方圖的差分直方圖來自適應(yīng)選擇雙閾值。由于處理的是256灰度級的圖像,需要在FPGA內(nèi)部開辟一個256×16的RAM塊來存儲不同梯度值像素點的個數(shù),并把對應(yīng)的梯度值作為寄存器組RAM的地址。自適應(yīng)雙閾值選擇電路如圖5所示。
當(dāng)接收到開始信號時,寄存器組自動清零,把圖像梯度值Grad送入地址選擇器來選擇相應(yīng)的RAM塊,經(jīng)累加器b對圖像梯度的各個值進行個數(shù)統(tǒng)計后,將結(jié)果寫入原來的RAM塊中,直到一幀圖像統(tǒng)計完成;當(dāng)圖像結(jié)束信號到來時,時鐘保持電路會自動保持256個系統(tǒng)時鐘,累加器a在時鐘驅(qū)動下順序產(chǎn)生寄存器組的地址,并把該地址和下一地址的數(shù)據(jù)分別送入寄存器a和 b中,由差分電路處理后,使用比較器將差分結(jié)果與0進行比較;若結(jié)果為 0 則發(fā)出停止累加信號,此時累加器a的值就是高閾值ThH,同時把ThH右移1位得到低閾值ThL。
自動計算雙閾值后,直接對非極大值抑制后的圖像進行雙閾值分割。首先采用兩個比較器將中心像素點的梯度值Grad(i,j)分別與高低閾值ThH、ThL作比較來確定強弱邊緣。若Grad(i,j)>ThH,則為強邊緣,輸出0xFF;若Grad(i,j)<ThL,不是邊緣點,輸出0;若ThL<Grad(i,j)<ThH,則為弱邊緣,需要結(jié)合強邊緣進行連通域處理。連通域處理是在中心像素點的8連通區(qū)域內(nèi),若有強邊緣像素點的存在,則該像素點將被判定為強邊緣,輸出0xFF,否則輸出為0。雙閾值分割電路如圖6所示。
利用SignalTap II驗證Canny邊緣檢測模塊,仿真結(jié)果如圖7所示。
4 實驗結(jié)果及分析
根據(jù)系統(tǒng)設(shè)計方案,在FPGA上實現(xiàn)了基于自適應(yīng)雙閾值Canny算法的邊緣檢測系統(tǒng)。系統(tǒng)可自適應(yīng)選擇合適閾值,集圖像采集、邊緣提取和實時顯示功能于一體,同時實現(xiàn)了基于傳統(tǒng)Canny算子的邊緣測系統(tǒng)。為了增加實驗的對比性,在實驗室環(huán)境下,固定CMOS相機,分別采用高低閾值與自適應(yīng)閾值進行對比測試,測試結(jié)果如圖8所示。
從圖8中可以看出,在圖像紋理較為復(fù)雜的情況下,對于傳統(tǒng)的Canny邊緣檢測系統(tǒng),當(dāng)閾值設(shè)置過低時,盡管能得到更多的邊緣信息,但虛假邊緣會增加,受噪聲的干擾明顯,檢測結(jié)果偏差較大,如圖8(c)所示;隨著閾值的增高,邊緣檢測能力減弱,將逐漸丟失部分緩變邊緣,降低圖像的信息量,直接表現(xiàn)為植物上很多細(xì)小的斑點沒有被檢測出來,如圖8(d)所示;而所設(shè)計的自適應(yīng)邊緣系統(tǒng)無需手動設(shè)置閾值就能提取較為完整的圖像邊緣,對圖像細(xì)節(jié)和整體輪廓表現(xiàn)較好,如圖8(b)所示,這避免了人為因素對檢測結(jié)果的影響,提高了系統(tǒng)的自適應(yīng)性。
系統(tǒng)最差路徑的最大頻率為113.51 MHz,系統(tǒng)在留有20%余量情況下處理一幀圖像的時間約為3.4 ms,實時性較好。
5 結(jié)論
本文以FPGA為核心設(shè)計并實現(xiàn)了一種實時邊緣檢測系統(tǒng)。系統(tǒng)利用圖像的幅值梯度直方圖信息,可在不同場景下自適應(yīng)選取Canny算子所需的高低閾值,有效解決了Canny算子邊緣檢測中需要手動設(shè)置閾值的弊端。實驗測試結(jié)果表明,自適應(yīng)實時邊緣檢測系統(tǒng)具有精度高、實時性好、抗干擾能力強的優(yōu)點,可廣泛應(yīng)用于視頻監(jiān)控、目標(biāo)跟蹤、醫(yī)療設(shè)備等領(lǐng)域。
參考文獻(xiàn)
[1] 陳娟,陳乾輝,師路歡.圖像跟蹤中的邊緣檢測技術(shù)[J].中國光學(xué)與應(yīng)用光學(xué),2009,2(1):46-53.
[2] 陳彥燕,王元慶.常用邊緣檢測算法的定量比較[J].計算機工程,2008,34(17):202-204.
[3] 李佩斌,黃瑩,趙譽婷.基于DSP+FPGA的嵌入式圖像處理系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2014,37(20):95-98.
[4] 黃河,李慶武,范習(xí)健.采用局部動態(tài)閾值的圖像分割算法[J].光電子技術(shù),2011,31(1):78-80.
[5] 項力領(lǐng),劉智,楊陽,等.單片SDRAM的數(shù)據(jù)讀寫乒乓操作設(shè)計[J].長春理工大學(xué)學(xué)報(自然科學(xué)版),2013(5):140-143.
[6] 李華,朱波.基于FPGA的彩色圖像實時采集系統(tǒng)設(shè)計[J].液晶與顯示,2014,29(2):258-265.
[7] 于建軍,吳志勇.CameraLink在視頻控制系統(tǒng)中的應(yīng)用[J].光機電信息,2011,28(5):42-45.
作者信息:
李錦明,高文剛,張虎威,吳正洋
(中北大學(xué) 電子測試技術(shù)國家重點實驗室,山西 太原030051)