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