高尚尚,劉海波,郭乃宏,周 鋒,王如剛*
(1.鹽城工學院信息工程學院,江蘇鹽城 224051;2.鹽城雄鷹精密機械有限公司,江蘇鹽城 224006)
近年來,隨著機器視覺技術的迅速發展,使得其在運動分析、智能控制、人機交互等領域有著潛在的應用研究價值。在機器視覺技術中,運動目標檢測問題的研究一直是研究的熱點和難點。目前,運動目標檢測技術主要集中在基于PC 機、DSP 等傳統技術和基于現場可編程門陣列(Field Programmable Gate Array,FPGA)硬件平臺技術等。其中,基于PC機的平臺技術中,由于其體積較大、攜帶不便等缺點,使得該技術不能在如無人機偵查等場合應用。基于DSP 平臺技術中,只能處理某些特定的圖像算法,不能實現實時圖像信息的采集與處理,若利用多個DSP 芯片并行運算實現快速處理,則大大提高了系統的成本[1-3]。由于具有處理速度快、可靠性強等優點,因此,利用FPGA 對實時圖像進行硬件處理逐漸成為發展趨勢。所以,研究人員做了大量基于FPGA 相關的研究工作,并取得了較好的研究進展[3-11]。如,2019 年,陳磊等[5]提出一種采用多個方向模板和閾值自適應相結合的Sobel 邊緣檢測算法,利用FPGA 并行流水的特性將該算法在FPGA硬件平臺上加速實現。2020 年,李文方等[7]設計了FPGA 作為主控芯片,使用串口通信將MATLAB 處理轉換的圖像數據傳輸給FPGA 板卡,使用Sobel 算子完成圖像邊緣提取,通過VGA 接口將原圖像和處理后的圖像在顯示器上顯示出來。2020 年,邢凱等[8]在FPGA 開發板上構建了彩色視頻圖像中運動目標檢測跟蹤系統,此系統可在多種分辨率和幀率下對運動目標進行實時檢測跟蹤。2021 年,郭錚等[9]針對視頻圖像處理技術對于實時性要求的提高,提出了一種以FPGA 芯片為核心處理器,融合幀間差分和邊緣檢測的高清視頻目標快速檢測方法。通過研究人員的不斷努力,機器視覺技術中圖像處理的實時性、準確性得到了較大幅度的提高。但是,隨著人工智能、智能控制技術的不斷發展,高分辨率圖像信號的實時處理難度越來越大,精度要求也越來越高,為了解決跟蹤系統中存在的精確度低、實時性差、性價比低等問題。本文在現有研究的基礎上,研究改進了Sobel 邊緣檢測方法,提出了一種自適應閾值的邊緣檢測算法,利用FPGA 并行處理的特點實現圖像信息的實時檢測,采用HDMI 進行實時顯示。
Sobel 邊緣檢測算子的檢測原理是利用水平和垂直方向上的模板算子與待測圖像進行卷積,計算出水平和垂直方向上的幅值,最后合成梯度值。根據預先給定的閾值進行待測圖像分割,以便獲得待測圖像的邊緣信息,如果待測圖像函數為f(x,y),則其梯度可以表示為[12]:
式中:Gx、Gy分別表示水平和垂直方向的梯度,梯度方向指向函數最大變化率方向,其向量的方向角和幅值可以用式(2)表示:
從Sobel 邊緣檢測方法可以看出,傳統的Sobel算子僅對水平和垂直方向上的模板算子進行梯度計算,若待測圖像的像素點在其他方向上的幅值比較高,而水平和垂直方向合成的梯度幅值比較低,那么此像素點將不會被判別為邊緣點,這將導致待測圖像的邊緣點檢測不準確。因此,為了提高待測圖像邊緣信息的準確度,在傳統Sobel 算子的基礎上增加45°和135°方向上的算子,該方法采用局部3×3模板算子和待測圖像進行卷積計算獲得梯度,改進的Sobel 算子模型如圖1 所示,梯度計算方程可以用式(3)表示:

圖1 改進的Sobel 算子模型
從圖1 可以看出,改進的Sobel 算子模型是將待測圖像進行八個方向上的模板算子與待測圖像進行卷積,然后對合成梯度值進行檢測。由于改進的算法引入了更多的梯度計算模板,因此可以獲得更加全面的邊緣信息。
由于燈光、太陽光甚至是工作人員在檢測過程中的走動等諸多外部因素的影響,都會對所檢測目標的灰度造成一定的干擾,很大可能丟失了待測圖像的部分數據。為了能夠解決外部因素所帶來的影響,邊緣檢測閾值必須隨著外部因素的變化而發生變化。本文將一幀圖像分割成若干個3×3 矩陣的像素窗口,把均值作為邊緣檢測的閾值,實現閾值隨著灰度級的變化而變化,自適應閾值的獲取可以用圖2 表示,獲取均值過程的流程可以表示為:①通過兩個行緩存來進行延遲,得到滑動的3×3 窗口模板;②每行通過3 個D 觸發器進行延遲,可以使3×3滑動模板中的9 個數據同時輸出;③對得到的9 個數據通過加法器求出SUM;④把求的SUM 利用除法器得到均值AVG,即所求AVG 作為自適應閾值。

圖2 獲取均值方法示意圖
為了最大程度地去除噪聲,保留原有邊界,采用雙閾值來判斷是否為邊緣。雙閾值判斷圖像邊緣的方法可以用式(4)表示。當中心像素的梯度幅值大于自適應閾值,則輸出1;當中心像素的梯度幅值小于自適應閾值的一半,則輸出0;當中心點像素的梯度幅值在自適應閾值的一半和自適應閾值之間,則需要看前一個中心像素點是否為邊緣,若是,則輸出1,反之,輸出0。
實驗裝置系統設計框圖如圖3 所示,實驗裝置采用的是Xilinx 公司的Artix7 系列以XC7A35T-2FGG484I 芯片為核心的開發板,開發環境為Vivado Design Suite,硬件描述語言為Verilog HDL。從圖中可以看出,實驗系統主要包括圖像傳感器單元、圖像檢測單元、圖像緩存單元以及圖像顯示單元。圖像傳感器單元中的傳感器使用的是OV5640 攝像頭。在設計過程中,采用串行控制總線協議(Serial Camera Control Bus SCCB)對圖像傳感器進行控制,待測圖像的分辨率是通過SCCB 修改攝像頭的寄存器地址來實現的。圖像緩存單元的緩存組件主要分為輸入及輸出的先進先出(FIFO)模塊和第3 代雙倍數據率同步動態隨機存取存儲器(DDR3 SDRAM)緩存模塊,將DDR3 緩存模塊作為外部數據緩存模塊。由于圖像數據在FPGA 與DDR3 傳輸過程中,將會產生跨時鐘的問題,因此本系統設計了讀寫FIFO 模塊。本文使用的芯片包含DDR3 內存控制器(MCB)硬核,因此,我們將調用存儲器接口生成器(MIG)知識產權核IP 核去控制MCB 硬核,可以更加方便地管理DDR3 存儲器。圖像輸出顯示單元顯示經過邊緣檢測的待測圖像,該單元由FPGA 外部圖形陣列顯示器、接口電路以及FPGA內部的驅動模塊組成,在設計過程中,用Verilog HDL 正確描述行時序和場時序,可以完成實時圖像信號顯示。

圖3 系統框圖
在FPGA 硬件平臺上進行所設計的算法實現時,按照平臺的資源合理規劃圖像傳輸通道和處理的過程,設計的算法處理模塊可以同時進行相應的處理。實現待測圖像的邊緣檢測,需要對待測圖像進行數據格式轉換、濾波、二值化、形態學處理等技術處理,再利用HDL 重新進行數據的組織和處理行為的描述,實現實時處理的目的。
2.2.1 圖像數據格式轉換
由于圖像傳感器采集到的信號是彩色圖像信號,信息量比較大,因此,必須將彩色待測圖像流分成灰度和彩色兩個數據流,灰度圖像流用于目標檢測,彩色圖像流用于跟蹤顯示。為了減少計算量以及便于后續算法的實現,設計了格式轉換算法,實現彩色圖到灰度圖的變換,將圖像從24 位真彩色圖像(RGB888)轉換成8 位的灰度圖像。為了避免實現浮點運算和資源消耗,采用的轉換方法可以用式(5)表示為[13]:
式中:R、G、B分別表示為紅、綠、藍信號,Y、Cb、Cr分別表示為YUV 中的亮度、色調以及飽和度,實現待測圖像格式轉換過程需要將式(5)中的Y、Cb、Cr右移8 位,舍棄信號中的Cb、Cr分量,保留Y信號分量,得到8 比特灰度圖像。
2.2.2 灰度圖像濾波處理
為了有效地降低噪聲,需要對圖像進行濾波處理,該部分選取3×3 的卷積核做中值濾波處理,在3×3 窗口圖像數據中獲取中值[14-15]。在邏輯設計過程中,采用兩個行緩存來暫存前兩行數據,使用3×3 窗口獲取鄰域中的9 個像素。其排序比較算法的核心過程如圖4 所示:①對每行的3 個像素進行排序,得到最大值(MAX)、中值(MID)、最小值(MID);②比較3 行中每行的最大值,獲取3 個最大值中的最小值(MAX_MIN);③比較3 行中每行的最小值,獲取3 個最小值中的最大值(MIN_MAX);④比較3 行中每行的中值,獲取3 個中值中的中間值(MID_MID);⑤將②③④獲取的值送入下一級的比較器,獲取中值(mid_mid)。

圖4 獲取3×3 窗口中值
2.2.3 形態學處理
二值圖中將會包含一定的椒鹽噪聲,該噪聲將影響待測圖像檢測的準確度,因此,必須對二值圖進行形態學運算[16-17],本文采用開運算(先腐蝕處理然后膨脹處理)來消除椒鹽噪聲,形態學處理模塊按照流水線處理方式進行。開運算用到3×3 的濾波模板,先進行腐蝕操作,把3×3 濾波模板遍歷整個圖像做與運算,即當被測目標的前景完全與模板相交,則輸出1,腐蝕方程可以用式(6)表示為:
進行膨脹運算時,把3×3 濾波模板遍歷整個圖像做或運算,即當被測目標的前景只要與模板相交,則輸出1,膨脹方程可以用式(7)表示為:
在FPGA 上實現腐蝕或膨脹處理時,使用3×3模板窗口,同時獲取三行數據,利用FPGA 硬件平臺中的塊RAM 緩存兩行的數據,當第三行數據傳輸過來時,同時獲取塊RAM 里緩存的上兩行數據,進行3×3 窗口的形態學處理。在實現算法設計時,為提高運算速度,腐蝕和膨脹也是全部采取兩級流水的方式來實現:首先,第一級流水將3×3 模板每一行的3 個二值數進行“與”運算;然后,第二級則把第一級“與”運算后的3 個結果再進行“與”運算,由此通過兩個時鐘的處理便可得到腐蝕的結果。
實驗是在Vivado 2019.2 開發環境上展開的,FPGA 主時鐘為50 MHz,圖像的分辨率為1 024×768,并使用Verilog HDL 編寫代碼,同時編譯以及下載燒錄到開發板里,實現圖像的采集、多方向自適應閾值邊緣檢測算法以及形態學操作算法。為了分析復雜環境下檢測的效果,選取了邊緣信息比較多的裁切機系統,利用傳統和改進Sobel 邊緣檢測算子對待測圖像進行檢測,檢測結果如圖5 所示,從圖中可以看出,利用八方向改進Sobel 邊緣檢測算法可以更準確地定位邊緣點且圖像信息更加完整,邊緣圖像明顯更加立體。

圖5 改進邊緣檢測效果圖
為了分析設計的自適應閾值檢測方法,在增加光照條件情況下,設定固定閾值和采用自適應閾值的方法對待測圖像進行了邊緣檢測,檢測結果如圖6所示,圖6(b)是采用固定閾值獲得的檢測結果,與圖5(c)做比較,在沒有光線的干擾下,改進后的固定閾值可以很大程度上反映出圖像的邊緣信息,而使用同樣的算法,在光線的干擾下,從圖6(b)中可以看出,檢測目標受到了光線的干擾,不能真實地反映待測圖像的邊緣信息,特別是原始圖像中“雄鷹機械”標識沒有檢測出來;圖6(c)是在沒有增加開操作運算的自適應閾值檢測結果,可以看出自適應閾值的方法能使更多的邊緣信息檢測出來,對光線的抗干擾能力也比較強。但是,由于閾值本身在不斷地變化,造成了一些椒鹽噪聲;圖6(d)是增加開操作運算的自適應閾值檢測結果,從圖中可以很明顯地看出,消除了大量的噪聲干擾,改善了邊緣檢測后圖片的質量,能夠更靈活地適應自然環境的變化。

圖6 自適應邊緣檢測開操作效果圖
針對傳統的Sobel 算子邊緣定位不夠精確,不能根據外界環境變化實現自動實時檢測等問題,提出一種基于自適應閾值邊緣檢測系統,采用8 個方向的Sobel 算子分離出圖像的邊緣信息,把均值作為邊緣檢測的自適應閾值,實現了閾值隨著灰度級變化的自適應閾值檢測。設計了基于FPGA 的圖像檢測系統,完成了實時圖像數據的采集、檢測及顯示等功能,實現了復雜圖像信息的自適應閾值Sobel邊緣檢測。實驗結果顯示,該方法可以準確地檢測到圖像的邊緣信息,使圖像表面更加光滑,邊緣信息更加準確,并且能夠不受光線的影響,實時地檢測出圖像的邊緣。