彭雙平
(中國(guó)船舶集團(tuán)有限公司第七一〇研究所 宜昌 443003)
圖像邊緣檢測(cè)是進(jìn)行圖像處理的一種方法。圖像邊緣檢測(cè)常常用于人臉識(shí)別、醫(yī)療圖像、車(chē)牌檢測(cè)和工業(yè)檢測(cè)等實(shí)際問(wèn)題。邊緣檢測(cè)還在圖像去噪、生物圖像、紅外圖像、無(wú)人機(jī)圖像、遙感圖像處理中發(fā)揮著重要的作用[1~6]。現(xiàn)在圖像邊緣檢測(cè)在各種軟件環(huán)境下已經(jīng)十分成熟[7~9]。但仍有很多技術(shù)難關(guān)需要突破,例如:圖像邊緣檢測(cè)的實(shí)時(shí)性、邊緣化處理、可移植性[10~12]。而這些技術(shù)難關(guān)可以聯(lián)合FPGA 和Simulink 來(lái)進(jìn)行技術(shù)突破。Xilinx 公司為了方便FPGA 開(kāi)發(fā)推出System generator。System generator 將一些硬件模塊融入到Simulink的庫(kù)工具中,這樣用戶(hù)可以在Simulink 中進(jìn)行算法的設(shè)計(jì)與實(shí)現(xiàn),并且可以直接生成HDL 文件,或者生成網(wǎng)表,后期在Vivado 調(diào)用,可以直接生成比特流文件。這樣可以大大提高FPGA 開(kāi)發(fā)速度,將開(kāi)發(fā)人員從枯燥的底層硬件開(kāi)發(fā)中解放出來(lái),可以專(zhuān)心放在算法設(shè)計(jì)與實(shí)現(xiàn)上。而FPGA 具有高并發(fā)性、功耗低等優(yōu)點(diǎn)[13~15],還可以將算法移植到邊緣計(jì)算中去[16],這樣又極大地推動(dòng)了算法的落地。
邊緣檢測(cè)算法是計(jì)算機(jī)視覺(jué)常用來(lái)做圖像處理的方法之一。邊緣檢測(cè)算法可以提取到圖像中關(guān)鍵的邊緣信息。圖像的邊緣信息是指圖像中存在跳變的像素點(diǎn)集合。在現(xiàn)實(shí)應(yīng)用中,最常見(jiàn)的邊緣類(lèi)型是臺(tái)階型、斜坡型和屋頂型。臺(tái)階型邊緣的像素值變化容易檢測(cè)。斜坡型的檢測(cè)與梯度有很大的關(guān)系。屋頂型的點(diǎn)常常與噪點(diǎn)混淆,這種邊緣增加了我們邊緣檢測(cè)的難度。如圖1 為三種邊緣的數(shù)學(xué)模型。按照其數(shù)學(xué)特性,我們可以借助微分來(lái)進(jìn)行邊緣檢測(cè)。由此,借助一階導(dǎo)數(shù)與二階零點(diǎn)是確定圖像邊緣的關(guān)鍵。

圖1 三種邊緣的數(shù)學(xué)模型及導(dǎo)數(shù)
如圖2 為本次Simulink實(shí)現(xiàn)的具體流程,在實(shí)現(xiàn)的過(guò)程中,關(guān)鍵為進(jìn)行問(wèn)題分析,將現(xiàn)實(shí)中的問(wèn)題數(shù)學(xué)化,轉(zhuǎn)化為算法。算法設(shè)計(jì)的優(yōu)劣決定了Simulink實(shí)現(xiàn)算法的效果。

圖2 Simulink實(shí)現(xiàn)流程

圖3 Roberts算子Simulink實(shí)現(xiàn)
本文在Simulink 中實(shí)現(xiàn)了Roberts、Prewitt、Sobel、Laplace邊緣檢測(cè)算法和高斯濾波算法。
Roberts 是一種基于局部差分的邊緣檢測(cè)的算子,利用交叉差分的梯度算法計(jì)算,梯度的值就代表邊緣變化的強(qiáng)度。梯度的方向與邊緣的方向正交。
梯度算子的計(jì)算方式:
進(jìn)一步簡(jiǎn)化,梯度算子可簡(jiǎn)化為
圖像離散化可得Roberts算子:
在Simulink的實(shí)現(xiàn)流程如下:
1)將串行數(shù)據(jù)轉(zhuǎn)化為2*2矩陣輸入。
2)進(jìn)行矩陣與算子的卷積計(jì)算。
3)數(shù)據(jù)轉(zhuǎn)化整理。
4)圖像輸出。
Prewitt 與Sobel 都是利用像素點(diǎn)的上下、左右鄰點(diǎn)的灰度差來(lái)進(jìn)行邊緣檢測(cè)。但Sobel算子結(jié)合了高斯平滑,在Prewitt算子的基礎(chǔ)上對(duì)相鄰點(diǎn)卷積計(jì)算增加了權(quán)重的概念,從而實(shí)現(xiàn)圖像銳化并突出邊緣輪廓。如圖4為兩種算子的卷積模板。

圖4 Prewitt與Sobel算子
在Simulink中實(shí)現(xiàn)的流程如下:
1)將數(shù)據(jù)由串行數(shù)據(jù)轉(zhuǎn)化為3*3矩陣輸入。
2)四個(gè)方向并行與對(duì)應(yīng)的卷積因子進(jìn)行卷積運(yùn)算。
3)梯度綜合。
4)閾值對(duì)比。
5)輸出圖像。
如圖5 為Simulink實(shí)現(xiàn)Prewitt 算子總設(shè)計(jì)圖。整個(gè)過(guò)程充分利用并行計(jì)算。原有一個(gè)卷積處理的時(shí)間,在算法設(shè)計(jì)中可以實(shí)現(xiàn)四個(gè)卷積處理。效率整整提高三倍。

圖5 Simulink實(shí)現(xiàn)Prewitt算法總電路圖
Laplace 算子是一種二階微分算子。在計(jì)算的過(guò)程中,利用二階導(dǎo)數(shù)零交叉特性來(lái)進(jìn)行邊緣檢測(cè)。如圖6為L(zhǎng)aplace算子。

圖6 Laplace算子
Laplace在Simulink中實(shí)現(xiàn)的流程如下:
1)將數(shù)據(jù)由一維串行數(shù)據(jù)轉(zhuǎn)化為3*3 矩陣輸入。
2)3*3 矩陣與卷積因子進(jìn)行卷積運(yùn)算。
3)數(shù)據(jù)綜合
4)輸出圖像。
如圖7所示,邏輯運(yùn)算時(shí),使用九路并行運(yùn)算。運(yùn)算速度提高了八倍。

圖7 Laplace算法實(shí)現(xiàn)電路圖
高斯濾波是一種典型的線(xiàn)性平滑濾波算法。采用加權(quán)平均法來(lái)對(duì)圖像的像素點(diǎn)進(jìn)行平滑處理和噪點(diǎn)消除。這個(gè)算法的關(guān)鍵是用加權(quán)平均代替原圖中的像素點(diǎn),各個(gè)方向的平滑程度是相同的。如圖8為高斯濾波的卷積核模型。

圖8 簡(jiǎn)化版高斯核
高斯濾波算法在Simulink的實(shí)現(xiàn)流程如下:
1)圖像數(shù)據(jù)轉(zhuǎn)化為3*3矩陣輸入。
2)與卷積核進(jìn)行邏輯處理。
3)數(shù)據(jù)處理(主要進(jìn)行數(shù)值浮點(diǎn)的對(duì)齊)。
4)數(shù)據(jù)輸出,圖像顯示。
如圖9所示,在進(jìn)行高斯濾波計(jì)算時(shí)可以進(jìn)行三路并行計(jì)算。運(yùn)行速度提高了兩倍。高斯濾波可以有效地消除圖像噪聲。在邊緣檢測(cè)的過(guò)程中,可以根據(jù)需求將其加入其中。

圖9 高斯濾波的Simulink設(shè)計(jì)與實(shí)現(xiàn)圖
算法在Simulink 中設(shè)計(jì)與實(shí)現(xiàn)后,在Matlab 中進(jìn)行仿真驗(yàn)證。如圖10為對(duì)應(yīng)算法的實(shí)現(xiàn)效果圖。

圖10 邊緣檢測(cè)實(shí)現(xiàn)效果圖
對(duì)實(shí)現(xiàn)的算法圖像做進(jìn)一步分析。如表1 為圖像邊緣檢測(cè)算法的效果統(tǒng)計(jì)。由數(shù)據(jù)可知,經(jīng)過(guò)邊緣檢測(cè)處理后,圖像的信息熵有很大的降低,說(shuō)明圖像的不可控因素和隨機(jī)因子有所降低。經(jīng)過(guò)Roberts 邊緣檢測(cè)后,圖像的平均梯度有所降低,根據(jù)實(shí)際效果圖,也可以得出,Roberts 對(duì)圖像的邊緣檢測(cè)是最弱的。Sobel 和Laplace 對(duì)圖像邊緣檢測(cè)的效果極佳,平均梯度是其他方法的三到六倍。Sobel 和Laplace 可以清晰地繪制邊緣輪廓。

表1 圖像邊緣檢測(cè)效果統(tǒng)計(jì)
根據(jù)實(shí)驗(yàn)結(jié)果和參考文獻(xiàn),得出表2 各種邊緣檢測(cè)算子實(shí)現(xiàn)效果比較。

表2 多種算子比較

表3 高斯濾波效果統(tǒng)計(jì)
由圖11 和圖12所示,利用Simulink實(shí)現(xiàn)的高斯濾波算法可以消除椒鹽噪聲帶來(lái)的影響。在進(jìn)行邊緣處理時(shí),為了消除圖像中的噪聲,可以對(duì)圖像先進(jìn)行高斯濾波,在進(jìn)行邊緣檢測(cè)。

圖11 帶有0.02的椒鹽圖像

圖12 高斯濾波
高斯濾波處理后,圖像的平均梯度有很大的降低,說(shuō)明高斯濾波可以將圖像中的噪聲做平滑處理,將噪聲對(duì)圖像的影響降低。
本文使用Simulink實(shí)現(xiàn)了當(dāng)前熱門(mén)的邊緣檢測(cè)算法。對(duì)Roberts、Prewitt、Sobel 和Laplace 等邊緣檢測(cè)算法的Simulink實(shí)現(xiàn)給出了詳細(xì)的實(shí)現(xiàn)流程。為了更好地進(jìn)行邊緣檢測(cè),本文還給出了高斯濾波的Simulink實(shí)現(xiàn)方法和流程。用戶(hù)可根據(jù)實(shí)際情況進(jìn)行選取。本文也驗(yàn)證了Simulink 能夠簡(jiǎn)單快捷地設(shè)計(jì)與實(shí)現(xiàn)算法,并且對(duì)后期應(yīng)用于硬件提供了很大的便利。但本文的算法沒(méi)有在多個(gè)場(chǎng)景進(jìn)行實(shí)證研究,后續(xù)需要聯(lián)合硬件來(lái)實(shí)現(xiàn)真正的邊緣計(jì)算。